diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ba5225d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,22 @@ +.github +.gitignore +.vscode +.devbox +.devcontainer +node_modules +public +resources +tmp +*.md +!content/**/*.md +TESTING.md +Taskfile.yml +devbox.json +devbox.lock +.hugo_build.lock +.htmltest.yml +.htmlvalidate.json +.markdownlint.json + +# Ensure package-lock.json is included for npm ci +!package-lock.json diff --git a/.env.versions b/.env.versions new file mode 100644 index 0000000..25ceae4 --- /dev/null +++ b/.env.versions @@ -0,0 +1,9 @@ +# Tool versions for development and CI/CD +# These versions are used in: +# - devbox.json (pinned versions) +# - Dockerfile (build arguments) +# - .github/workflows/ci.yaml (CI/CD pipeline) + +NODE_VERSION=24.10.0 +GO_VERSION=1.25.1 +HUGO_VERSION=0.151.0 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..ae56f2a --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,79 @@ +name: ci + +on: + push: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Load versions from .env.versions + id: versions + run: | + # Source the versions file + set -a + source .env.versions + set +a + + echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT" + echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT" + echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT" + + echo "Node: ${NODE_VERSION}" + echo "Go: ${GO_VERSION}" + echo "Hugo: ${HUGO_VERSION}" + + - name: Repository meta + id: repository + run: | + registry=${{ github.server_url }} + registry=${registry##http*://} + echo "registry=${registry}" >> "$GITHUB_OUTPUT" + echo "registry=${registry}" + repository="$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')" + echo "repository=${repository}" >> "$GITHUB_OUTPUT" + echo "repository=${repository}" + + - name: Docker meta + uses: docker/metadata-action@v5 + id: docker + with: + images: ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }} + tags: | + type=sha,prefix= + type=ref,event=tag + - + name: Login to registry + uses: docker/login-action@v3 + with: + registry: ${{ steps.repository.outputs.registry }} + username: "${{ secrets.PACKAGES_USER }}" + password: "${{ secrets.PACKAGES_TOKEN }}" + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + buildkitd-flags: '--allow-insecure-entitlement network.host' + driver-opts: network=host + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + push: true + allow: network.host + network: host + tags: ${{ steps.docker.outputs.tags }} + labels: ${{ steps.docker.outputs.labels }} + build-args: | + NODE_VERSION=${{ steps.versions.outputs.node_version }} + GO_VERSION=${{ steps.versions.outputs.go_version }} + HUGO_VERSION=${{ steps.versions.outputs.hugo_version }} diff --git a/.github/workflows/delete-edge.yaml b/.github/workflows/delete-edge.yaml new file mode 100644 index 0000000..d7f6c5d --- /dev/null +++ b/.github/workflows/delete-edge.yaml @@ -0,0 +1,32 @@ +name: delete-edge + +on: + workflow_run: + workflows: [build] + types: + - completed + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Replace Image Version + run: | + sha="${{ github.sha }}" + shortSha="${sha:0:7}" + echo "Setting image version to: edp.buildth.ing/devfw-cicd/website-and-documentation:${shortSha}" + sed -i "s@###IMAGETAG###@edp.buildth.ing/devfw-cicd/website-and-documentation:${shortSha}@g" ./k8s-deployment.yaml + + - name: Delete action + uses: https://edp.buildth.ing/DevFW-CICD/edge-connect-delete-action@main + id: delete + with: + configFile: ./edgeconnectdeployment.yaml + baseUrl: https://hub.apps.edge.platform.mg3.mdb.osc.live + username: ${{ secrets.EDGEXR_PLATFORM_USERNAME }} + password: ${{ secrets.EDGEXR_PLATFORM_PASSWORD }} diff --git a/.github/workflows/deploy-edge.yaml b/.github/workflows/deploy-edge.yaml new file mode 100644 index 0000000..bafe431 --- /dev/null +++ b/.github/workflows/deploy-edge.yaml @@ -0,0 +1,32 @@ +name: deploy-edge + +on: + workflow_run: + workflows: [build] + types: + - completed + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Replace Image Version + run: | + sha="${{ github.sha }}" + shortSha="${sha:0:7}" + echo "Setting image version to: edp.buildth.ing/devfw-cicd/website-and-documentation:${shortSha}" + sed -i "s@###IMAGETAG###@edp.buildth.ing/devfw-cicd/website-and-documentation:${shortSha}@g" ./k8s-deployment.yaml + + - name: Deploy action + uses: https://edp.buildth.ing/DevFW-CICD/edge-connect-deploy-action@main + id: deploy + with: + configFile: ./edgeconnectdeployment.yaml + baseUrl: https://hub.apps.edge.platform.mg3.mdb.osc.live + username: ${{ secrets.EDGEXR_PLATFORM_USERNAME }} + password: ${{ secrets.EDGEXR_PLATFORM_PASSWORD }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..8168687 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,149 @@ +name: release + +on: + push: + tags: + - 'v*.*.*' # Triggert auf Semantic Versioning Tags (v1.0.0, v2.1.3, etc.) + +permissions: + contents: write + packages: write + +jobs: + release: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Load versions from .env.versions + id: versions + run: | + set -a + source .env.versions + set +a + + echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT" + echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT" + echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT" + + echo "Node: ${NODE_VERSION}" + echo "Go: ${GO_VERSION}" + echo "Hugo: ${HUGO_VERSION}" + + - name: Extract version from tag + id: version + run: | + VERSION=${GITHUB_REF#refs/tags/v} + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "Version: ${VERSION}" + + - name: Repository meta + id: repository + run: | + registry=${{ github.server_url }} + registry=${registry##http*://} + echo "registry=${registry}" >> "$GITHUB_OUTPUT" + echo "registry=${registry}" + repository="$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')" + echo "repository=${repository}" >> "$GITHUB_OUTPUT" + echo "repository=${repository}" + + - name: Docker meta + uses: docker/metadata-action@v5 + id: docker + with: + images: ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }} + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=raw,value=latest + + - name: Login to registry + uses: docker/login-action@v3 + with: + registry: ${{ steps.repository.outputs.registry }} + username: "${{ secrets.PACKAGES_USER }}" + password: "${{ secrets.PACKAGES_TOKEN }}" + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + buildkitd-flags: '--allow-insecure-entitlement network.host' + driver-opts: network=host + + - name: Build and push release images + uses: docker/build-push-action@v6 + with: + context: . + push: true + allow: network.host + network: host + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.docker.outputs.tags }} + labels: ${{ steps.docker.outputs.labels }} + build-args: | + NODE_VERSION=${{ steps.versions.outputs.node_version }} + GO_VERSION=${{ steps.versions.outputs.go_version }} + HUGO_VERSION=${{ steps.versions.outputs.hugo_version }} + + - name: Generate changelog + id: changelog + run: | + # Finde vorheriges Tag + PREVIOUS_TAG=$(git describe --abbrev=0 --tags ${GITHUB_REF}^ 2>/dev/null || echo "") + + if [ -z "$PREVIOUS_TAG" ]; then + echo "Erster Release - Changelog von Anfang an" + CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges) + else + echo "Changelog seit ${PREVIOUS_TAG}" + CHANGELOG=$(git log ${PREVIOUS_TAG}..${GITHUB_REF} --pretty=format:"- %s (%h)" --no-merges) + fi + + # Schreibe in Output-Datei (multiline) + { + echo 'changelog<> "$GITHUB_OUTPUT" + + - name: Create Forgejo/Gitea Release + uses: actions/forgejo-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + direction: upload + release-dir: . + title: "Release ${{ steps.version.outputs.version }}" + tag: ${{ github.ref_name }} + token: ${{ secrets.GITHUB_TOKEN }} + release-notes: | + # Release ${{ steps.version.outputs.version }} + + ## Docker Images + + Multi-platform images (linux/amd64, linux/arm64) sind verfügbar: + + ```bash + docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:${{ steps.version.outputs.version }} + docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:latest + ``` + + ## Build Versions + + - Node.js: ${{ steps.versions.outputs.node_version }} + - Go: ${{ steps.versions.outputs.go_version }} + - Hugo: ${{ steps.versions.outputs.hugo_version }} + + ## Changes + + ${{ steps.changelog.outputs.changelog }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..26ff785 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,51 @@ +name: Hugo Site Tests + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: 'latest' + extended: true + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '24' + cache: 'npm' + + - name: Install dependencies + run: | + npm ci + go install github.com/wjdp/htmltest@latest + + - name: Run tests + run: | + npm run test:build + npm run test:markdown + npm run test:html + + - name: Run link checker + run: htmltest + continue-on-error: true + + - name: Upload htmltest results + uses: actions/upload-artifact@v4 + if: always() + with: + name: htmltest-report + path: tmp/.htmltest/ diff --git a/.gitignore b/.gitignore index 3b13a74..67fecf1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,37 @@ +# Hugo .hugo_build.lock -public +public/ +resources/_gen/ -# for npm devcontainer cli -package-lock.json -package.json +# Node.js / NPM +node_modules/ +# Test outputs +tmp/ +.htmltest/ + +# devbox +.devbox/ + +# Task cache +.task/ + +# Generated build data +data/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.htmltest.yml b/.htmltest.yml new file mode 100644 index 0000000..14d9f70 --- /dev/null +++ b/.htmltest.yml @@ -0,0 +1,24 @@ +DirectoryPath: "public" +CheckExternal: true +CheckInternalHash: true +IgnoreURLs: + - "^https://example\\.docsy\\.dev" + - "^https://example\\.com" + - "^http://localhost" + - "^/livereload\\.js" + - "^https://cnoe\\.localtest\\.me" + - "^https://technologyconversations\\.com" + - "^https://developers\\.redhat\\.com" + - "^https://platformengineering\\.org" + - "^https://cnoe\\.io" + - "^https://console\\.otc\\.t-systems\\.com" +IgnoreInternalURLs: + - "/docs-old/" + - "/blog/" + - "/docs/v1/" + - "/docs/architecture/" + - "/docs/documentation/" +IgnoreInternalEmptyHashes: true +IgnoreDirectoryMissingTrailingSlash: true +IgnoreAltMissing: true +CheckDoctype: true diff --git a/.htmlvalidate.json b/.htmlvalidate.json new file mode 100644 index 0000000..be028ca --- /dev/null +++ b/.htmlvalidate.json @@ -0,0 +1,27 @@ +{ + "extends": ["html-validate:recommended"], + "rules": { + "no-inline-style": "off", + "require-sri": "off", + "no-trailing-whitespace": "off", + "void-style": "off", + "wcag/h30": "off", + "wcag/h32": "off", + "wcag/h37": "off", + "no-redundant-role": "off", + "unique-landmark": "off", + "no-multiple-main": "off", + "no-dup-id": "off", + "element-permitted-content": "off", + "attr-quotes": "off", + "empty-heading": "off", + "element-required-content": "off", + "long-title": "off", + "no-raw-characters": "off", + "valid-id": "off", + "doctype-style": "off" + }, + "elements": [ + "html5" + ] +} diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..8c37aec --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,8 @@ +{ + "default": true, + "MD013": false, + "MD033": false, + "MD041": false, + "MD024": { "siblings_only": true }, + "MD025": { "front_matter_title": "" } +} diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 0000000..cf2c9fb --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1,4 @@ +# Ignore v1 documentation (legacy content with pre-existing lint issues) +content/en/docs/v1/** +content/en/blog/** +content/en/docs-old/** diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6212e98 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "peacock.remoteColor": "#61dafb", + "workbench.colorCustomizations": { + "activityBar.activeBackground": "#93e6fc", + "activityBar.background": "#93e6fc", + "activityBar.foreground": "#15202b", + "activityBar.inactiveForeground": "#15202b99", + "activityBarBadge.background": "#fa45d4", + "activityBarBadge.foreground": "#15202b", + "commandCenter.border": "#15202b99", + "sash.hoverBorder": "#93e6fc", + "statusBar.background": "#61dafb", + "statusBar.foreground": "#15202b", + "statusBarItem.hoverBackground": "#2fcefa", + "statusBarItem.remoteBackground": "#61dafb", + "statusBarItem.remoteForeground": "#15202b", + "titleBar.activeBackground": "#61dafb", + "titleBar.activeForeground": "#15202b", + "titleBar.inactiveBackground": "#61dafb99", + "titleBar.inactiveForeground": "#15202b99" + } +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..dd480d0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,69 @@ +# Build arguments for version pinning (matching devbox.json) +ARG NODE_VERSION=24.10.0 +ARG GO_VERSION=1.25.1 +ARG HUGO_VERSION=0.151.0 + +# Build stage - use same versions as local devbox environment +FROM node:${NODE_VERSION}-bookworm AS builder + +# Get target architecture for multi-platform builds +ARG TARGETARCH + +# Install Git (needed for Hugo's enableGitInfo) +RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* + +# Install Go (map TARGETARCH: amd64->amd64, arm64->arm64) +ARG GO_VERSION +RUN wget -q https://go.dev/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz && \ + tar -C /usr/local -xzf go${GO_VERSION}.linux-${TARGETARCH}.tar.gz && \ + rm go${GO_VERSION}.linux-${TARGETARCH}.tar.gz + +ENV PATH="/usr/local/go/bin:${PATH}" +ENV GOPATH="/go" +ENV PATH="${GOPATH}/bin:${PATH}" + +# Install Hugo extended (map TARGETARCH: amd64->amd64, arm64->arm64) +ARG HUGO_VERSION +RUN wget -q https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-${TARGETARCH}.tar.gz && \ + tar -xzf hugo_extended_${HUGO_VERSION}_linux-${TARGETARCH}.tar.gz && \ + mv hugo /usr/local/bin/ && \ + rm hugo_extended_${HUGO_VERSION}_linux-${TARGETARCH}.tar.gz && \ + hugo version + +WORKDIR /src + +# Copy package files and install npm dependencies +COPY package*.json ./ +RUN npm ci + +# Copy all source files +COPY . . + +# Build Hugo site (Git info wird aus dem aktuellen Kontext genommen, nicht aus .git) +# Hugo sucht nach .git, findet es nicht, und überspringt Git-Info automatisch +RUN hugo --gc --minify + +# Runtime stage - nginx to serve static content +FROM nginx:1.27-alpine + +# Copy built site from builder +COPY --from=builder /src/public /usr/share/nginx/html + +# Copy custom nginx config +RUN echo 'server {' > /etc/nginx/conf.d/default.conf && \ + echo ' listen 80;' >> /etc/nginx/conf.d/default.conf && \ + echo ' server_name _;' >> /etc/nginx/conf.d/default.conf && \ + echo ' root /usr/share/nginx/html;' >> /etc/nginx/conf.d/default.conf && \ + echo ' index index.html;' >> /etc/nginx/conf.d/default.conf && \ + echo '' >> /etc/nginx/conf.d/default.conf && \ + echo ' location / {' >> /etc/nginx/conf.d/default.conf && \ + echo ' try_files $uri $uri/ /index.html;' >> /etc/nginx/conf.d/default.conf && \ + echo ' }' >> /etc/nginx/conf.d/default.conf && \ + echo '' >> /etc/nginx/conf.d/default.conf && \ + echo ' gzip on;' >> /etc/nginx/conf.d/default.conf && \ + echo ' gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;' >> /etc/nginx/conf.d/default.conf && \ + echo '}' >> /etc/nginx/conf.d/default.conf + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/README.md b/README.md index 7e55b7a..100ef85 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,33 @@ -# IPCEICIS-DeveloperFramework Documentation +# EDP - Edge Developer Platform -This repo contains business and architectural design and documentation of the DeveloperFramework subproject of IPCEI-CIS. +Documentation for the edgeDeveloperFramework (eDF) project and the resulting Edge Developer Platform (EDP) product suite. -## How to read and contribute to this documentation locally +## Quick Start -The documentation is done in [Hugo-format](https://gohugo.io). +```bash +# Install dependencies +task deps -The repo contains a [Hugo `.devcontainer`-defintion](https://containers.dev/) so that you just have to run locally an IDE which is devcontainer aware, e.g. Visual Studio code. +# Start local development server +task serve -### Installation +# Run tests +task test -To get a locally running documentation editing and presentation environment, follow these steps: +# Build production site +task build +``` -1. open a terminal on your local box -2. clone this repo: `git clone https://bitbucket.telekom-mms.com/scm/ipceicis/ipceicis-developerframework.git ` -3. change to the repo working dir: `cd ipceicis-developerframework` -4. open the repo in an [Devcontainer-aware tool/IDE](https://containers.dev/supporting) (e.g. `code .`) -5. start the `devcontainer` (in VSC it's `F1 + Reopen in Devcontainer`) -6. when the container is up & running just open your browser with `http://localhost:1313/` +## Documentation -If you want to run the devcontainer without VS Code, you can use npn to run it inside a docker container: +* [Developer Guide](doc/README-developer.md) +* [Technical Writer Guide](doc/README-technical-writer.md) +* [Release Notes](doc/RELEASE.md) -1. install Node.js (>= Version 14), npm and the docker engine -2. install the devcontainer cli: `npm install -g @devcontainers/cli` -3. change into the folder of this repo -4. start the devcontainer by running: `devcontainer up --workspace-folder .` -5. find out the IP address of the devconatiner by using `docker ps` and `docker inspect ` -6. when the container is up & running just open your browser with `http://:1313/` +## Project -### Editing +This is a Hugo-based documentation site for the Edge Developer Platform, built as part of the IPCEI-CIS project. -#### Documentation language +**Website:** Access the documentation at the deployed URL or run locally with `task serve` -The documentation is done in [Docsy-Theme](https://www.docsy.dev/). - -So for editing content just goto the `content`-folder and edit content arrording to the [Docsy documentation](https://www.docsy.dev/docs/adding-content/) - -### Commiting - -After having finished a unit of work commit and push. - -## Annex - -### Installation steps illustrated - -When you run the above installation, the outputs could typically look like this: - -#### Steps 4/5 in Visual Studio Code - -##### Reopen in Container - -![vsc-f1](./assets/images/vsc-f1.png) - -##### Hugo server is running and (typically) listens to localhost:1313 - -After some installation time you have: - -![vsc-hugo](./assets/images/vsc-hugo.png) - -#### Steps 6 in a web browser - -![browser](./assets/images/browser.png) +For detailed information, see the documentation in the `doc/` folder. diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..a83b45f --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,225 @@ +version: '3' + +vars: + HUGO_CMD: hugo + NPM_CMD: npm + +tasks: + default: + desc: Show available tasks + cmds: + - task --list + + # Build tasks + build: + desc: Build Hugo site + deps: + - deps:ensure-npm + - build:generate-info + cmds: + - "{{.HUGO_CMD}} --gc --minify" + + build:dev: + desc: Build Hugo site for development + deps: + - deps:ensure-npm + - build:generate-info + cmds: + - "{{.HUGO_CMD}}" + + build:generate-info: + desc: Generate build information (git commit, version, etc.) + sources: + - .git/HEAD + - .git/refs/**/* + generates: + - data/build_info.json + cmds: + - ./scripts/generate-build-info.sh + + serve: + desc: Start Hugo dev server + deps: + - deps:ensure-npm + - build:generate-info + cmds: + - "{{.HUGO_CMD}} server" + + clean: + desc: Clean build artifacts + cmds: + - rm -rf public resources/_gen .hugo_build.lock + + # Test tasks + test: + desc: Run all tests + deps: + - test:build + - test:markdown + - test:html + - likec4:validate + + test:hugo: + desc: Run Hugo-only tests (markdown, HTML, build) + deps: + - test:build + - test:markdown + - test:html + + test:full: + desc: Run all tests including link check (may have errors in legacy content) + deps: + - test:build + - test:markdown + - test:html + - test:links + - likec4:validate + + test:quick: + desc: Run quick tests (without link check) + deps: + - test:build + - test:markdown + - likec4:validate + + test:build: + desc: Test Hugo build + deps: + - deps:ensure-npm + - build:generate-info + cmds: + - "{{.HUGO_CMD}} --gc --minify --logLevel info" + + test:markdown: + desc: Lint markdown files + deps: + - deps:ensure-npm + cmds: + - "{{.NPM_CMD}} run test:markdown" + + test:html: + desc: Validate HTML + deps: + - deps:ensure-npm + cmds: + - "{{.NPM_CMD}} run test:html" + + test:links: + desc: Check links (skips legacy content) + cmds: + - | + # Move legacy dirs outside public temporarily + mkdir -p /tmp/htmltest-backup-$$ + if [ -d "public/docs-old" ]; then mv public/docs-old /tmp/htmltest-backup-$$/; fi + if [ -d "public/blog" ]; then mv public/blog /tmp/htmltest-backup-$$/; fi + if [ -d "public/_print/docs-old" ]; then mv public/_print/docs-old /tmp/htmltest-backup-$$/docs-old-print; fi + + # Run htmltest + htmltest || EXIT_CODE=$? + + # Restore directories + if [ -d "/tmp/htmltest-backup-$$/docs-old" ]; then mv /tmp/htmltest-backup-$$/docs-old public/; fi + if [ -d "/tmp/htmltest-backup-$$/blog" ]; then mv /tmp/htmltest-backup-$$/blog public/; fi + if [ -d "/tmp/htmltest-backup-$$/docs-old-print" ]; then mv /tmp/htmltest-backup-$$/docs-old-print public/_print/docs-old; fi + rm -rf /tmp/htmltest-backup-$$ + + # Exit with the original exit code + exit ${EXIT_CODE:-0} + + # LikeC4 tasks + likec4:generate: + desc: Generate LikeC4 webcomponent (includes all architecture projects) + cmds: + - npx likec4 codegen webcomponent --webcomponent-prefix likec4 --outfile static/js/likec4-webcomponent.js resources/edp-likec4 resources/doc-likec4 + + likec4:validate: + desc: Validate LikeC4 models + cmds: + - echo "Validating EDP architecture models..." + - npx likec4 validate --ignore-layout resources/edp-likec4 + - echo "Validating Documentation platform models..." + - npx likec4 validate --ignore-layout resources/doc-likec4 + - echo "✓ All LikeC4 models validated successfully" + + likec4:validate:layout: + desc: Validate LikeC4 models including layout + cmds: + - echo "Validating EDP architecture models (including layout)..." + - npx likec4 validate resources/edp-likec4 + - echo "Validating Documentation platform models (including layout)..." + - npx likec4 validate resources/doc-likec4 + - echo "✓ All LikeC4 models and layouts validated successfully" + + likec4:update: + desc: Update LikeC4 to latest version + cmds: + - npm update likec4 --prefix resources/edp-likec4 + - npm update likec4 --prefix resources/doc-likec4 + - echo "✓ LikeC4 updated in both projects" + + # Development tasks + deps:ensure-npm: + desc: Ensure npm dependencies are installed + sources: + - package.json + - package-lock.json + generates: + - node_modules/.package-lock.json + cmds: + - "{{.NPM_CMD}} install" + status: + - test -d node_modules + + deps:install: + desc: Install all dependencies + cmds: + - "{{.NPM_CMD}} install" + - "{{.HUGO_CMD}} mod get -u" + - "{{.HUGO_CMD}} mod tidy" + + deps:update: + desc: Update dependencies + cmds: + - devbox update + - "{{.NPM_CMD}} update" + - "{{.HUGO_CMD}} mod get -u" + + # CI/CD + ci: + desc: Run CI pipeline locally + deps: + - test + + build:oci-image: + desc: Build OCI/Docker image with versions from .env.versions + cmds: + - | + set -a + source .env.versions + set +a + echo "Building OCI image with versions:" + echo " NODE_VERSION=${NODE_VERSION}" + echo " GO_VERSION=${GO_VERSION}" + echo " HUGO_VERSION=${HUGO_VERSION}" + docker build --network=host \ + --build-arg NODE_VERSION=${NODE_VERSION} \ + --build-arg GO_VERSION=${GO_VERSION} \ + --build-arg HUGO_VERSION=${HUGO_VERSION} \ + -t ipceicis-developerframework:latest \ + -t ipceicis-developerframework:$(git rev-parse --short HEAD) \ + . + + test:oci-image: + desc: Test the built OCI image + deps: + - build:oci-image + cmds: + - | + echo "Starting container on port 8080..." + docker run -d -p 8080:80 --name hugo-test ipceicis-developerframework:latest + sleep 2 + echo "Testing endpoint..." + curl -f http://localhost:8080 > /dev/null && echo "✓ Container is running and responding" || echo "✗ Container test failed" + echo "Cleaning up..." + docker stop hugo-test + docker rm hugo-test diff --git a/assets/fonts/TeleNeoOffice-Bold.a7bb592b.ttf b/assets/fonts/TeleNeoOffice-Bold.a7bb592b.ttf new file mode 100644 index 0000000..88d13e1 Binary files /dev/null and b/assets/fonts/TeleNeoOffice-Bold.a7bb592b.ttf differ diff --git a/assets/fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf b/assets/fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf new file mode 100644 index 0000000..158ffc8 Binary files /dev/null and b/assets/fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf differ diff --git a/assets/fonts/TeleNeoOffice-Medium.79fb426d.ttf b/assets/fonts/TeleNeoOffice-Medium.79fb426d.ttf new file mode 100644 index 0000000..6ceef93 Binary files /dev/null and b/assets/fonts/TeleNeoOffice-Medium.79fb426d.ttf differ diff --git a/assets/fonts/TeleNeoOffice-Regular.b0a2cff1.ttf b/assets/fonts/TeleNeoOffice-Regular.b0a2cff1.ttf new file mode 100644 index 0000000..672a9b8 Binary files /dev/null and b/assets/fonts/TeleNeoOffice-Regular.b0a2cff1.ttf differ diff --git a/assets/fonts/TeleNeoOffice-Thin.53627df9.ttf b/assets/fonts/TeleNeoOffice-Thin.53627df9.ttf new file mode 100644 index 0000000..edeb0d9 Binary files /dev/null and b/assets/fonts/TeleNeoOffice-Thin.53627df9.ttf differ diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index 2569027..2a9a816 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -1,6 +1,524 @@ /* + * Telekom-inspired Theme Variables + * Based on https://edp.buildth.ing Telekom Design System + */ -Add styles or override variables from the theme here. +// Bootstrap/Docsy Variable Overrides (must be before imports) +$primary: #E20074 !default; +$secondary: #B6B6B6 !default; +$success: #00b367 !default; +$info: #0070ad !default; +$warning: #ffcc00 !default; +$danger: #d52b1e !default; +$dark: #000000 !default; +$light: #f9fafb !default; -*/ +// Link colors +$link-color: #E20074 !default; +$link-hover-color: #C2005E !default; + +// Body +$body-bg: #ffffff !default; +$body-color: #000000 !default; + +// Navbar +$navbar-light-color: #000000 !default; +$navbar-light-hover-color: #E20074 !default; +$navbar-light-active-color: #E20074 !default; + +// Fonts +$font-family-sans-serif: 'TeleNeo', -apple-system, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif !default; +$font-family-base: $font-family-sans-serif !default; + +// Telekom TeleNeo Fonts +@font-face { + font-family: 'TeleNeo'; + src: url('../fonts/TeleNeoOffice-Thin.53627df9.ttf') format('truetype'); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: 'TeleNeo'; + src: url('../fonts/TeleNeoOffice-Regular.b0a2cff1.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'TeleNeo'; + src: url('../fonts/TeleNeoOffice-Medium.79fb426d.ttf') format('truetype'); + font-weight: 500; + font-style: normal; +} + +@font-face { + font-family: 'TeleNeo'; + src: url('../fonts/TeleNeoOffice-Bold.a7bb592b.ttf') format('truetype'); + font-weight: 600; + font-style: normal; +} + +@font-face { + font-family: 'TeleNeo'; + src: url('../fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} + +// Primary Colors - Telekom Magenta +:root { + // Telekom Primary Color (Magenta) + --color-primary: #E20074; + --color-primary-contrast: #ffffff; + --color-primary-dark-1: #C2005E; + --color-primary-dark-2: #A5004D; + --color-primary-dark-3: #87003D; + --color-primary-light-1: #E7338A; + --color-primary-light-2: #EC66A1; + --color-primary-light-3: #F299B8; + --color-primary-light-4: #F7CCCF; + --color-primary-light-5: #FCEFF6; + --color-primary-light-6: #FFF5FA; + + // Secondary Colors + --color-secondary: #B6B6B6; + --color-secondary-dark: #6a7178; + --color-secondary-light: #f9fafb; + + // Semantic Colors + --color-success: #00b367; + --color-warning: #ffcc00; + --color-error: #d52b1e; + --color-info: #0070ad; + + // Text Colors + --color-text: #000000; + --color-text-light: #666666; + --color-text-dark: #000000; + + // Background Colors + --color-body: #ffffff; + --color-card: #F1F1F1; + --color-hover: #F1F1F1; + --color-active: #F1F1F1; + + // Navigation + --color-nav-bg: #ffffff; + --color-nav-text: #000000; + --nav-border-color: #B6B6B6; + + // UI Elements + --color-input-background: #ffffff; + --color-input-border: #cccccc; + --color-input-text: #000000; + --color-box-body: #f2f2f2; + --color-box-header: #e6e6e6; + + // Shadows & Overlays + --color-shadow: rgba(0, 0, 0, 0.15); + --color-overlay-backdrop: rgba(0, 0, 0, 0.5); + + // Font Settings + --font-family-base: 'TeleNeo', -apple-system, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif; + --nav-text-font-weight: 600; +} + +// Apply TeleNeo font globally +body { + font-family: var(--font-family-base); +} + +// Dark Mode Support +@media (prefers-color-scheme: dark) { + :root { + // Primary Colors remain same + --color-primary: #E20074; + --color-primary-contrast: #000000; + + // Dark Mode Adjustments + --color-primary-dark-1: #E7338A; + --color-primary-dark-2: #EC66A1; + --color-primary-light-1: #C2005E; + --color-primary-light-2: #A5004D; + + // Secondary Colors for Dark Mode + --color-secondary: #1c1c1e; + --color-secondary-dark: #4D4D4D; + --color-secondary-light: #0D0D0D; + + // Text Colors + --color-text: #FFFFFF; + --color-text-light: #CCCCCC; + --color-text-dark: #FFFFFF; + + // Background Colors + --color-body: #000000; + --color-card: #1c1c1e; + --color-hover: #1c1c1e; + --color-active: #0D0D0D; + + // Navigation + --color-nav-bg: #000000; + --color-nav-text: #FFFFFF; + + // UI Elements + --color-input-background: #1c1c1e; + --color-input-border: #4D4D4D; + --color-input-text: #FFFFFF; + --color-box-body: #000000; + --color-box-header: #1A1A1A; + + // Semantic Colors for Dark Mode + --color-success: #00A94F; + --color-warning: #FFCC00; + --color-error: #D52B1E; + --color-info: #0070AD; + + // Shadows + --color-shadow: rgba(0, 0, 0, 0.35); + } +} + +// Telekom-inspired Component Styling +.td-navbar { + background-color: var(--color-nav-bg) !important; + border-bottom: 1px solid var(--nav-border-color); + + .navbar-brand, + .nav-link { + color: var(--color-nav-text) !important; + font-weight: var(--nav-text-font-weight); + } + + .nav-link:hover, + .nav-link.active { + color: var(--color-primary) !important; + background: transparent !important; + } +} + +// Primary Buttons - Telekom Magenta +.btn-primary { + background-color: var(--color-primary) !important; + border-color: var(--color-primary) !important; + color: var(--color-primary-contrast) !important; + + &:hover { + background-color: var(--color-primary-dark-1) !important; + border-color: var(--color-primary-dark-1) !important; + } + + &:active, + &:focus { + background-color: var(--color-primary-dark-2) !important; + border-color: var(--color-primary-dark-2) !important; + } +} + +// Links +a { + color: var(--color-primary); + + &:hover { + color: var(--color-primary-dark-1); + } +} + +// Cards with Telekom Style +.card { + background-color: var(--color-card); + border: 1px solid var(--nav-border-color); + + &:hover { + background-color: var(--color-hover); + } +} + +// Active/Selected States - REMOVED harsh black backgrounds +// Now using soft Telekom colors instead + +// Sidebar Navigation +.td-sidebar-nav { + .td-sidebar-link { + &:hover { + background-color: var(--color-primary-light-5) !important; + color: var(--color-primary) !important; + } + + &.active { + background-color: var(--color-primary-light-6); + color: var(--color-primary); + font-weight: 500; + border-left: 3px solid var(--color-primary); + } + } + + // All list items in sidebar + li a { + &:hover { + background-color: var(--color-primary-light-5) !important; + color: var(--color-primary) !important; + } + } +} + +// Main navigation tabs +.td-sidebar { + .td-sidebar-nav__section { + .ul-1 > li > a { + &.active, + &.td-sidebar-link--active { + background-color: var(--color-primary-light-6) !important; + color: var(--color-primary) !important; + font-weight: 500; + border-left: 3px solid var(--color-primary); + } + + &:hover { + background-color: var(--color-primary-light-5) !important; + color: var(--color-primary) !important; + } + } + + // All nested levels + li a:hover { + background-color: var(--color-primary-light-5) !important; + color: var(--color-primary) !important; + } + } +} + +// Top navigation breadcrumb area +.td-sidebar__inner { + .td-sidebar-nav__section-title { + &.active { + background-color: var(--color-primary-light-5) !important; + color: var(--color-primary) !important; + } + } +} + +// Breadcrumb navigation in header +.breadcrumb { + .active { + color: var(--color-primary) !important; + } + + a:hover { + color: var(--color-primary-dark-1) !important; + } +} + +// Remove harsh black backgrounds globally +.active, +.selected { + background-color: var(--color-primary-light-6) !important; + color: var(--color-primary) !important; +} + +// Softer hover states +*:hover { + transition: all 0.2s ease-in-out; +} + +// Override any dark/black hover backgrounds in navigation +nav, .td-sidebar, .td-sidebar-nav { + a:hover, + li:hover > a, + .nav-link:hover { + background-color: var(--color-primary-light-5) !important; + color: var(--color-primary) !important; + } +} + +// Code Blocks +pre, +code { + background-color: var(--color-box-body); + border: 1px solid var(--color-input-border); +} + +// Inline code (backticks in text) +code { + background-color: var(--color-primary-light-6); + color: var(--color-primary-dark-2); + padding: 2px 6px; + border-radius: 3px; + border: 1px solid var(--color-primary-light-3); + font-size: 0.9em; +} + +// Code blocks (fenced code) +pre { + background-color: var(--color-box-body); + border: 1px solid var(--color-input-border); + padding: 1rem; + border-radius: 4px; + + code { + background-color: transparent; + border: none; + padding: 0; + color: inherit; + } +} + +// Tables +table { + thead { + background-color: var(--color-box-header); + } + + tbody tr:hover { + background-color: var(--color-hover); + } +} + +// Alerts/Notifications +.alert-success { + background-color: var(--color-success); + border-color: var(--color-success); +} + +.alert-warning { + background-color: var(--color-warning); + border-color: var(--color-warning); + color: #000000; +} + +.alert-danger { + background-color: var(--color-error); + border-color: var(--color-error); +} + +.alert-info { + background-color: var(--color-info); + border-color: var(--color-info); +} + +// Docsy Homepage Components +.td-cover-block { + background-color: var(--color-primary) !important; + + h1, h2, h3, h4, h5, h6, p { + color: var(--color-primary-contrast) !important; + } +} + +// Lead blocks with primary color background +.td-block--primary, +section[class*="bg-primary"], +section[class*="color-primary"] { + background-color: var(--color-primary) !important; + + * { + color: #FFFFFF !important; + } + + h1, h2, h3, h4, h5, h6, p, a, .lead { + color: #FFFFFF !important; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + } + + // Prevent white background on hover + &:hover, + *:hover { + background-color: transparent !important; + color: #FFFFFF !important; + } + + a:hover { + color: #FFFFFF !important; + text-decoration: underline; + } +} + +.td-box { + background-color: var(--color-card); + border: 1px solid var(--nav-border-color); + + &:hover { + background-color: var(--color-hover); + border-color: var(--color-primary); + } + + &--primary { + background-color: var(--color-primary); + border-color: var(--color-primary); + color: var(--color-primary-contrast); + } + + &--secondary { + background-color: var(--color-secondary); + border-color: var(--color-secondary); + } +} + +// Hero/Cover sections +.td-cover { + background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark-2) 100%); + + .display-1, .display-2, .display-3, .display-4 { + color: var(--color-primary-contrast) !important; + } +} + +// Section backgrounds +.td-section { + &--primary { + background-color: var(--color-primary-light-6); + } + + &--secondary { + background-color: var(--color-secondary-light); + } +} + +// Feature boxes +.td-feature { + border: 1px solid var(--nav-border-color); + background-color: var(--color-card); + + &:hover { + border-color: var(--color-primary); + box-shadow: 0 4px 12px var(--color-shadow); + } +} + +// Feature blocks on homepage (blocks/feature) +.td-box--dark, +.td-box--colored, +section[class*="bg-dark"] .td-box, +section[class*="color-dark"] .td-box { + .h2, .h3, .h4, .h5, h2, h3, h4, h5, p, a { + color: #FFFFFF !important; + } + + &:hover { + background-color: rgba(0, 0, 0, 0.8) !important; + + .h2, .h3, .h4, .h5, h2, h3, h4, h5, p, a { + color: #FFFFFF !important; + } + } +} + +// Ensure text stays visible in dark sections +section[class*="bg-dark"], +section[class*="color-dark"] { + * { + color: #FFFFFF !important; + } + + .td-box, .card { + &:hover { + background-color: rgba(0, 0, 0, 0.8) !important; + + * { + color: #FFFFFF !important; + } + } + } +} diff --git a/content/en/_index.md b/content/en/_index.md index 3112c37..65102fa 100644 --- a/content/en/_index.md +++ b/content/en/_index.md @@ -3,5 +3,84 @@ title: IPCEI-CIS Developer Framework --- {{< blocks/cover title="IPCEI-CIS Developer Framework" image_anchor="top" height="full" >}} - +

+A comprehensive enterprise development platform enabling teams to build, deploy, and operate cloud-native applications with ease. +

+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}} + +{{% blocks/lead color="primary" %}} +The IPCEI-CIS Developer Framework provides everything you need to deliver modern applications at scale. +Built on open standards and battle-tested technologies. +{{% /blocks/lead %}} + +{{% blocks/section color="dark" type="row" %}} + +{{% blocks/feature icon="fa-solid fa-diagram-project" title="Architecture Documentation" url="/docs/architecture/" %}} +Explore the platform's architecture with interactive C4 diagrams. Understand the system design, components, and deployment topology. + +**Dive into the architecture →** +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa-solid fa-book-open" title="Technical Writer Guide" url="/docs/documentation/" %}} +Learn how to contribute to this documentation. Write content, test locally, and understand the CI/CD pipeline. + +**Start documenting →** +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa-solid fa-archive" title="Legacy Documentation (v1)" url="/docs/v1/" %}} +Access the previous version of our documentation including historical project information and early architecture decisions. + +**Browse v1 docs →** +{{% /blocks/feature %}} + +{{% /blocks/section %}} + +{{% blocks/section color="white" %}} + +## What's in the Platform? + +
+
+ +### 🚀 Developer Experience + +* **Backstage Portal** - Self-service platform +* **GitOps Workflows** - Automated deployments +* **Golden Paths** - Best practices built-in + +
+
+ +### 🛠️ Infrastructure as Code + +* **Crossplane** - Cloud resource provisioning +* **ArgoCD** - Declarative GitOps +* **Terraform** - Infrastructure automation + +
+
+ +### 📊 Observability + +* **Prometheus & Grafana** - Metrics & dashboards +* **Loki** - Log aggregation +* **OpenTelemetry** - Distributed tracing + +
+
+ +{{% /blocks/section %}} + +{{% blocks/section color="light" %}} + +## Get Started + +Whether you're a **platform engineer**, **application developer**, or **technicalWriter**, we have resources for you: + +* 📖 Read the [Documentation](/docs/) to understand the platform +* 🏗️ Explore [Platform Components](/docs/components/) and their usage +* ✍️ Learn [How to Document](/docs/DOCUMENTATION-GUIDE/) and contribute +* 🔍 Browse [Legacy Documentation](/docs-old/) for historical context + +{{% /blocks/section %}} diff --git a/content/en/blog/20250401_review.md b/content/en/blog/20250401_review.md new file mode 100644 index 0000000..a5a339d --- /dev/null +++ b/content/en/blog/20250401_review.md @@ -0,0 +1,84 @@ +# Review + +1) 09h35 Marco +business plan +issue: value of software, depreciation +FTE: around 100 overall, 3 full teams of developers +tax discussion + +10h04 Discussions + +2) 10h10 Julius + +3) 10h27 Sebastiano - DevDay bis 10h40 + +schriften bei votes größer - fragen sollten lesbar sein! + +devops is dead .... claim + + +4) Stephan bis 10h55 + +5) christopher 10h58 + +6) robert 11:11 +* app +* devops-pipelines +* edp in osc deployed + +7) michal has nothing to show + +8) evgenii wants to finish -- 11:30 + +9) patrick 11:32 + + +==== + +projekt management meeting + +workshops, externe teams + +customer episodes + +wem was wo prinzipien +| +Rollen, Personas + +weiter die perspektive des nutzers bekommen, inneres verlangen eines developers, mein anspruch an das EDP +(bekommen wir das hin, möchte ic damit arbeiten) + +level 2 erklimmen + +workshops halten + +senioren bekommen + + +level1: source code structure, artefakte builden, revision control, branching model, e.g. pull requesting, tests der software, local debugging +level2: automatisierung des artefakte-builds, versionsmgmt, milestones, tickets, issues, compliances an security +level3: deployment auf stages, feedback pipeline verhalten +level4: feedback app-verhalten (logs, metrics, alerts) + development loop +level5: 3rd level support in production + +level1: coding +source code structure, artefakte builden, revision control, branching model, e.g. pull requesting, tests der software, local debugging + +level2: reaching the outdside world with output +automatisierung des artefakte-builds, versionsmgmt, milestones, tickets, issues, compliances an security + +level3: run the app anywhere +deployment auf stages, feedback pipeline verhalten + +level4: monitoring the app +feedback app-verhalten (logs, metrics, alerts) + development loop + +level5: support +3rd level support in production (or any outer stage) + + +sprint 4 +leveraging säule +eigene app säule +chore säule + diff --git a/content/en/blog/20251027_important_links.md b/content/en/blog/20251027_important_links.md new file mode 100644 index 0000000..b84ce95 --- /dev/null +++ b/content/en/blog/20251027_important_links.md @@ -0,0 +1,6 @@ +--- +title: important links +weight: 20 +--- + +* Gardener login to Edge and orca cluster: IPCEICIS-6222 \ No newline at end of file diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md index 573f01f..cc548da 100644 --- a/content/en/blog/_index.md +++ b/content/en/blog/_index.md @@ -1,5 +1,6 @@ --- title: Blog menu: {main: {weight: 30}} +description: Blog section, in Work (should be more automated content) --- diff --git a/content/en/docs-old/_index.md b/content/en/docs-old/_index.md new file mode 100755 index 0000000..6c53701 --- /dev/null +++ b/content/en/docs-old/_index.md @@ -0,0 +1,23 @@ +--- +title: Legacy Documentation +linkTitle: Docs (Old) +menu: + main: + weight: 50 +weight: 50 +cascade: + - type: docs +--- + +# Legacy Documentation + +This section contains the previous version of the documentation for reference purposes. + +**Note**: This documentation is archived and may be outdated. Please refer to the main [Documentation](../docs/) section for current information. + +## Available Sections + +* [Architecture](architecture/) - System architecture and diagrams +* [Documentation](documentation/) - Meta documentation about the documentation system +* [Platform Overview](platform-overview/) - Overview document +* [v1 (Legacy)](v1/) - Original v1 documentation diff --git a/content/en/docs-old/architecture/_index.md b/content/en/docs-old/architecture/_index.md new file mode 100644 index 0000000..9efb5db --- /dev/null +++ b/content/en/docs-old/architecture/_index.md @@ -0,0 +1,9 @@ +--- +title: "Architecture" +linkTitle: "Architecture" +weight: 3 +description: > + System architecture documentation and interactive diagrams +--- + +This section contains architecture documentation for the IPCEI-CIS Developer Framework, including interactive C4 architecture diagrams. diff --git a/content/en/docs-old/architecture/highlevelarch.md b/content/en/docs-old/architecture/highlevelarch.md new file mode 100644 index 0000000..6f07333 --- /dev/null +++ b/content/en/docs-old/architecture/highlevelarch.md @@ -0,0 +1,79 @@ +--- +title: "High Level Architecture" +linkTitle: "High Level Architecture" +weight: 1 +description: > + Interactive high-level architecture overview of the Enterprise Development Platform +--- + +This document describes the high-level architecture of our Enterprise Development Platform (EDP) system. + +## Interactive Architecture Diagram + +{{< likec4-view view="otc-faas" project="architecture" title="Enterprise Development Platform - OTC FaaS Deployment Architecture" >}} + +{{< alert title="Interactive Diagram" >}} +The diagram above is interactive when viewed in a compatible browser. +You can click on components to explore the architecture details. + +**Note:** The interactive diagram requires the LikeC4 webcomponent to be generated. +See the [setup instructions]({{< ref "/docs-old/architecture/setup" >}}) for details. +{{< /alert >}} + +## Architecture Overview + +The Enterprise Development Platform consists of several key components working together to provide a comprehensive development and deployment environment. + +### Key Components + +1. **OTC Foundry** - Central management and orchestration layer +2. **Per-Tenant EDP** - Isolated development environments for each tenant +3. **FaaS Environment** - Function-as-a-Service deployment targets on Open Telekom Cloud +4. **Cloud Services** - Managed services including databases, storage, and monitoring + +### Deployment Environments + +- **Development Environment** (`*.t09.de`) - For platform team development and testing +- **Production Environment** (`*.buildth.ing`) - For production workloads and tenant services + +## Component Details + +The interactive diagram above shows the relationships between different components and how they interact within the system architecture. You can explore the diagram by clicking on different elements to see more details. + +### Infrastructure Components + +- **Kubernetes Clusters** - Container orchestration using OTC CCE (Cloud Container Engine) +- **ArgoCD** - GitOps continuous deployment and application lifecycle management +- **Forgejo** - Git repository management and CI/CD pipelines +- **Observability Stack** - Monitoring (Prometheus, Grafana), logging (Loki), and alerting + +### Security and Management + +- **Keycloak** - Identity and access management (IAM) +- **OpenBao** - Secrets management (Hashicorp Vault fork) +- **External Secrets Operator** - Kubernetes secrets integration +- **Crossplane** - Infrastructure as Code and cloud resource provisioning + +### Developer Experience + +- **Backstage** - Internal developer portal and service catalog +- **Forgejo Actions** - CI/CD pipeline execution +- **Development Workflows** - GitOps-based inner and outer loop workflows + +## Setup and Maintenance + +To update or modify the architecture diagrams: + +1. Edit the `.c4` files in `resources/edp-likec4/` +2. Regenerate the webcomponent: + + ```bash + cd resources/edp-likec4 + npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-webcomponent.js + ``` + +3. Commit both the model changes and the regenerated JavaScript file + +For more information, see the [LikeC4 Integration Guide]({{< ref "/docs-old/architecture/setup" >}}). diff --git a/content/en/docs-old/architecture/setup.md b/content/en/docs-old/architecture/setup.md new file mode 100644 index 0000000..ef6a948 --- /dev/null +++ b/content/en/docs-old/architecture/setup.md @@ -0,0 +1,297 @@ +--- +title: "LikeC4 Setup Guide" +linkTitle: "Setup" +weight: 10 +description: > + How to set up and use LikeC4 interactive architecture diagrams +--- + +This guide explains how to set up and use LikeC4 interactive architecture diagrams in this documentation. + +## Overview + +LikeC4 enables you to create interactive C4 architecture diagrams as code. The diagrams are defined in `.c4` files and compiled into a web component that can be embedded in any HTML page. + +## Prerequisites + +- Node.js (v18 or later) +- npm or yarn + +## Initial Setup + +### 1. Install Dependencies + +Navigate to the LikeC4 directory and install dependencies: + +```bash +cd resources/edp-likec4 +npm install +``` + +### 2. Generate the Web Component + +Create the web component that Hugo will load: + +```bash +npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-webcomponent.js +``` + +This command: + +- Reads all `.c4` files from `models/` and `views/` +- Generates a single JavaScript file with all architecture views +- Outputs to `static/js/likec4-webcomponent.js` + +### 3. Verify Integration + +The integration should already be configured in: + +- `hugo.toml` - Contains `params.likec4.enable = true` +- `layouts/partials/hooks/head-end.html` - Loads CSS and loader script +- `static/css/likec4-styles.css` - Diagram styling +- `static/js/likec4-loader.js` - Dynamic module loader + +## Directory Structure + +```plaintext +resources/edp-likec4/ +├── models/ # C4 model definitions +│ ├── components/ # Component models +│ ├── containers/ # Container models +│ ├── context/ # System context +│ └── code/ # Code-level workflows +├── views/ # View definitions +│ ├── deployment/ # Deployment views +│ ├── edp/ # EDP views +│ ├── high-level-concept/ # Conceptual views +│ └── dynamic/ # Process flows +├── package.json # Dependencies +└── INTEGRATION.md # Integration docs +``` + +## Using in Documentation + +### Basic Usage + +Add this to any Markdown file: + +```html +
+
+ Your Diagram Title +
+ +
+ Loading architecture diagram... +
+
+``` + +### Available View IDs + +To find available view IDs, search the `.c4` files: + +```bash +cd resources/edp-likec4 +grep -r "view\s\+\w" views/ models/ --include="*.c4" +``` + +Common views: + +- `otc-faas` - OTC FaaS deployment +- `edp` - EDP overview +- `landscape` - Developer landscape +- `edpbuilderworkflow` - Builder workflow +- `keycloak` - Keycloak component + +### With Hugo Alert + +Combine with Docsy alerts for better UX: + +```markdown +
+
+ System Architecture +
+ +
+ Loading... +
+
+ +{{}} +Click on components in the diagram to explore the architecture. +{{}} +``` + +## Workflow for Changes + +### 1. Modify Architecture Models + +Edit the `.c4` files in `resources/edp-likec4/`: + +```bash +# Edit a model +vi resources/edp-likec4/models/containers/argocd.c4 + +# Or edit a view +vi resources/edp-likec4/views/deployment/otc/otc-faas.c4 +``` + +### 2. Preview Changes Locally + +Use the LikeC4 CLI to preview: + +```bash +cd resources/edp-likec4 + +# Start preview server +npx likec4 start + +# Opens browser at http://localhost:5173 +``` + +### 3. Regenerate Web Component + +After making changes: + +```bash +cd resources/edp-likec4 +npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-webcomponent.js +``` + +### 4. Test in Hugo + +Start the Hugo development server: + +```bash +# From repository root +hugo server -D + +# Open http://localhost:1313 +``` + +### 5. Commit Changes + +Commit both the model files and the regenerated web component: + +```bash +git add resources/edp-likec4/ +git add static/js/likec4-webcomponent.js +git commit -m "feat: update architecture diagrams" +``` + +## Advanced Configuration + +### Custom Styling + +Modify `static/css/likec4-styles.css` to customize appearance: + +```css +.likec4-container { + height: 800px; /* Adjust height */ + border-radius: 8px; /* Rounder corners */ +} +``` + +### Multiple Diagrams Per Page + +You can include multiple diagrams on a single page: + +```html + +
+
Deployment View
+ +
Loading...
+
+ + +
+
Component View
+ +
Loading...
+
+``` + +### Disable for Specific Pages + +Add to page front matter: + +```yaml +--- +title: "My Page" +params: + disable_likec4: true +--- +``` + +Then update `layouts/partials/hooks/head-end.html`: + +```html +{{ if and .Site.Params.likec4.enable (not .Params.disable_likec4) }} + +{{ end }} +``` + +## Troubleshooting + +### Diagram Not Loading + +1. **Check browser console** (F12 → Console) +2. **Verify webcomponent exists:** + + ```bash + ls -lh static/js/likec4-webcomponent.js + ``` + +3. **Regenerate if missing:** + + ```bash + cd resources/edp-likec4 + npm install + npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-webcomponent.js + ``` + +### View Not Found + +- Check view ID matches exactly (case-sensitive) +- Search for the view in `.c4` files: + + ```bash + grep -r "view otc-faas" resources/edp-likec4/ + ``` + +### Styling Issues + +- Clear browser cache (Ctrl+Shift+R) +- Check `static/css/likec4-styles.css` is loaded in browser DevTools → Network + +### Build Errors + +If LikeC4 codegen fails: + +```bash +cd resources/edp-likec4 +rm -rf node_modules package-lock.json +npm install +``` + +## Resources + +- [LikeC4 Documentation](https://likec4.dev/) +- [C4 Model](https://c4model.com/) +- [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_Components) +- [Hugo Documentation](https://gohugo.io/documentation/) + +## Migration Notes + +This LikeC4 integration was migrated from the edp-doc repository. This repository (`ipceicis-developerframework`) is now the primary source for architecture models. + +The edp-doc repository can reference these models via git submodule if needed. diff --git a/content/en/docs-old/decisions/0001-pipeline-tools.md b/content/en/docs-old/decisions/0001-pipeline-tools.md new file mode 100644 index 0000000..6b039e9 --- /dev/null +++ b/content/en/docs-old/decisions/0001-pipeline-tools.md @@ -0,0 +1,126 @@ +# CI/CD pipeline tools for composable pipeline + +## Context and Problem Statement + +In order to build a composable pipeline that provides a golden path and reusable components, we need to define the tools that will be used to execute the pipeline. + +ArgoCD is considered set in stone as the tool to manage the deployment of applications. However, the tools to compose and execute the pipeline are still up for debate. + +> Note: The pipeline will use many other tools to perform certain actions such as testing, building, and deploying. This ADR is focused on the tools that will be used to compose and execute the pipeline itself. + +In general, there are 2 decisions to make: + +* What tools should we use to execute the pipeline? +* What tools should we use to compose the pipeline? + +The following use-cases should be considered for this decision: + +* **User who wants to manage their own runners (???)** +* User who only wants to use our golden path +* User who wants to use our golden path and add custom actions +* User who wants to use their own templates and import some of our actions +* User who wants to import an existing GitHub repository with a pipeline + +## Considered Options + +* Argo Workflows + Events +* Argo Workflows + Events + Additional Composition tool +* Forgejo Actions +* Forgejo Actions + Additional Composition tool +* Dagger (as Engine) +* Shuttle (as Engine) + +## Decision Outcome + +TBD + +## Pros and Cons of the Options + +### Argo Workflows + Events + +#### Pro + +* integration with ArgoCD +* ability to trigger additional workflows based on events. +* level of maturity and community support. + +#### Con + +* Ability to self-host runners? +* way how composition for pipelines works (based on Kubernetes CRDs) + * Templates must be available in the cluster where the pipelines are executed, so any imported templates must be applied into the cluster before the pipeline can be executed and cannot simply reference a repository + * This makes it difficult to import existing templates from other repositories when using self-hosted runners + * This also makes it difficult to use our golden path, or at least we will need to provide a way to import our golden path into the cluster + * This also makes the split of every component has its own repo very difficult +* additional UI to manage the pipeline +* Additional complexity + +### Argo Workflows + Events + Additional Composition tool + +#### Pro + +* Composability can be offloaded to another tool + +#### Con + +* All cons of the previous option (except composability) +* Additional complexity by adding another tool + +### Forgejo Actions + +#### Pro + +* tight integration with GitHub Actions providing a familiar interface for developers and a vast catalog of actions to choose from +* ability to compose pipelines without relying on another tool +* Self-hosting of runners possible +* every component can have its own repository and use different tools (e.g. written in go, bash, python etc.) + +#### Con + +* level of maturity - will require additional investments to provide a production-grade system + +### Forgejo Actions + Additional Tool + +#### Pro + +* may be possible to use GitHub actions alongside another tool + +#### Con + +* additional complexity by adding another tool + +### Shuttle + +#### Pro + +* Possibility to clearly define interfaces for pipeline steps +* Relatively simple + +#### Con + +* basically backed by only one company +* **centralized templates**, so no mechanism for composing pipelines from multiple repositories + +### Dagger + +#### Pro + +* Pipeline as code + * if it runs it should run anywhere and produce the "same" / somewhat stable results + * build environments are defined within containers / the dagger config. Dagger is the only dependency one has to install on a machine +* DX is extremely nice, especially if you have to debug (image) builds, also type safety due to the ability to code your build in a strong language +* additional tooling, like trivy, is added to a build pipeline with low effort due to containers and existing plugin/wrappers +* you can create complex test environments similar to test containers and docker compose + +#### Con + +* relies heavily containers, which might not be available some environments (due to policy etc), it also has an effect on reproducibility and verifiability +* as a dev you need to properly understand containers +* dagger engine has to run privileged locally and/or in the cloud which might be a blocker or at least a big pain in the ... + +#### Suggestion Patrick + +* dagger is a heavy weight and might not be as productive in a dev workflow as it seems (setup lsp etc) +* it might be too opinionated to force on teams, especially since it is not near mainstream enough, community might be too small +* it feels like dagger gets you 95% of the way, but the remaining 5% are a real struggle +* if we like it, we should check the popularity in the dev community before further considering as it has a direct impact on teams and their preferences diff --git a/content/en/docs-old/decisions/README.md b/content/en/docs-old/decisions/README.md new file mode 100644 index 0000000..ae4dc5a --- /dev/null +++ b/content/en/docs-old/decisions/README.md @@ -0,0 +1,5 @@ +# ADRs + +Architecture Decision Records (ADRs) are a way to capture the important architectural decisions made during the development of a project. They are a way to document the context, the decision, and the consequences of the decision. They are a way to keep track of the architectural decisions made in a project and to communicate them to the team. + +The [Markdown Architectural Decision Records](https://adr.github.io/madr/) (MADR) format is a simple and easy-to-use format for writing ADRs in Markdown. diff --git a/content/en/docs-old/decisions/_adr-template.md b/content/en/docs-old/decisions/_adr-template.md new file mode 100644 index 0000000..fa87ccc --- /dev/null +++ b/content/en/docs-old/decisions/_adr-template.md @@ -0,0 +1,67 @@ + + +# {short title, representative of solved problem and found solution} + +## Context and Problem Statement + +{Describe the context and problem statement, e.g., in free form using two to three sentences or in the form of an illustrative story. You may want to articulate the problem in form of a question and add links to collaboration boards or issue management systems.} + + +## Decision Drivers + +* {decision driver 1, e.g., a force, facing concern, …} +* {decision driver 2, e.g., a force, facing concern, …} +* … + +## Considered Options + +* {title of option 1} +* {title of option 2} +* {title of option 3} +* … + +## Decision Outcome + +Chosen option: "{title of option 1}", because {justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force {force} | … | comes out best (see below)}. + + +### Consequences + +* Good, because {positive consequence, e.g., improvement of one or more desired qualities, …} +* Bad, because {negative consequence, e.g., compromising one or more desired qualities, …} +* … + + +### Confirmation + +{Describe how the implementation of/compliance with the ADR can/will be confirmed. Are the design that was decided for and its implementation in line with the decision made? E.g., a design/code review or a test with a library such as ArchUnit can help validate this. Not that although we classify this element as optional, it is included in many ADRs.} + + +## Pros and Cons of the Options + +### {title of option 1} + + +{example | description | pointer to more information | …} + +* Good, because {argument a} +* Good, because {argument b} + +* Neutral, because {argument c} +* Bad, because {argument d} +* … + +### {title of other option} + +{example | description | pointer to more information | …} + +* Good, because {argument a} +* Good, because {argument b} +* Neutral, because {argument c} +* Bad, because {argument d} +* … + + +## More Information + +{You might want to provide additional evidence/confidence for the decision outcome here and/or document the team agreement on the decision and/or define when/how this decision the decision should be realized and if/when it should be re-visited. Links to other decisions and resources might appear here as well.} diff --git a/content/en/docs-old/documentation/_index.md b/content/en/docs-old/documentation/_index.md new file mode 100644 index 0000000..d250f29 --- /dev/null +++ b/content/en/docs-old/documentation/_index.md @@ -0,0 +1,43 @@ +--- +title: "Documentation About Documentation" +linkTitle: "Documentation" +weight: 10 +description: > + Learn how to create, maintain, and publish documentation for the developer platform. +--- + +Welcome to the meta-documentation! This section explains how our documentation platform works and guides you through the technicalWriter role. + +## What is a Technical Writer? + +A **Technical Writer** is responsible for creating, maintaining, and publishing the developer platform documentation. This includes: + +- Writing and updating content in Markdown +- Creating architecture diagrams with LikeC4 +- Testing locally before committing +- Following the CI/CD pipeline to production + +## Documentation Platform Architecture + +Our documentation is built on a modern stack: + +- **Hugo** with the **Docsy** theme for static site generation +- **LikeC4** for architecture visualization +- **Taskfile** for local development automation +- **GitHub Actions** for continuous testing +- **Edge deployment** for hosting + +### System Overview + +{{< likec4-view view="overview" project="documentation-platform" >}} + +This high-level view shows all major components of the documentation platform. + +## Getting Started + +Continue to the next sections to learn about: + +1. [Local Development](local-development/) - How to work on documentation locally +2. [Testing](testing/) - Quality assurance processes +3. [CI/CD Pipeline](cicd/) - Automated testing and deployment +4. [Publishing](publishing/) - How documentation reaches production diff --git a/content/en/docs-old/documentation/cicd.md b/content/en/docs-old/documentation/cicd.md new file mode 100644 index 0000000..f79f4fe --- /dev/null +++ b/content/en/docs-old/documentation/cicd.md @@ -0,0 +1,264 @@ +--- +title: "CI/CD Pipeline" +linkTitle: "CI/CD" +weight: 40 +description: > + Automated testing and container build process. +--- + +## Overview + +Our documentation uses a continuous integration and deployment pipeline to ensure quality and automate deployment. + +{{< likec4-view view="cicdPipeline" project="documentation-platform" >}} + +## GitHub Actions Workflow + +The CI/CD pipeline is defined in `.github/workflows/test.yml` and runs on: + +- **Pushes to `main` branch** +- **Pull requests to `main` branch** + +### Workflow Steps + +#### 1. Checkout Code + +```yaml +- uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 +``` + +- Clones repository with full history +- Includes Git submodules (Hugo modules) + +#### 2. Setup Hugo + +```yaml +- name: Setup Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: 'latest' + extended: true +``` + +- Installs Hugo Extended +- Uses latest stable version + +#### 3. Setup Node.js + +```yaml +- name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '24' + cache: 'npm' +``` + +- Installs Node.js v24 +- Caches npm dependencies for faster builds + +#### 4. Install Dependencies + +```bash +npm ci +go install github.com/wjdp/htmltest@latest +``` + +- Installs npm packages (markdownlint, htmlvalidate) +- Installs htmltest for link checking + +#### 5. Run Tests + +```bash +npm run test:build +npm run test:markdown +npm run test:html +``` + +- Validates Hugo build +- Lints Markdown files +- Validates HTML output + +#### 6. Link Checking + +```yaml +- name: Run link checker + run: htmltest + continue-on-error: true +``` + +- Checks all links +- Continues even if links fail (soft requirement) + +#### 7. Upload Results + +```yaml +- name: Upload htmltest results + uses: actions/upload-artifact@v4 + if: always() + with: + name: htmltest-report + path: tmp/.htmltest/ +``` + +- Uploads link check report +- Available for download from GitHub Actions + +## Container Build Process + +After tests pass, a container image is built: + +```bash +task build:oci-image +``` + +### Build Process + +1. **Reads version information** from `.env.versions`: + - `NODE_VERSION` + - `GO_VERSION` + - `HUGO_VERSION` + +2. **Builds Docker image** using `Dockerfile`: + - Multi-stage build + - Hugo generates static site + - Nginx serves the content + +3. **Tags image** with: + - `latest` + - Git commit SHA (short) + +### Dockerfile Structure + +```dockerfile +# Build stage +FROM node:${NODE_VERSION} as builder +# Install Hugo, build dependencies +# Run: hugo --gc --minify +# Output: public/ directory + +# Runtime stage +FROM nginx:alpine +# Copy public/ to /usr/share/nginx/html/ +# Configure Nginx +``` + +### Testing the Container + +```bash +task test:oci-image +``` + +This: + +1. Builds the image +2. Starts container on port 8080 +3. Tests HTTP endpoint +4. Cleans up container + +## Package.json Scripts + +The `package.json` defines test scripts: + +```json +{ + "scripts": { + "test:build": "hugo --gc --minify --logLevel info", + "test:markdown": "markdownlint 'content/**/*.md'", + "test:html": "htmlvalidate 'public/**/*.html'" + } +} +``` + +## Running CI Locally + +Simulate the CI environment locally: + +```bash +task ci +``` + +This runs the same tests as GitHub Actions. + +## Monitoring CI Results + +### Successful Build + +✅ All tests pass → Ready to deploy + +### Failed Build + +❌ Tests fail: + +1. Click on the failed workflow in GitHub Actions +2. Expand the failed step +3. Read the error message +4. Fix locally: `task test:` +5. Commit and push fix + +### Viewing Artifacts + +1. Go to GitHub Actions +2. Click on workflow run +3. Scroll to "Artifacts" section +4. Download `htmltest-report` + +## Best Practices + +1. **Don't push to main directly** - Use feature branches and PRs +2. **Wait for CI before merging** - Green checkmark required +3. **Fix broken builds immediately** - Don't let main stay red +4. **Review CI logs** - Understand why tests fail +5. **Update dependencies** - Keep versions current in `.env.versions` + +## Continuous Deployment + +After successful CI: + +1. Container image is built +2. Image is pushed to registry +3. Deployment process begins (see [Publishing](../publishing/)) + +## Troubleshooting + +### Tests pass locally but fail in CI + +**Possible causes:** + +- Different Hugo version +- Different Node.js version +- Missing dependencies +- Environment-specific issues + +**Solution:** Check versions in `.env.versions` and ensure local matches CI + +### Build timeouts + +**Possible causes:** + +- Link checker taking too long +- Large number of external links + +**Solution:** + +- Use `continue-on-error: true` for link checks +- Configure `.htmltest.yml` to skip slow checks + +### Cache issues + +**Solution:** Clear GitHub Actions cache: + +```yaml +- uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} +``` + +Update the cache key to force refresh. + +## Next Steps + +Learn about [deployment to Edge environment](../publishing/). diff --git a/content/en/docs-old/documentation/local-development.md b/content/en/docs-old/documentation/local-development.md new file mode 100644 index 0000000..c3e7cb6 --- /dev/null +++ b/content/en/docs-old/documentation/local-development.md @@ -0,0 +1,234 @@ +--- +title: "Local Development" +linkTitle: "Local Development" +weight: 20 +description: > + Set up your local environment and learn the technicalWriter workflow. +--- + +## Prerequisites + +Before you start, ensure you have: + +- **Devbox** or the following tools installed: + - Hugo Extended (latest version) + - Node.js (v24+) + - Go (for htmltest) + - Git + +## Installation + +1. Clone the repository: + + ```bash + git clone + cd ipceicis-developerframework + ``` + +2. Install dependencies: + + ```bash + task deps:install + ``` + +3. **If using Devbox**, enter the Devbox shell: + + ```bash + devbox shell + ``` + + This ensures all tools (Hugo, Node.js, Go) are available in the correct versions. + +## Local Development Workflow + +{{< likec4-view view="localDevelopment" project="documentation-platform" >}} + +### Starting the Development Server + +The easiest way to work locally is to start the Hugo development server: + +```bash +task serve +``` + +This will: + +- Generate build information (git commit, version) +- Start Hugo server on `http://localhost:1313` +- Enable hot reload - changes appear instantly in the browser + +### Content Structure + +```text +content/ +└── en/ # English content + ├── _index.md # Homepage + ├── blog/ # Blog posts + └── docs/ # Documentation + ├── architecture/ # Architecture docs + ├── decisions/ # ADRs + └── v1/ # Version-specific docs +``` + +### Creating Content + +1. **Add a new documentation page:** + + ```bash + # Create a new markdown file + vim content/en/docs/your-topic/_index.md + ``` + +2. **Add frontmatter:** + + ```yaml + --- + title: "Your Topic" + linkTitle: "Your Topic" + weight: 10 + description: > + Brief description of your topic. + --- + ``` + +3. **Write your content** in Markdown + +4. **Preview changes** - they appear immediately if `task serve` is running + +### Creating Architecture Diagrams + +Architecture diagrams are created with LikeC4: + +1. **Navigate to the appropriate LikeC4 project:** + - `resources/edp-likec4/` - Platform architecture + - `resources/doc-likec4/` - Documentation platform architecture + +2. **Edit or create `.c4` files** with your model + + Example: Create a simple view in `resources/edp-likec4/views/my-view.c4`: + + ```likec4 + specification { + element myperson + element mysystem + } + + model { + customer = myperson 'Customer' { + description 'End user of the platform' + } + + mySystem = mysystem 'My System' { + description 'Example system component' + } + + customer -> mySystem 'uses' + } + + views { + view myCustomView { + title "My Custom Architecture View" + + include customer + include mySystem + + autoLayout TopBottom + } + } + ``` + +3. **Regenerate webcomponents:** + + ```bash + task likec4:generate + ``` + +4. **Embed diagrams in Markdown:** + + ```markdown + {{}} + ``` + + **Finding available view IDs:** + - Open the `.c4` files in your project directory + - Look for `view {` declarations + - The `` is what you use in the `view` parameter + - Or use: `grep -r "^view " resources/edp-likec4/ --include="*.c4"` + +## Available Tasks + +View all available tasks: + +```bash +task --list +``` + +### Common Development Tasks + +| Task | Description | +|------|-------------| +| `task serve` | Start development server with hot reload | +| `task build` | Build production-ready site | +| `task build:dev` | Build development version | +| `task clean` | Remove build artifacts | +| `task test` | Run all tests | +| `task test:quick` | Run tests without link checking | + +## Quick Testing + +Before committing, run quick tests: + +```bash +task test:quick +``` + +This validates: + +- Hugo build succeeds +- Markdown syntax is correct + +For comprehensive testing, including link checking: + +```bash +task test +``` + +## Tips for Technical Writers + +1. **Write in present tense** - "The system processes..." not "The system will process..." +2. **Use code blocks** with syntax highlighting +3. **Include diagrams** for complex concepts +4. **Test locally** before pushing +5. **Keep it concise** - readers appreciate brevity +6. **Update regularly** - stale docs are worse than no docs + +## Troubleshooting + +### Port 1313 already in use + +```bash +# Find and kill the process +lsof -ti:1313 | xargs kill -9 +``` + +### Build errors + +```bash +# Clean and rebuild +task clean +task build:dev +``` + +### Missing dependencies + +```bash +# Reinstall all dependencies +task deps:install +``` + +## Next Steps + +Now that you can develop locally, learn about: + +- [Testing processes](../testing/) +- [CI/CD pipeline](../cicd/) diff --git a/content/en/docs-old/documentation/publishing.md b/content/en/docs-old/documentation/publishing.md new file mode 100644 index 0000000..1ee53ce --- /dev/null +++ b/content/en/docs-old/documentation/publishing.md @@ -0,0 +1,339 @@ +--- +title: "Publishing to Edge" +linkTitle: "Publishing" +weight: 50 +description: > + How documentation is deployed to the edge environment. +--- + +## Deployment Overview + +After successful CI/CD, the documentation is deployed to an edge computing environment. + +{{< likec4-view view="deploymentFlow" project="documentation-platform" >}} + +## Deployment Architecture + +### Edge Connect Platform + +Our documentation is deployed using **Edge Connect**, which orchestrates deployments to edge cloudlets. + +Configuration: `edgeconnectdeployment.yaml` + +```yaml +kind: edgeconnect-deployment +metadata: + name: "edpdoc" + appVersion: "1.0.0" + organization: "edp2" +spec: + k8sApp: + manifestFile: "./k8s-deployment.yaml" + infraTemplate: + - region: "EU" + cloudletOrg: "TelekomOP" + cloudletName: "Munich" + flavorName: "EU.small" +``` + +**Key settings:** + +- **Deployment name:** `edpdoc` +- **Region:** EU (Munich) +- **Cloudlet:** TelekomOP Munich +- **Flavor:** EU.small (resource allocation) + +### Kubernetes Deployment + +The application runs on Kubernetes: `k8s-deployment.yaml` + +#### Service Definition + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: edpdoc + labels: + run: edpdoc +spec: + type: LoadBalancer + ports: + - name: tcp80 + protocol: TCP + port: 80 + targetPort: 80 + selector: + run: edpdoc +``` + +- **Type:** LoadBalancer (external access) +- **Port:** 80 (HTTP) +- **Selector:** Routes traffic to pods with label `run: edpdoc` + +#### Deployment Configuration + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: edpdoc +spec: + replicas: 1 + selector: + matchLabels: + run: edpdoc + template: + metadata: + labels: + run: edpdoc + mexDeployGen: kubernetes-basic + spec: + containers: + - name: edpdoc + image: ###IMAGETAG### + imagePullPolicy: Always + ports: + - containerPort: 80 + protocol: TCP +``` + +- **Replicas:** 1 (single instance) +- **Image:** Injected by deployment pipeline (`###IMAGETAG###` placeholder) +- **Pull policy:** Always (ensures latest version) + +### Network Configuration + +Outbound connections are configured in `edgeconnectdeployment.yaml`: + +```yaml +network: + outboundConnections: + - protocol: "tcp" + portRangeMin: 80 + portRangeMax: 80 + remoteCIDR: "0.0.0.0/0" + - protocol: "tcp" + portRangeMin: 443 + portRangeMax: 443 + remoteCIDR: "0.0.0.0/0" +``` + +- **Port 80:** HTTP outbound +- **Port 443:** HTTPS outbound +- **CIDR:** `0.0.0.0/0` (all destinations) + +## Deployment Process + +### 1. Container Image Ready + +After CI passes: + +- Docker image built with `task build:oci-image` +- Tagged with git commit SHA +- Pushed to container registry + +### 2. Edge Connect Orchestration + +Edge Connect: + +1. Pulls container image +2. Reads `edgeconnectdeployment.yaml` +3. Provisions resources on Munich cloudlet +4. Applies Kubernetes manifests + +### 3. Kubernetes Deployment + +Kubernetes: + +1. Creates deployment with 1 replica +2. Pulls container image (`imagePullPolicy: Always`) +3. Starts pod running Nginx + static Hugo site +4. Creates LoadBalancer service +5. Assigns external IP + +### 4. Service Available + +Documentation is now accessible: + +- **Protocol:** HTTP +- **Port:** 80 +- **IP:** Assigned by LoadBalancer + +## Complete Workflow + +{{< likec4-view view="fullWorkflow" project="documentation-platform" >}} + +### End-to-End Process + +1. **Technical Writer writes content** (Markdown, LikeC4 models) +2. **Local testing** with `task serve` and `task test` +3. **Commit and push** to Git repository +4. **GitHub Actions triggered** on push to main +5. **CI tests run** (build, markdown, HTML, links) +6. **Container image built** if tests pass +7. **Image pushed** to registry +8. **Edge deployment triggered** +9. **Kubernetes applies** manifests +10. **Service available** on edge cloudlet + +## Monitoring Deployment + +### Check Deployment Status + +```bash +kubectl get deployments -n +kubectl get pods -n +kubectl get services -n +``` + +### View Logs + +```bash +kubectl logs deployment/edpdoc -n +``` + +### Access Documentation + +Find the LoadBalancer external IP: + +```bash +kubectl get service edpdoc -n +``` + +Access via: `http://` + +## Rollback + +If issues occur after deployment: + +### Option 1: Revert Commit + +```bash +git revert +git push origin main +``` + +CI will rebuild and redeploy. + +### Option 2: Manual Rollback + +```bash +kubectl rollout undo deployment/edpdoc -n +``` + +Returns to previous deployment version. + +### Option 3: Deploy Specific Version + +Update image tag in deployment: + +```bash +kubectl set image deployment/edpdoc edpdoc=/: -n +``` + +## Scaling + +Currently: **1 replica** + +To scale for higher traffic: + +```yaml +spec: + replicas: 3 +``` + +Then apply: + +```bash +kubectl apply -f k8s-deployment.yaml +``` + +Or scale dynamically: + +```bash +kubectl scale deployment/edpdoc --replicas=3 -n +``` + +## Security Considerations + +1. **Image scanning** - Scan container images for vulnerabilities +2. **Resource limits** - Set CPU/memory limits in deployment +3. **Network policies** - Restrict pod-to-pod communication +4. **HTTPS** - Consider adding TLS termination (Ingress) + +## Performance Optimization + +1. **CDN** - Add CDN in front of LoadBalancer +2. **Caching** - Configure Nginx caching headers +3. **Compression** - Enable gzip in Nginx +4. **Image optimization** - Compress images in documentation + +## Troubleshooting + +### Pod not starting + +```bash +kubectl describe pod -n +``` + +Check: + +- Image pull errors +- Resource constraints +- Configuration errors + +### Service unreachable + +```bash +kubectl describe service edpdoc -n +``` + +Check: + +- LoadBalancer IP assigned +- Port configuration +- Network policies + +### Old content served + +Check: + +- `imagePullPolicy: Always` in deployment +- Image tag is updated +- Pod has restarted + +Force pod restart: + +```bash +kubectl rollout restart deployment/edpdoc -n +``` + +## Best Practices + +1. **Test before deploying** - Always run `task test` locally +2. **Use feature branches** - Don't deploy directly from local +3. **Monitor after deployment** - Check logs and access +4. **Document changes** - Update RELEASE.md +5. **Version control** - Tag releases in Git + +## Future Enhancements + +Potential improvements: + +- **Blue-green deployment** - Zero-downtime updates +- **Canary releases** - Gradual rollout to subset of users +- **Auto-scaling** - HorizontalPodAutoscaler based on traffic +- **Multi-region** - Deploy to multiple cloudlets +- **HTTPS** - TLS certificates and Ingress controller + +## Summary + +The deployment process is automated and reliable: + +✅ **CI ensures quality** - Tests prevent broken deployments +✅ **Edge infrastructure** - Low-latency access from EU +✅ **Kubernetes orchestration** - Reliable, scalable platform +✅ **Simple rollback** - Easy to recover from issues + +As a technicalWriter, focus on content quality. The platform handles deployment automatically! 🚀 diff --git a/content/en/docs-old/documentation/quick-reference.md b/content/en/docs-old/documentation/quick-reference.md new file mode 100644 index 0000000..cf53c57 --- /dev/null +++ b/content/en/docs-old/documentation/quick-reference.md @@ -0,0 +1,282 @@ +--- +title: "Quick Reference" +linkTitle: "Quick Reference" +weight: 60 +description: > + Cheat sheet for common technicalWriter tasks. +--- + +## Common Commands + +### Local Development + +```bash +# Start development server (with hot reload) +task serve + +# Build for production +task build + +# Build for development (faster, no minification) +task build:dev + +# Clean build artifacts +task clean +``` + +### Testing + +```bash +# Quick tests (build + markdown) +task test:quick + +# Full test suite +task test + +# Individual tests +task test:build # Hugo build validation +task test:markdown # Markdown linting +task test:html # HTML validation +task test:links # Link checking +``` + +### Dependencies + +```bash +# Install dependencies +task deps:install + +# Update dependencies +task deps:update + +# Ensure npm dependencies (auto-installs if missing) +task deps:ensure-npm +``` + +### Container Operations + +```bash +# Build OCI/Docker image +task build:oci-image + +# Build and test container +task test:oci-image +``` + +## File Locations + +### Content + +| Path | Description | +|------|-------------| +| `content/en/docs/` | Main documentation | +| `content/en/blog/` | Blog posts | +| `content/en/_index.md` | Homepage | + +### Architecture Models + +| Path | Description | +|------|-------------| +| `resources/edp-likec4/` | Platform architecture models | +| `resources/doc-likec4/` | Documentation platform models | + +### Configuration + +| File | Purpose | +|------|---------| +| `hugo.toml` | Hugo configuration | +| `config.yaml` | Docsy theme config | +| `Taskfile.yml` | Task definitions | +| `package.json` | npm dependencies and scripts | +| `.markdownlint.json` | Markdown linting rules | +| `.htmlvalidate.json` | HTML validation rules | +| `.htmltest.yml` | Link checker config | + +### Build Output + +| Path | Description | +|------|-------------| +| `public/` | Generated static site | +| `resources/_gen/` | Generated resources (Hugo) | +| `data/build_info.json` | Build metadata (git commit, version) | + +## Markdown Frontmatter + +### Standard Page + +```yaml +--- +title: "Page Title" +linkTitle: "Short Title" +weight: 10 +description: > + Brief description for SEO and navigation. +--- +``` + +### Blog Post + +```yaml +--- +title: "Post Title" +date: 2025-01-15 +author: "Your Name" +description: > + Post summary. +--- +``` + +## Embedding Architecture Diagrams + +### Basic Embed + +```markdown +{{< likec4-view view="view-name" project="project-name" >}} +``` + +### Parameters + +- `view` (required) - The view ID from your LikeC4 model +- `project` (optional, default: "architecture") - The LikeC4 project name +- `title` (optional, default: "Architecture View: {view}") - Custom header text above the diagram + +### Examples + +```markdown +{{< likec4-view view="overview" project="documentation-platform" >}} +{{< likec4-view view="localDevelopment" project="documentation-platform" >}} +{{< likec4-view view="cicdPipeline" project="documentation-platform" >}} +{{< likec4-view view="otc-faas" project="architecture" title="OTC FaaS Deployment" >}} +``` + +## LikeC4 Commands + +### Regenerate Webcomponents + +After modifying `.c4` files: + +```bash +task likec4:generate +``` + +This regenerates both: + +- `static/js/likec4-webcomponent.js` (EDP architecture) +- `static/js/likec4-doc-webcomponent.js` (Documentation platform) + +### Start Development Server + +```bash +cd resources/doc-likec4 # or resources/edp-likec4 +npm install +npm start +``` + +Opens LikeC4 IDE at `http://localhost:5173` + +### Export Diagrams + +```bash +cd resources/doc-likec4 +npx likec4 export png -o ./images . +``` + +## Git Workflow + +### Feature Branch + +```bash +# Create feature branch +git checkout -b feature/your-feature + +# Make changes and test +task serve +task test:quick + +# Commit +git add . +git commit -m "Description of changes" + +# Push +git push origin feature/your-feature + +# Create pull request on GitHub +``` + +### Update from Main + +```bash +git checkout main +git pull origin main +git checkout feature/your-feature +git rebase main +``` + +## Troubleshooting + +### Port 1313 in use + +```bash +lsof -ti:1313 | xargs kill -9 +``` + +### Build errors + +```bash +task clean +task build:dev +``` + +### Missing dependencies + +```bash +task deps:install +``` + +### Hugo module issues + +```bash +hugo mod clean +hugo mod get -u +hugo mod tidy +``` + +### LikeC4 language server + +In VS Code: `Ctrl+Shift+P` → "LikeC4: restart language server" + +## URLs + +### Local Development + +- **Documentation:** +- **LikeC4 IDE:** (when running `npm start` in likec4 folder) + +### Production + +Check `edgeconnectdeployment.yaml` for deployment URL or run: + +```bash +kubectl get service edpdoc -n +``` + +## Quick Checks Before Committing + +1. ✅ `task test:quick` passes +2. ✅ Preview looks correct in browser +3. ✅ No broken links (visual check) +4. ✅ Architecture diagrams render +5. ✅ Frontmatter is correct + +## Getting Help + +- **Hugo docs:** +- **Docsy theme:** +- **LikeC4:** +- **Task:** + +## View Documentation Architecture + +To understand how this documentation platform works: + +→ Start here: [Documentation About Documentation](../) diff --git a/content/en/docs-old/documentation/testing.md b/content/en/docs-old/documentation/testing.md new file mode 100644 index 0000000..bb2be84 --- /dev/null +++ b/content/en/docs-old/documentation/testing.md @@ -0,0 +1,229 @@ +--- +title: "Testing" +linkTitle: "Testing" +weight: 30 +description: > + Quality assurance processes for documentation. +--- + +## Testing Philosophy + +Quality documentation requires testing. Our testing process validates: + +- **Build integrity** - Hugo can generate the site +- **Content quality** - Markdown follows best practices +- **HTML validity** - Generated HTML is well-formed +- **Link integrity** - No broken internal or external links + +## Testing Capabilities + +{{< likec4-view view="testingCapabilities" project="documentation-platform" >}} + +## Local Testing + +Before committing changes, run tests locally: + +### Quick Tests + +For rapid feedback during development: + +```bash +task test:quick +``` + +This runs: + +- `task test:build` - Hugo build validation +- `task test:markdown` - Markdown linting + +### Full Test Suite + +Before creating a pull request: + +```bash +task test +``` + +This runs all tests including: + +- `task test:build` - Build validation +- `task test:markdown` - Markdown linting +- `task test:html` - HTML validation +- `task test:links` - Link checking + +## Individual Tests + +You can run individual tests: + +### Build Test + +Validates that Hugo can build the site: + +```bash +task test:build +``` + +This runs: `hugo --gc --minify --logLevel info` + +**What it checks:** + +- Hugo configuration is valid +- Content files have correct frontmatter +- Templates render without errors +- No circular dependencies in content structure + +### Markdown Lint + +Checks Markdown syntax and style: + +```bash +task test:markdown +``` + +This uses `markdownlint` with custom rules in `.markdownlint.json`. + +**What it checks:** + +- Consistent heading hierarchy +- Proper list formatting +- Code blocks have language tags +- No trailing whitespace +- Consistent line length (where applicable) + +**Common issues:** + +- Missing blank lines around code blocks +- Inconsistent list markers +- Heading levels skipped + +### HTML Validation + +Validates generated HTML: + +```bash +task test:html +``` + +This uses `htmlvalidate` with rules in `.htmlvalidate.json`. + +**What it checks:** + +- Well-formed HTML5 +- Proper nesting of elements +- Valid attributes +- Accessible markup + +### Link Checking + +Verifies all links are valid: + +```bash +task test:links +``` + +This uses `htmltest` configured in `.htmltest.yml`. + +**What it checks:** + +- Internal links point to existing pages +- External links are reachable +- Anchor links target existing elements +- No redirects (301/302) + +**Note:** This test can be slow for large sites with many external links. + +## CI Testing + +All tests run automatically on: + +- **Push to `main`** - Full test suite +- **Pull requests** - Full test suite + +View the GitHub Actions workflow: `.github/workflows/test.yml` + +### CI Test Results + +If tests fail in CI: + +1. Check the GitHub Actions logs +2. Look for specific test failures +3. Run the same test locally: `task test:` +4. Fix the issue +5. Commit and push + +### Artifacts + +CI uploads test artifacts: + +- `htmltest-report/` - Link checking results + +Download these from the GitHub Actions run to investigate failures. + +## Test Configuration Files + +| File | Purpose | +|------|---------| +| `.markdownlint.json` | Markdown linting rules | +| `.htmlvalidate.json` | HTML validation rules | +| `.htmltest.yml` | Link checker configuration | + +## Best Practices + +1. **Test early, test often** - Run `task test:quick` frequently +2. **Fix issues immediately** - Don't accumulate technical debt +3. **Understand failures** - Read error messages carefully +4. **Update tests** - If rules change, update config files +5. **Document exceptions** - If you need to ignore a rule, document why + +## Common Issues and Solutions + +### Markdown: MD031 - Blank lines around fences + +**Problem:** Missing blank line before/after code block + +**Solution:** Add blank lines: + +```markdown +Some text + +​```bash +command here +​``` + +More text +``` + +### Markdown: MD032 - Blank lines around lists + +**Problem:** Missing blank line before/after list + +**Solution:** Add blank lines: + +```markdown +Text before + +- List item 1 +- List item 2 + +Text after +``` + +### HTML: Invalid nesting + +**Problem:** Elements improperly nested + +**Solution:** Check template files and shortcodes + +### Link Check: 404 Not Found + +**Problem:** Link points to non-existent page + +**Solution:** + +- Fix the link +- Create the missing page +- Remove the link if no longer relevant + +## Next Steps + +Learn about the automated [CI/CD pipeline](../cicd/). diff --git a/content/en/docs-old/platform-overview.md b/content/en/docs-old/platform-overview.md new file mode 100644 index 0000000..3c20c3e --- /dev/null +++ b/content/en/docs-old/platform-overview.md @@ -0,0 +1,75 @@ +--- +title: "eDF Documentation Overview" +description: "Comprehensive guide for users and auditors to understand and use the eDF." +--- + +# Meta + +## Guidelines + +1. for users/developers/engineers we describe our output / outcome as product + * it is usable + * there are links / lists to repos +2. we have and describe a 'product-structure-tree' +3. for auditors / governance we have a list / cross reference to Jira tickets + * R&D ?, + * mappen auf die projektphasen, wie erstellt ein team eine plattform? + * stw. mobbing, mob programming + * mapping auf deliverables von IPCEI-CIS ???, bzw. mapping auf epics? + * projekthistorie, projektdynamic, teilprojekt von eDF , teilprojekt-abhängigkiet zB 'Platform' + * friendly user phase + * forgejo community, OSS, PR handling + * externe stakeholder, user experience, think ahead integration + * technolgien, technologie-schwerpunkte, cutting-edge research + * design/specification und bewertung von lösungsentürfen (zB VictoriaMetrics, GARM, terraform, argoCD, ...) + * CI/CD, golden paths (anm.: ist in grobkonzept, deployment von apps von developern fehlt) + +# Introduction +- Purpose of the eDF +- Target audience (developers, engineers, auditors) +- High-level product structure overview +- High-level architecture overview + +# eDF Components Overview +- List of all major components +- Vertical and horizontal layers explained +- Component maturity/status (fully integrated, partial, experimental) + +# Getting Started +- Quickstart guide for developers +- Onboarding steps for eDF engineers +- Prerequisites and environment setup + +# Component Details +For each component: +- Description and purpose +- Repository link +- README summary +- Architecture diagrams (link to Miro/Lucid) +- Usage instructions +- Integration points + +# Development Experience +- How to contribute +- Local development workflow +- CI/CD pipelines +- Testing and validation + +# Operational Experience +- Deployment guides +- Monitoring and observability +- Troubleshooting + +# Audit & Compliance +- Overview of implemented controls +- Ticket references (Jira, changelogs) +- Documentation of decisions and reviews +- Evidence of value and coverage + +# FAQ & Support +- Common issues and solutions +- Contact points for help + +# Appendix +- Glossary +- References to external resources diff --git a/content/en/docs-old/v1/_index.md b/content/en/docs-old/v1/_index.md new file mode 100644 index 0000000..f694474 --- /dev/null +++ b/content/en/docs-old/v1/_index.md @@ -0,0 +1,13 @@ +--- +title: "Documentation (v1 - Legacy)" +linkTitle: "v1 (Legacy)" +weight: 100 +description: > + Legacy documentation - archived version of the original content. +--- + +{{% alert title="Note" color="warning" %}} +This is the legacy documentation (v1). For the latest version, please visit the [current documentation](/docs/). +{{% /alert %}} + +This section contains the original documentation that is being migrated to a new structure. diff --git a/content/en/docs/concepts/1_software-and-workloads/_index.md b/content/en/docs-old/v1/concepts/1_software-and-workloads/_index.md similarity index 100% rename from content/en/docs/concepts/1_software-and-workloads/_index.md rename to content/en/docs-old/v1/concepts/1_software-and-workloads/_index.md diff --git a/content/en/docs/concepts/2_engineering-people/_index.md b/content/en/docs-old/v1/concepts/2_engineering-people/_index.md similarity index 71% rename from content/en/docs/concepts/2_engineering-people/_index.md rename to content/en/docs-old/v1/concepts/2_engineering-people/_index.md index 999dd9a..b333839 100644 --- a/content/en/docs/concepts/2_engineering-people/_index.md +++ b/content/en/docs-old/v1/concepts/2_engineering-people/_index.md @@ -1,7 +1,7 @@ --- title: Engineers weight: 2 -description: 'Our clients: People creating code and bringing it to live - and their habits and contexts' +description: 'Our clients: People creating code and bringing it to life - and their habits and contexts' --- diff --git a/content/en/docs/concepts/3_use-cases/_index.md b/content/en/docs-old/v1/concepts/3_use-cases/_index.md similarity index 74% rename from content/en/docs/concepts/3_use-cases/_index.md rename to content/en/docs-old/v1/concepts/3_use-cases/_index.md index 83abc4d..6a5b20f 100644 --- a/content/en/docs/concepts/3_use-cases/_index.md +++ b/content/en/docs-old/v1/concepts/3_use-cases/_index.md @@ -4,7 +4,7 @@ weight: 2 description: The golden paths in the engineers and product development domain --- -## Rationale +## Rationale The challenge of IPCEI-CIS Developer Framework is to provide value for DTAG customers, and more specifically: for Developers of DTAG customers. @@ -40,10 +40,22 @@ Deploy and develop the famous socks shops: * https://github.com/kezoo/nestjs-reactjs-graphql-typescript-boilerplate-example +### Telemetry Use Case with respect to the Fibonacci workload + +The Fibonacci App on the cluster can be accessed on the path https://cnoe.localtest.me/fibonacci. +It can be called for example by using the URL https://cnoe.localtest.me/fibonacci?number=5000000. + +The resulting ressource spike can be observed one the Grafana dashboard "Kubernetes / Compute Resources / Cluster". +The resulting visualization should look similar like this: + + +![alt text](fibonacci-app_cpu-spike.png) + + ## When and how to use the developer framework? ### e.g. an example .... taken from https://cloud.google.com/blog/products/application-development/common-myths-about-platform-engineering?hl=en -![alt text](image.png) \ No newline at end of file +![alt text](image.png) diff --git a/content/en/docs-old/v1/concepts/3_use-cases/fibonacci-app_cpu-spike.png b/content/en/docs-old/v1/concepts/3_use-cases/fibonacci-app_cpu-spike.png new file mode 100644 index 0000000..e02a51e Binary files /dev/null and b/content/en/docs-old/v1/concepts/3_use-cases/fibonacci-app_cpu-spike.png differ diff --git a/content/en/docs/concepts/3_use-cases/image.png b/content/en/docs-old/v1/concepts/3_use-cases/image.png similarity index 100% rename from content/en/docs/concepts/3_use-cases/image.png rename to content/en/docs-old/v1/concepts/3_use-cases/image.png diff --git a/content/en/docs/concepts/3_use-cases/platforms-def.drawio.png b/content/en/docs-old/v1/concepts/3_use-cases/platforms-def.drawio.png similarity index 100% rename from content/en/docs/concepts/3_use-cases/platforms-def.drawio.png rename to content/en/docs-old/v1/concepts/3_use-cases/platforms-def.drawio.png diff --git a/content/en/docs/concepts/4_digital-platforms/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/_index.md similarity index 100% rename from content/en/docs/concepts/4_digital-platforms/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/_index.md diff --git a/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/7b748ff4-image2-1024x580.png b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/7b748ff4-image2-1024x580.png new file mode 100644 index 0000000..79d6754 Binary files /dev/null and b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/7b748ff4-image2-1024x580.png differ diff --git a/content/en/docs/concepts/4_digital-platforms/platform-components/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/_index.md similarity index 63% rename from content/en/docs/concepts/4_digital-platforms/platform-components/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/_index.md index c1f2f70..16aea34 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-components/_index.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/_index.md @@ -6,3 +6,10 @@ description: What in terms of components or building blocks is needed in a platf > This page is in work. Right now we have in the index a collection of links describing and listing typical components and building blocks of platforms. Also we have a growing number of subsections regarding special types of components. +See also: + +* https://thenewstack.io/build-an-open-source-kubernetes-gitops-platform-part-1/ +* https://thenewstack.io/build-an-open-source-kubernetes-gitops-platform-part-2/ + +![alt text](7b748ff4-image2-1024x580.png) + diff --git a/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/_index.md new file mode 100644 index 0000000..128118e --- /dev/null +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/_index.md @@ -0,0 +1,92 @@ ++++ +archetype = "sub-chapter" +title = "CI/CD Pipeline" +weight = 1 +[params] + author = 'florian.fuerstenberg@t-systems.com' + date = '2024-10-08' ++++ + +This document describes the concept of pipelining in the context of the Edge Developer Framework. + +## Overview + +In order to provide a composable pipeline as part of the Edge Developer Framework (EDF), we have defined a set of concepts that can be used to create pipelines for different usage scenarios. These concepts are: + +**Pipeline Contexts** define the context in which a pipeline execution is run. Typically, a context corresponds to a specific step within the software development lifecycle, such as building and testing code, deploying and testing code in staging environments, or releasing code. Contexts define which components are used, in which order, and the environment in which they are executed. + +**Components** are the building blocks, which are used in the pipeline. They define specific steps that are executed in a pipeline such as compiling code, running tests, or deploying an application. + +![cicd](./cicd.drawio.png) + +## Pipeline Contexts + +We provide 4 Pipeline Contexts that can be used to create pipelines for different usage scenarios. The contexts can be described as the golden path, which is fully configurable and extenable by the users. + +Pipeline runs with a given context can be triggered by different actions. For example, a pipeline run with the `Continuous Integration` context can be triggered by a commit to a repository, while a pipeline run with the `Continuous Delivery` context could be triggered by merging a pull request to a specific branch. + +### Continuous Integration + +This context is focused on running tests and checks on every commit to a repository. It is used to ensure that the codebase is always in a working state and that new changes do not break existing functionality. Tests within this context are typically fast and lightweight, and are used to catch simple errors such as syntax errors, typos, and basic logic errors. Static vulnerability and compliance checks can also be performed in this context. + +### Continuous Delivery + +This context is focused on deploying code to a (ephermal) staging environment after its static checks have been performed. It is used to ensure that the codebase is always deployable and that new changes can be easily reviewed by stakeholders. Tests within this context are typically more comprehensive than those in the Continuous Integration context, and handle more complex scenarios such as integration tests and end-to-end tests. Additionally, live security and compliance checks can be performed in this context. + +### Continuous Deployment + +This context is focused on deploying code to a production environment and/or publishing artefacts after static checks have been performed. + +### Chore + +This context focuses on measures that need to be carried out regularly (e.g. security or compliance scans). They are used to ensure the robustness, security and efficiency of software projects. They enable teams to maintain high standards of quality and reliability while minimizing risks and allowing developers to focus on more critical and creative aspects of development, increasing overall productivity and satisfaction. + +## Components + +Components are the composable and self-contained building blocks for the contexts described above. The aim is to cover most (common) use cases for application teams and make them particularly easy to use by following our golden paths. This way, application teams only have to include and configure the functionalities they actually need. An additional benefit is that this allows for easy extensibility. If a desired functionality has not been implemented as a component, application teams can simply add their own. + +Components must be as small as possible and follow the same concepts of software development and deployment as any other software product. In particular, they must have the following characteristics: + +* designed for a single task +* provide a clear and intuitive output +* easy to compose +* easily customizable or interchangeable +* automatically testable + +In the EDF components are divided into different categories. Each category contains components that perform similar actions. For example, the `build` category contains components that compile code, while the `deploy` category contains components that automate the management of the artefacts created in a production-like system. + +> **Note:** Components are comparable to interfaces in programming. Each component defines a certain behaviour, but the actual implementation of these actions depends on the specific codebase and environment. +> +> For example, the `build` component defines the action of compiling code, but the actual build process depends on the programming language and build tools used in the project. The `vulnerability scanning` component will likely execute different tools and interact with different APIs depending on the context in which it is executed. + +### Build + +Build components are used to compile code. They can be used to compile code written in different programming languages, and can be used to compile code for different platforms. + +### Code Test + +These components define tests that are run on the codebase. They are used to ensure that the codebase is always in a working state and that new changes do not break existing functionality. Tests within this category are typically fast and lightweight, and are used to catch simple errors such as syntax errors, typos, and basic logic errors. Tests must be executable in isolation, and do not require external dependencies such as databases or network connections. + +### Application Test + +Application tests are tests, which run the code in a real execution environment, and provide external dependencies. These tests are typically more comprehensive than those in the `Code Test` category, and handle more complex scenarios such as integration tests and end-to-end tests. + +### Deploy + +Deploy components are used to deploy code to different environments, but can also be used to publish artifacts. They are typically used in the `Continuous Delivery` and `Continuous Deployment` contexts. + +### Release + +Release components are used to create releases of the codebase. They can be used to create tags in the repository, create release notes, or perform other tasks related to releasing code. They are typically used in the `Continuous Deployment` context. + +### Repo House Keeping + +Repo house keeping components are used to manage the repository. They can be used to clean up old branches, update the repository's README file, or perform other maintenance tasks. They can also be used to handle issues, such as automatically closing stale issues. + +### Dependency Management + +Dependency management is used to automate the process of managing dependencies in a codebase. It can be used to create pull requests with updated dependencies, or to automatically update dependencies in a codebase. + +### Security and Compliance + +Security and compliance components are used to ensure that the codebase meets security and compliance requirements. They can be used to scan the codebase for vulnerabilities, check for compliance with coding standards, or perform other security and compliance checks. Depending on the context, different tools can be used to accomplish scanning. In the `Continuous Integration` context, static code analysis can be used to scan the codebase for vulnerabilities, while in the `Continuous Delivery` context, live security and compliance checks can be performed. diff --git a/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/cicd.drawio.png b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/cicd.drawio.png new file mode 100644 index 0000000..cba0bc6 Binary files /dev/null and b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/cicd.drawio.png differ diff --git a/content/en/docs/concepts/4_digital-platforms/platform-components/cicd-pipeline/review-stl.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/review-stl.md similarity index 93% rename from content/en/docs/concepts/4_digital-platforms/platform-components/cicd-pipeline/review-stl.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/review-stl.md index ed5e701..429eab2 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-components/cicd-pipeline/review-stl.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/cicd-pipeline/review-stl.md @@ -8,4 +8,4 @@ There is no continuous whatever step inbetween ... Gitops is just 'overwriting' This means whatever quality ensuring steps have to take part before 'overwriting' have to be defined as state changer in the repos, not in the environments. -Conclusio: I think we only have three contexts, or let's say we don't have the contect 'continuous delivery' \ No newline at end of file +Conclusio: I think we only have three contexts, or let's say we don't have the contect 'continuous delivery' diff --git a/content/en/docs/concepts/4_digital-platforms/platform-components/developer-portals/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/developer-portals/_index.md similarity index 98% rename from content/en/docs/concepts/4_digital-platforms/platform-components/developer-portals/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/developer-portals/_index.md index 60c5453..53dec62 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-components/developer-portals/_index.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/developer-portals/_index.md @@ -33,4 +33,4 @@ https://www.getport.io/compare/backstage-vs-port * [port-vs-backstage-choosing-your-internal-developer-portal](https://medium.com/@vaibhavgupta0702/port-vs-backstage-choosing-your-internal-developer-portal-71c6a6acd979) * [idp-vs-self-service-portal-a-platform-engineering-showdown](https://thenewstack.io/idp-vs-self-service-portal-a-platform-engineering-showdown) * [portals-vs-platform-orchestrator](https://humanitec.com/portals-vs-platform-orchestrator) -* [internal-developer-portal-vs-internal-developer-platform](https://www.cortex.io/post/internal-developer-portal-vs-internal-developer-platform) \ No newline at end of file +* [internal-developer-portal-vs-internal-developer-platform](https://www.cortex.io/post/internal-developer-portal-vs-internal-developer-platform) diff --git a/content/en/docs/concepts/4_digital-platforms/platform-components/orchestrator/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/orchestrator/_index.md similarity index 90% rename from content/en/docs/concepts/4_digital-platforms/platform-components/orchestrator/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/orchestrator/_index.md index ed92bfb..745cbca 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-components/orchestrator/_index.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/orchestrator/_index.md @@ -17,7 +17,7 @@ description: "The new kid on the block since 2023 ist 'Platform Orchestrating': * cnoe.io -#### Resources +#### Resources * [CNOE IDPBuilder](https://cnoe.io/docs/reference-implementation/installations/idpbuilder) -* https://github.com/csantanapr/cnoe-examples/tree/main \ No newline at end of file +* https://github.com/csantanapr/cnoe-examples/tree/main diff --git a/content/en/docs/concepts/4_digital-platforms/platform-components/references/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/references/_index.md similarity index 85% rename from content/en/docs/concepts/4_digital-platforms/platform-components/references/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/references/_index.md index 1cd858c..5d1b186 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-components/references/_index.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-components/references/_index.md @@ -29,8 +29,8 @@ description: An currently uncurated list of references with respect to typical p | Core Component | Short Description | | ---- | --- | -| Application Configuration Management | Manage application configuration in a dynamic, scalable and reliable way. | -| Infrastructure Orchestration | Orchestrate your infrastructure in a dynamic and intelligent way depending on the context. | -| Environment Management | Enable developers to create new and fully provisioned environments whenever needed. | -| Deployment Management | Implement a delivery pipeline for Continuous Delivery or even Continuous Deployment (CD). | -| Role-Based Access Control | Manage who can do what in a scalable way. | \ No newline at end of file +| Application Configuration Management | Manage application configuration in a dynamic, scalable and reliable way. | +| Infrastructure Orchestration | Orchestrate your infrastructure in a dynamic and intelligent way depending on the context. | +| Environment Management | Enable developers to create new and fully provisioned environments whenever needed. | +| Deployment Management | Implement a delivery pipeline for Continuous Delivery or even Continuous Deployment (CD). | +| Role-Based Access Control | Manage who can do what in a scalable way. | diff --git a/content/en/docs/concepts/4_digital-platforms/platform-engineering/Viktor-restaurant.png b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/Viktor-restaurant.png similarity index 100% rename from content/en/docs/concepts/4_digital-platforms/platform-engineering/Viktor-restaurant.png rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/Viktor-restaurant.png diff --git a/content/en/docs/concepts/4_digital-platforms/platform-engineering/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/_index.md similarity index 98% rename from content/en/docs/concepts/4_digital-platforms/platform-engineering/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/_index.md index b093bda..88092d7 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-engineering/_index.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/_index.md @@ -5,7 +5,7 @@ description: Theory and general blue prints of the platform engineering discipli --- -## Rationale +## Rationale IPCEI-CIS Developer Framework is part of a cloud native technology stack. To design the capabilities and architecture of the Developer Framework we need to define the surounding context and internal building blocks, both aligned with cutting edge cloud native methodologies and research results. @@ -16,6 +16,7 @@ In CNCF the discipline of building stacks to enhance the developer experience is [CNCF first asks](https://tag-app-delivery.cncf.io/whitepapers/platforms/) why we need platform engineering: > The desire to refocus delivery teams on their core focus and reduce duplication of effort across the organisation has motivated enterprises to implement platforms for cloud-native computing. By investing in platforms, enterprises can: +> > * Reduce the cognitive load on product teams and thereby accelerate product development and delivery > * Improve reliability and resiliency of products relying on platform capabilities by dedicating experts to configure and manage them > * Accelerate product development and delivery by reusing and sharing platform tools and knowledge across many teams in an enterprise @@ -40,7 +41,7 @@ https://humanitec.com/blog/wtf-internal-developer-platform-vs-internal-developer ## Internal Developer Platform -> In IPCEI-CIS right now (July 2024) we are primarily interested in understanding how IDPs are built as one option to implement an IDP is to build it ourselves. +> In IPCEI-CIS right now (July 2024) we are primarily interested in understanding how IDPs are built as one option to implement an IDP is to build it ourselves. The outcome of the Platform Engineering discipline is - created by the platform engineering team - a so called 'Internal Developer Platform'. @@ -69,4 +70,4 @@ The amount of available IDPs as product is rapidly growing. ## Platform 'Initiatives' aka Use Cases Cortex is [talking about Use Cases (aka Initiatives):](https://www.youtube.com/watch?v=LrEC-fkBbQo) (or https://www.brighttalk.com/webcast/20257/601901) -![alt text](cortex-use-cases.png) \ No newline at end of file +![alt text](cortex-use-cases.png) diff --git a/content/en/docs/concepts/4_digital-platforms/platform-engineering/cortex-use-cases.png b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/cortex-use-cases.png similarity index 100% rename from content/en/docs/concepts/4_digital-platforms/platform-engineering/cortex-use-cases.png rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/cortex-use-cases.png diff --git a/content/en/docs/concepts/4_digital-platforms/platform-engineering/idp.webp b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/idp.webp similarity index 100% rename from content/en/docs/concepts/4_digital-platforms/platform-engineering/idp.webp rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/idp.webp diff --git a/content/en/docs/concepts/4_digital-platforms/platform-engineering/reference-architecture/_index.md b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/reference-architecture/_index.md similarity index 88% rename from content/en/docs/concepts/4_digital-platforms/platform-engineering/reference-architecture/_index.md rename to content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/reference-architecture/_index.md index f6420d7..d3d6af0 100644 --- a/content/en/docs/concepts/4_digital-platforms/platform-engineering/reference-architecture/_index.md +++ b/content/en/docs-old/v1/concepts/4_digital-platforms/platform-engineering/reference-architecture/_index.md @@ -7,14 +7,14 @@ weight = 1 date = '2024-07-30' +++ -## [The Structure of a Successful Internal Developer Platform](https://platformengineering.org/blog/create-your-own-platform-engineering-reference-architectures) +## [The Structure of a Successful Internal Developer Platform](https://platformengineering.org/blog/create-your-own-platform-engineering-reference-architectures) In a platform reference architecture there are five main planes that make up an IDP: 1. Developer Control Plane – this is the primary configuration layer and interaction point for the platform users. Components include Workload specifications such as Score and a portal for developers to interact with. 2. Integration and Delivery Plane – this plane is about building and storing the image, creating app and infra configs, and deploying the final state. It usually contains a CI pipeline, an image registry, a Platform Orchestrator, and the CD system. 3. Resource Plane – this is where the actual infrastructure exists including clusters, databases, storage or DNS services. -4, Monitoring and Logging Plane – provides real-time metrics and logs for apps and infrastructure. +4, Monitoring and Logging Plane – provides real-time metrics and logs for apps and infrastructure. 5. Security Plane – manages secrets and identity to protect sensitive information, e.g., storing, managing, and security retrieving API keys and credentials/secrets. ![idp](../idp.webp) @@ -29,12 +29,9 @@ https://github.com/humanitec-architecture https://humanitec.com/reference-architectures - ## Create a reference architecture [Create your own platform reference architecture](https://platformengineering.org/blog/create-your-own-platform-engineering-reference-architectures) [Reference arch slide deck](https://docs.google.com/presentation/d/1yAf_FSjiA0bAFukgu5p1DRMvvGGE1fF4KhvZbb7gn2I/edit?pli=1#slide=id.g1ef66f3349b_3_3) - - diff --git a/content/en/docs/concepts/5_platforms/CNOE/_index.md b/content/en/docs-old/v1/concepts/5_platforms/CNOE/_index.md similarity index 98% rename from content/en/docs/concepts/5_platforms/CNOE/_index.md rename to content/en/docs-old/v1/concepts/5_platforms/CNOE/_index.md index 903f56f..e701220 100644 --- a/content/en/docs/concepts/5_platforms/CNOE/_index.md +++ b/content/en/docs-old/v1/concepts/5_platforms/CNOE/_index.md @@ -1,16 +1,16 @@ -+++ -title = "CNOE" -weight = 4 -+++ +--- +title: CNOE +weight: 4 +--- * https://cnoe.io/docs/intro - + > The goal for the CNOE framework is to bring together a cohort of enterprises operating at the same scale so that they can navigate their operational technology decisions together, de-risk their tooling bets, coordinate contribution, and offer guidance to large enterprises on which CNCF technologies to use together to achieve the best cloud efficiencies. ### Aussprache -* Englisch Kuh.noo, +* Englisch Kuh.noo, * also 'Kanu' im Deutschen @@ -26,6 +26,7 @@ See https://cnoe.io/docs/reference-implementation/integrations/reference-impl: # in a local terminal with docker and kind idpbuilder create --use-path-routing --log-level debug --package-dir https://github.com/cnoe-io/stacks//ref-implementation ``` + ### Output ```bash @@ -116,7 +117,7 @@ NAMESPACE NAME SYNC STATUS HEALTH STATUS argocd argo-workflows Synced Healthy argocd argocd Synced Healthy argocd backstage Synced Healthy -argocd backstage-templates Synced Healthy +argocd included-backstage-templates Synced Healthy argocd coredns Synced Healthy argocd external-secrets Synced Healthy argocd gitea Synced Healthy @@ -150,7 +151,7 @@ Data: USER_PASSWORD : RwCHPvPVMu+fQM4L6W/q-Wq79MMP+3CN-Jeo ``` -### login to backstage +### login to backstage login geht mit den Creds, siehe oben: diff --git a/content/en/docs/concepts/5_platforms/CNOE/cnoe.png b/content/en/docs-old/v1/concepts/5_platforms/CNOE/cnoe.png similarity index 100% rename from content/en/docs/concepts/5_platforms/CNOE/cnoe.png rename to content/en/docs-old/v1/concepts/5_platforms/CNOE/cnoe.png diff --git a/content/en/docs/concepts/5_platforms/CNOE/local-argocd.png b/content/en/docs-old/v1/concepts/5_platforms/CNOE/local-argocd.png similarity index 100% rename from content/en/docs/concepts/5_platforms/CNOE/local-argocd.png rename to content/en/docs-old/v1/concepts/5_platforms/CNOE/local-argocd.png diff --git a/content/en/docs/concepts/5_platforms/CNOE/local-backstage.png b/content/en/docs-old/v1/concepts/5_platforms/CNOE/local-backstage.png similarity index 100% rename from content/en/docs/concepts/5_platforms/CNOE/local-backstage.png rename to content/en/docs-old/v1/concepts/5_platforms/CNOE/local-backstage.png diff --git a/content/en/docs-old/v1/concepts/5_platforms/Humanitec/_index.md b/content/en/docs-old/v1/concepts/5_platforms/Humanitec/_index.md new file mode 100644 index 0000000..e0ccb2f --- /dev/null +++ b/content/en/docs-old/v1/concepts/5_platforms/Humanitec/_index.md @@ -0,0 +1,7 @@ +--- +title: Humanitec +weight: 4 +--- + + +tbd diff --git a/content/en/docs/concepts/5_platforms/_index.md b/content/en/docs-old/v1/concepts/5_platforms/_index.md similarity index 100% rename from content/en/docs/concepts/5_platforms/_index.md rename to content/en/docs-old/v1/concepts/5_platforms/_index.md diff --git a/content/en/docs/concepts/_index.md b/content/en/docs-old/v1/concepts/_index.md similarity index 63% rename from content/en/docs/concepts/_index.md rename to content/en/docs-old/v1/concepts/_index.md index 87766df..9d830d0 100644 --- a/content/en/docs/concepts/_index.md +++ b/content/en/docs-old/v1/concepts/_index.md @@ -1,7 +1,7 @@ --- title: Concepts weight: 1 -description: The underlying platforming concepts of the Edge Developer Framework (EDF) solution, the problem domain +description: The underlying platforming concepts of the Edge Developer Framework (EDF) solution, i.e. the problem domain --- diff --git a/content/en/docs-old/v1/project/MVP-12-OTC.md b/content/en/docs-old/v1/project/MVP-12-OTC.md new file mode 100644 index 0000000..252ed04 --- /dev/null +++ b/content/en/docs-old/v1/project/MVP-12-OTC.md @@ -0,0 +1,269 @@ + + +# Ideen + +* Kanban +* product review sessions + +# ChatGPT + +## Fehlendes Backlog + +> welche agilen vorgehensmodelle bzw. best practices gibt es in der software-entwicklung, wenn das product backlog noch nicht da ist. es gibt zwar eine produktvision und auch schon einen PoC, aber das Produkt ist sowohl technisch als auch nutzenseitig immer nocht nicht planbar in user stories. daher ist SCRUM nicht machbar. das team ist ca. 8 personen groß, und wir überlgen, einen meilenstein in den nächsten 8 wochen einfach durch tägliches 'PDCA' zu erstellen: ein morgendliches planning, dann in subgruppen ein erforschen, dann im Plenum wieder C (Check) zusammenführen/integrieren, und ein abschliessendes 'A' als Ergebnissicherung, Versionierierung, Dokumentation. Was hälst du von diesem Vorgehen, bzw. welches Risiken und Verbesserungsvorschläge hast du? Oder gibt es ein Standard-Vorgehen hierfür? + +Dein beschriebenes Szenario – Vision und PoC vorhanden, aber kein ausformuliertes Product Backlog – ist typisch für eine frühe **Explorations- oder Inceptionsphase** in der Produktentwicklung. In dieser Phase ist klassisches **Scrum** tatsächlich oft zu starr, weil es eine gewisse Klarheit über Features und Stories voraussetzt. Das von euch überlegte Vorgehen klingt nach einer sehr pragmatischen und iterativen Methode, die im Kern gut zu den **Lean-Startup-Prinzipien** oder **Design Thinking + Agile Engineering** passt. + +## Bewertung eures PDCA-basierten Vorgehens + +**Positiv:** +* **Täglicher PDCA-Zyklus** (Plan-Do-Check-Act) sorgt für schnelle Feedbackschleifen. +* **Morgendliches Planning** und **Check-Meeting im Plenum** fördern Transparenz und Selbstorganisation. +* **Subgruppen-Erkundung** erlaubt parallele Experimente. +* **Abschließendes "A"** zur Ergebnissicherung ist essenziell, sonst bleibt es bei "busy work". + +**Risiken:** + +1. **Fehlende Langfriststruktur:** Ohne grobe übergreifende Richtung (z. B. Meilensteinplan, Zielbild) kann es leicht in ziellosem Explorieren enden. +2. **Uneinheitlicher Erkenntnisgewinn:** Subgruppen könnten redundant oder inkompatibel arbeiten, wenn kein gemeinsames Verständnis besteht. +3. **Dokumentation als „Nachsorge“:** Wenn die Doku erst am Ende passiert, droht Wissensverlust – lieber „Living Docs“ in Echtzeit pflegen. +4. **Stakeholder-Abkopplung:** Ohne explizite Reviews oder Demo-Rituale kann Feedback von außen fehlen. + +## Verbesserungsvorschläge + +1. **Exploration Backlog oder Hypothesenboard:** Auch ohne klassisches Product Backlog könnt ihr mit einem **Experiment-/Hypothesenboard** (à la Lean Startup) arbeiten. Zum Beispiel: + * Hypothese: „Feature X wird den Use Case Y verbessern.“ + * Experiment: „Prototyp bauen und testen mit Nutzergruppe Z.“ + * Ergebnis & Learnings dokumentieren. + +2. **Wöchentliche Zielsetzungen:** Jeden Montag ein Weekly Planning mit klaren Zielen für die Woche (Outcome-fokussiert, nicht Task-fokussiert). + +3. **Integration mit Dual Track Agile:** Das Vorgehen ähnelt dem **Dual-Track-Modell**: ein **Discovery-Track** (Erkunden, Validieren, Prototypisieren) läuft parallel zum späteren **Delivery-Track** (Releases, Sprints). Ihr seid noch voll im Discovery-Track. + +4. **Design Studio oder Spike-Zeitfenster:** Strukturiert Zeit für z. B. 2-Tages-Design-Studios oder 1-Tages-Spikes – das erhöht die Qualität der Exploration. + +5. **Review/Share-Session freitags:** Eine fixe wöchentliche Review-/Demo-Session (auch intern) erhöht die Disziplin und hilft beim „Check“-Teil im PDCA. + +## Gängige Standard-Methoden in dieser Phase + +* **Design Thinking** (für Nutzerzentrierte Exploration) +* **Lean UX / Lean Startup** (Hypothesengetrieben) +* **Dual Track Agile** +* **Google Design Sprint (5 Tage)** – extrem hilfreich, wenn es um das Testen von Nutzerideen geht +* **Shape Up (Basecamp)** – für nicht-sprintbasiertes Arbeiten mit "Bet" auf 6-Wochen-Projekte + +--- + +**Fazit:** +Euer PDCA-Zyklus ist ein solider, pragmatischer Einstieg in eine unsichere, vorstrukturierte Produktphase. Mit ein paar Ergänzungen (Exploration Backlog, feste Review-Elemente, Hypothesenstruktur) könnt ihr daraus ein effektives Discovery-Vorgehen machen, das den Übergang zu einem klassischen agilen Framework (z. B. Scrum) vorbereitet. + +Möchtest du eine konkrete Vorlage für ein Exploration Backlog oder Hypothesenboard für euer Team? + +## Architektur vorhanden + +> ok, du findest vor allem Tages-Zyklen zu kurz. Ich möchte noch ergänzen, dass wir eine Architektur haben. Das klingt vielleicht paradox, aber es ist tatsächlich so, dass wir das Software-syewtm bereits designed haben, und die Komponenten auch bereits kennen, aber jetzt vor allem die Wege des automatischen Deployments in eine Cloud und die Konfigurations- und Verwaltungsstrukturen unsrerer Software herausfinden müssen. Das ist da, was sich gerade nicht weiter planen lässt. Kannst du mit diesen Ergänzungen dein Feedbach nochmal schärfen? + +Danke für die Ergänzung – das ändert die Ausgangslage entscheidend und erlaubt eine deutlich präzisere Einordnung. + +### Neue Ausgangslage + +* Ihr **habt eine Architektur**: Die Komponenten und Schnittstellen sind klar. +* Es gibt **bereits einen PoC** und eine Produktvision. +* Das **Backlog fehlt**, weil ihr gerade die **"nicht-funktionalen" Themen wie Deployment, Cloud-Umgebung, Konfiguration und Betrieb** klärt. +* Das System ist **technisch grob fertig designt**, aber die **Operations- und Deployment-Prozesse** sind unklar und werden explorativ entwickelt. + +### Schärferes Feedback + +#### 1. **Tages-PDCA-Zyklen wirken in diesem Kontext zu granular** + +Bei Infrastruktur-, Deployment- oder Konfigurationsfragen entstehen oft tiefe „Spikes“ (z. B. CI/CD-Pipeline aufsetzen, Helm-Chart modellieren, Secrets Handling evaluieren). Diese brauchen oft mehr als einen Tag bis zum „Check“, weil Abhängigkeiten (z. B. Rechte, Cloud-Zugänge, Testumgebungen) entstehen. Ein **2- bis 3-Tages-Rhythmus** mit klaren Zwischenzielen wäre realistischer, ergänzt um: + +* **Daily Standup als Taktgeber**, aber nicht zwangsläufig als vollständiger PDCA-Zyklus. +* **Weekly Planning mit Zielvorgaben und Review-Ritualen**, um Fortschritt messbar zu machen. + +#### 2. **Was ihr macht, ist kein Produkt-Delivery, sondern "System Enablement"** + +Ihr steckt im Übergang von Architektur zu einem **Infrastructure as Code + Plattform Enablement Track**. Das bedeutet: +* Die „User Stories“ sind keine klassischen Features, sondern z. B.: + * „Als Team möchte ich unsere Software mit einem Befehl deployen können.“ + * „Als Betreiber will ich wissen, wie ich Services konfiguriere.“ + +Das spricht für ein **Infrastructure Kanban Board**, keine Sprints. + +#### 3. **Mögliche Vorgehensmodelle / Best Practices** + +| Modell / Methode | Warum es jetzt passt | +|------------------------------------------|------------------------------------------------------------------| +| **Kanban für technische Tasks** | Flexible Work-in-Progress-Kontrolle, ideal für Exploration. | +| **Spikes** (aus XP) | Timeboxed Exploration zu offenen Fragen (z. B. Helm, Secrets). | +| **Enabler Epics (SAFe)** | Deployment- und Ops-Fragen formal als "Enabler" fassen. | +| **Team Topologies – Platform Team Light**| Ihr agiert gerade wie ein internes Plattform-Team. | +| **Weekly DevOps Review** | Alle 5–7 Tage Stand der Automatisierung/Doku/Strukturen. | +| **ADRs & Living Docs** | Architectural Decision Records für Deployment-/Ops-Entscheidungen.| + +#### 4. **Konkrete Empfehlungen zur Strukturierung** + +* **Ziele für die 8 Wochen formulieren** als **"Capabilities"**, z. B.: + * „Greenfield-Clouddeployment in AWS/GCP über GitHub Actions.“ + * „Parameterisierbares Helm-Chart mit Doku.“ + * „Konfigurierbarkeit über ENV vs. Secrets evaluieren.“ +* Dazu **1–2 Woche cadence**, jede Woche ein Review/Checkpoint. +* **Boards mit Task-Kategorien**: + * 🧪 Spike + * 🛠️ Tooling/Automation + * 📦 Infrastruktur/Dienst + * 📓 Dokumentation +* **Ergebnisse sofort versionieren und dokumentieren**, z. B.: + * GitOps Repo-Struktur + * ADRs + * Beispiel-Deployments + +--- + +### Fazit + +Ihr seid im **"technisch operativen Enablement"** eures Systems, nicht im Produkt-Delivery. Das rechtfertigt: +* ein **kanban-artiges, flexibles Modell mit timeboxed Reviews**, +* tägliche Abstimmungen, aber nicht zwingend tägliche Zyklen, +* Fokus auf **Enabler-Ziele statt funktionale Stories**. + +SCRUM ist hier fehl am Platz, aber euer Ansatz ist sehr nahe an einer **modernen DevOps-orientierten Arbeitsweise**, die z. B. von **Platform Engineering Teams** eingesetzt wird. + +Möchtest du ein Beispiel für ein solches Kanban-Board mit passenden Task-Typen und Zielstruktur? + +## Kanban + +> ja, gerne! + +Hier ist ein konkretes Beispiel für ein **Kanban-Board**, das speziell auf eure Situation als „Platform/Enablement“-Team mit einem vorhandenen Architekturbild, aber offenem Deployment- und Betriebsdesign zugeschnitten ist. + +--- + +## 🎯 **Zielstruktur (übergeordnet für 8 Wochen)** + +Diese formuliert ihr am besten als **Capabilities** – Fähigkeiten, die das System nachher haben soll: + +| Capability ID | Zielbeschreibung | +|---------------|---------------------------------------------------------------------------------------------| +| C1 | Anwendung kann automatisiert in Cloudumgebung X deployed werden (inkl. Secrets Mgmt) | +| C2 | Konfiguration des Systems ist externisiert und dokumentiert (ENV, YAML, o. ä.) | +| C3 | Monitoring- und Logging-Infrastruktur ist einsatzbereit und dokumentiert | +| C4 | Dev- und Test-Umgebungen sind klar getrennt und automatisch provisionierbar | +| C5 | Alle Plattformentscheidungen (z. B. Helm vs. Kustomize) sind versioniert und begründet | + +Diese Capabilities bilden **Spalten** oder **Swimlanes** im Board (wenn euer Tool das unterstützt, z. B. GitHub Projects, Jira oder Trello mit Labels). + +--- + +## 🗂️ **Kanban-Board-Spalten (klassisch)** + +| Spalte | Zweck | +|------------------|-----------------------------------------------------------| +| 🔍 Backlog | Ideen, Hypothesen, Tasks – priorisiert nach Capabilities | +| 🧪 In Exploration | Aktive Spikes, Proofs, technische Evaluierungen | +| 🛠️ In Progress | Umsetzung mit konkretem Ziel | +| ✅ Review / Check | Funktionsprüfung, internes Review | +| 📦 Done | Abgeschlossen, dokumentiert, ggf. in Repo | + +--- + +## 🏷️ **Task-Typen (Labels oder Emojis zur Kennzeichnung)** + +| Symbol / Label | Typ | Beispiel | +|------------------|-----------------------------|--------------------------------------------------------------------------| +| 🧪 Spike | Technische Untersuchung | „Untersuche ArgoCD vs. Flux für GitOps Deployment“ | +| 📦 Infra | Infrastruktur | „Provisioniere dev/test/stage in GCP mit Terraform“ | +| 🔐 Secrets | Sicherheitsrelevante Aufgabe| „Design für Secret-Handling mit Sealed Secrets“ | +| 📓 Docs | Dokumentation | „README für Developer Setup schreiben“ | +| 🧰 Tooling | CI/CD, Pipelines, Linter | „GitHub Action für Build & Deploy schreiben“ | +| 🔁 Entscheidung | Architekturentscheidung | „ADR: Helm vs. Kustomize für Service Deployment“ | + +--- + +## 🧩 Beispielhafte Tasks für Capability „C1 – Deployment automatisieren“ + +| Task | Typ | Status | +|----------------------------------------------|----------|----------------| +| Write GitHub Action for Docker image push | 🧰 Tooling | 🛠️ In Progress | +| Evaluate ArgoCD vs. Flux | 🧪 Spike | ✅ Review | +| Create Helm Chart for Service A | 📦 Infra | 🔍 Backlog | +| Create ADR: Deployment-Toolentscheidung | 🔁 Entscheidung | 🔍 Backlog | +| Add deployment doc in Wiki | 📓 Docs | 🔍 Backlog | + +--- + +## 📅 Cadence-Empfehlung + +* **Daily Standup (15 min)**: Was läuft, was blockiert? Pull statt Push! +* **Weekly Planning (Montag)**: Priorisieren und Backlog-Grooming (welche Capabilities sind diese Woche dran?) +* **Weekly Review (Freitag)**: Erkenntnisse, Entscheidungen und Dokumentation präsentieren +* Optional: **Retrospektive alle 2 Wochen**, falls das Team Energie hat + +--- + +Wenn du magst, kann ich dir ein Beispiel-Board als Markdown-Vorlage oder als CSV-Datei zum Import in Trello, GitHub Projects, Jira etc. machen. Wäre das hilfreich? + +## Living Docs + +> kannst du noch etwas mehr zu 'LivingDocs' sagen? + +Ja, gerne! **"Living Docs"** (bzw. **Living Documentation**) ist ein Konzept aus der agilen Softwareentwicklung und DevOps, das sich auf **aktuelle, direkt aus dem System oder aus dem Arbeitsprozess generierte Dokumentation** bezieht. Ziel ist es, dass die Dokumentation *nicht veraltet*, sondern so eng mit Code und Systemzustand gekoppelt ist, dass sie sich (teilweise) selbst aktualisiert oder sich mit dem Entwicklungsprozess mitbewegt. + +--- + +## 🔍 **Was macht "Living Documentation" aus?** + +| Merkmal | Beschreibung | +|----------------------------------|------------------------------------------------------------------------------| +| 🔄 Automatisch erzeugt oder aktualisiert | Generiert aus Code, Tests, Pipelines, ADRs oder Deployments | +| 📌 Versionskontrolliert | Im Git abgelegt, gemeinsam mit dem Code gepflegt | +| 🧑‍💻 Entwicklernah | Entwickelt sich mit dem Code weiter – keine Trennung zwischen "Docs" und Dev | +| 📈 Änderbar & nachvollziehbar | Jede Änderung an Code/Doku hat einen Commit & Kontext | +| 📚 Mehrwert für alle Beteiligten| Richtet sich an Devs, Ops, PMs oder andere Teams – nicht nur "für später" | + +--- + +## 🧰 Typische Formen von Living Docs + +| Typ | Beschreibung & Tools | +|----------------------|----------------------------------------------------------------------------------------| +| **Architecture Decision Records (ADRs)** | Markdown-Dateien im Repo (z. B. `docs/adr/001-helm-vs-kustomize.md`) | +| **Code-Doku aus Source** | Mit Tools wie JSDoc, TypeDoc, Sphinx, Doxygen, etc. | +| **API-Doku** | Automatisch aus Code oder OpenAPI (Swagger) generiert | +| **Test-Doku (z. B. BDD)** | z. B. Gherkin-Style: `Given/When/Then`-Spezifikationen als Dokumentation | +| **Monitoring & Deployment-Status** | z. B. Dashboards mit Infrastructure-Doku (Grafana, Backstage, Argo UI) | +| **DevDocs im Repo** | z. B. `README.md`, `CONTRIBUTING.md`, `how-to/`, `docs/`, `adr/` | +| **Playbooks / Runbooks** | Schritt-für-Schritt-Anleitungen für Betrieb oder Störungen | + +--- + +## ✅ **Best Practices** + +1. **Nutze Markdown + Git:** Einfach, versionierbar, lesbar → ADRs, Runbooks, HowTos. +2. **Dokumentiere Entscheidungen bewusst:** Lieber knappe, saubere ADRs als keine Doku. +3. **Verknüpfe Doku mit Code / CI/CD:** Beispiel: Build-Tool erzeugt automatisch API-Doku oder ADR-Lint-Checks. +4. **Verlinke Logs, Dashboards, Monitoring:** z. B. in einem `system-overview.md`. +5. **Behandle Doku wie Code:** Reviewpflichtig, Pull Request basiert, CI-checkbar. + +--- + +## 🛠️ Tools & Frameworks + +| Zweck | Tools (Beispiele) | +|------------------------|-------------------------------------------------------------------------| +| ADRs | [`adr-tools`](https://github.com/npryce/adr-tools), einfaches Markdown | +| Markdown-Doku | MkDocs, Docusaurus, GitBook | +| API-Doku | Swagger/OpenAPI, Redocly | +| Infrastruktur-Doku | Backstage (Spotify), Terraform-docs | +| Doku-Automatisierung | GitHub Actions, pre-commit Hooks, CI-Checks | + +--- + +## 🧠 Denkweise: Doku = Gespräch in Zeit + +> "Dokumentation ist kein Nachtrag, sondern ein asynchrones Gespräch mit deinem zukünftigen Ich – oder dem nächsten Teammitglied." + +Gerade in eurem Kontext (technisches Enablement, Deployment, Betrieb) ist das **entscheidungsorientierte, leichtgewichtige Festhalten von Kontext** Gold wert. ADRs und `docs/runbooks/`-Verzeichnisse sind ein idealer Startpunkt. + +--- + +Möchtest du eine Vorlage für ein ADR oder ein Beispielverzeichnis für eine sinnvolle Living-Docs-Struktur im Repo? diff --git a/content/en/docs/project/_index.md b/content/en/docs-old/v1/project/_index.md similarity index 100% rename from content/en/docs/project/_index.md rename to content/en/docs-old/v1/project/_index.md diff --git a/content/en/docs-old/v1/project/bootstrapping/_index.md b/content/en/docs-old/v1/project/bootstrapping/_index.md new file mode 100644 index 0000000..9e07af4 --- /dev/null +++ b/content/en/docs-old/v1/project/bootstrapping/_index.md @@ -0,0 +1,7 @@ +--- +title: Bootstrapping Infrastructure +weight: 30 +description: The cluster and the installed applications in the bootstrapping cluster +--- + +In order to be able to do useful work, we do need a number of applications right away. We're deploying these manually so we have the necessary basis for our work. Once the framework has been developed far enough, we will deploy this infrastructure with the framework itself. diff --git a/content/en/docs-old/v1/project/bootstrapping/backup/_index.md b/content/en/docs-old/v1/project/bootstrapping/backup/_index.md new file mode 100644 index 0000000..b4b31f1 --- /dev/null +++ b/content/en/docs-old/v1/project/bootstrapping/backup/_index.md @@ -0,0 +1,86 @@ +--- +title: Backup of the Bootstrapping Cluster +weight: 30 +description: Backup and Restore of the Contents of the Bootstrapping Cluster +--- + +## Velero + +We are using [Velero](https://velero.io/) for backup and restore of the deployed applications. + +## Installing Velero Tools + +To manage a Velero install in a cluster, you need to have Velero command line tools installed locally. Please follow the instructions for [Basic Install](https://velero.io/docs/v1.9/basic-install). + +## Setting Up Velero For a Cluster + +Installing and configuring Velero for a cluster can be accomplished with the CLI. + +1. Create a file with the credentials for the S3 compatible bucket that is storing the backups, for example `credentials.ini`. + +```ini +[default] +aws_access_key_id = "Access Key Value" +aws_secret_access_key = "Secret Key Value" +``` + +2. Install Velero in the cluster + +``` +velero install \ + --provider aws \ + --plugins velero/velero-plugin-for-aws:v1.2.1 \ + --bucket osc-backup \ + --secret-file ./credentials.ini \ + --use-volume-snapshots=false \ + --use-node-agent=true \ + --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=https://obs.eu-de.otc.t-systems.com +``` + +3. Delete `credentials.ini`, it is not needed anymore (a secret has been created in the cluster). +4. Create a schedule to back up the relevant resources in the cluster: + +``` +velero schedule create devfw-bootstrap --schedule="23 */2 * * *" "--include-namespaces=forgejo" +``` + +## Working with Velero + +You can now use Velero to create backups, restore them, or perform other operations. Please refer to the [Velero Documentation](https://velero.io/docs/main/backup-reference/). + +To list all currently available backups: + +``` +velero backup get +``` + +## Setting up a Service Account for Access to the OTC Object Storage Bucket + +We are using the S3-compatible Open Telekom Cloud Object Storage service to make available some storage for the backups. We picked OTC specifically because we're not using it for anything else, so no matter what catastrophy we create in Open Sovereign Cloud, the backups should be safe. + +### Create an Object Storage Service Bucket + +1. Log in to the [OTC Console with the correct tenant](https://auth.otc.t-systems.com/authui/federation/websso?domain_id=81e7dbd7ec9f4b03a58120dfaa61d3db&idp=ADFS_MMS_OTC00000000001000113497&protocol=saml). +1. Navigate to [Object Storage Service](https://console.otc.t-systems.com/obs/?agencyId=WEXsFwkkVdGYULIrZT1icF4nmHY1dgX2®ion=eu-de&locale=en-us#/obs/manager/buckets). +1. Click Create Bucket in the upper right hand corner. Give your bucket a name. No further configuration should be necessary. + +### Create a Service User to Access the Bucket + +1. Log in to the [OTC Console with the correct tenant](https://auth.otc.t-systems.com/authui/federation/websso?domain_id=81e7dbd7ec9f4b03a58120dfaa61d3db&idp=ADFS_MMS_OTC00000000001000113497&protocol=saml). +1. Navigate to [Identity and Access Management](https://console.otc.t-systems.com/iam/?agencyId=WEXsFwkkVdGYULIrZT1icF4nmHY1dgX2®ion=eu-de&locale=en-us#/iam/users). +1. Navigate to User Groups, and click Create User Group in the upper right hand corner. +1. Enter a suitable name ("OSC Cloud Backup") and click OK. +1. In the group list, locate the group just created and click its name. +1. Click Authorize to add the necessary roles. Enter "OBS" in the search box to filter for Object Storage roles. +1. Select "OBS OperateAccess", if there are two roles, select them both. +1. **2024-10-15** Also select the "OBS Administrator" role. It is unclear why the "OBS OperateAccess" role is not sufficient, but without the admin role, the service user will not have write access to the bucket. +1. Click Next to save the roles, then click OK to confirm, then click Finish. +1. Navigate to Users, and click Create User in the upper right hand corner. +1. Give the user a sensible name ("ipcei-cis-devfw-osc-backups"). +1. Disable Management console access +1. Enable Access key, disable Password, disable Login protection. +1. Click Next +1. Pick the group created earlier. +1. Download the access key when prompted. + +The access key is a CSV file with the Access Key and the Secret Key listed in the second line. diff --git a/content/en/docs/project/conceptual-onboarding/1_intro/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/1_intro/_index.md similarity index 97% rename from content/en/docs/project/conceptual-onboarding/1_intro/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/1_intro/_index.md index 9fa9723..37aa4d0 100644 --- a/content/en/docs/project/conceptual-onboarding/1_intro/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/1_intro/_index.md @@ -5,10 +5,12 @@ description: The 5-step storyflow of this Onboarding chapter --- {{% pageinfo color="info" %}} + ## Summary -This onboarding section is for you when are new to IPCEI-CIS subproject 'Edge Developer Framework (EDF)' and you want to know about -* its context to 'Platform Engineering' +This onboarding section is for you when are new to IPCEI-CIS subproject 'Edge Developer Framework (EDF)' and you want to know about + +* its context to 'Platform Engineering' * and why we think it's the stuff we need to care about in the EDF {{% /pageinfo %}} @@ -41,9 +43,7 @@ Please do not think this story and the underlying assumptions are carved in ston ## Your role as 'Framework Engineer' in the Domain Architecture -Pls be aware of the the following domain and task structure of our mission: +Pls be aware of the the following domain and task structure of our mission: ![](./conclusio/images/modern.png) - - diff --git a/content/en/docs/project/conceptual-onboarding/2_edge-developer-framework/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/2_edge-developer-framework/_index.md similarity index 90% rename from content/en/docs/project/conceptual-onboarding/2_edge-developer-framework/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/2_edge-developer-framework/_index.md index 8da5935..452461a 100644 --- a/content/en/docs/project/conceptual-onboarding/2_edge-developer-framework/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/2_edge-developer-framework/_index.md @@ -5,10 +5,11 @@ description: Driving requirements for a platform --- {{% pageinfo color="info" %}} + ## Summary -The 'Edge Developer Framework' is both the project and the product we are working for. Out of the leading 'Portfolio Document' -we derive requirements which are ought to be fulfilled by Platform Engineering. +The 'Edge Developer Framework' is both the project and the product we are working for. Out of the leading 'Portfolio Document' +we derive requirements which are ought to be fulfilled by Platform Engineering. **This is our claim!** @@ -26,6 +27,7 @@ e. Development of DTAG/TSI Edge Developer Framework * Goal: All developed innovations must be accessible to developer communities in a **highly user-friendly and easy way** ### Development of DTAG/TSI Edge Developer Framework (p.14) + | capability | major novelties ||| | -- | -- | -- | -- | | e.1. Edge Developer full service framework (SDK + day1 +day2 support for edge installations) | Adaptive CI/CD pipelines for heterogeneous edge environments | Decentralized and self healing deployment and management | edge-driven monitoring and analytics | @@ -34,22 +36,23 @@ e. Development of DTAG/TSI Edge Developer Framework ### DTAG objectives & contributions (p.27) -DTAG will also focus on developing an easy-to-use **Edge Developer framework for software +DTAG will also focus on developing an easy-to-use **Edge Developer framework for software developers** to **manage the whole lifecycle of edge applications**, i.e. for **day-0-, day-1- and up to day-2- -operations**. With this DTAG will strongly enable the ecosystem building for the entire IPCEI-CIS edge to -cloud continuum and ensure openness and accessibility for anyone or any company to make use and -further build on the edge to cloud continuum. Providing the use of the tool framework via an open-source approach will further reduce entry barriers and enhance the openness and accessibility for anyone or +operations**. With this DTAG will strongly enable the ecosystem building for the entire IPCEI-CIS edge to +cloud continuum and ensure openness and accessibility for anyone or any company to make use and +further build on the edge to cloud continuum. Providing the use of the tool framework via an open-source approach will further reduce entry barriers and enhance the openness and accessibility for anyone or any organization (see innovations e.). ### WP Deliverables (p.170) e.1 Edge developer full-service framework -This tool set and related best practices and guidelines will **adapt, enhance and further innovate DevOps principles** and -their related, necessary supporting technologies according to the specific requirements and constraints associated with edge or edge cloud development, in order to keep the healthy and balanced innovation path on both sides, +This tool set and related best practices and guidelines will **adapt, enhance and further innovate DevOps principles** and +their related, necessary supporting technologies according to the specific requirements and constraints associated with edge or edge cloud development, in order to keep the healthy and balanced innovation path on both sides, the (software) development side and the operations side in the field of DevOps. {{% pageinfo color="info" %}} + ### What comes next? [Next](../platforming/) we'll see how these requirements seem to be fulfilled by platforms! diff --git a/content/en/docs/project/conceptual-onboarding/3_platforming/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/_index.md similarity index 96% rename from content/en/docs/project/conceptual-onboarding/3_platforming/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/_index.md index 6a41b34..48f790f 100644 --- a/content/en/docs/project/conceptual-onboarding/3_platforming/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/_index.md @@ -7,17 +7,18 @@ description: DevOps is dead - long live next level DevOps in platforms {{% pageinfo color="info" %}} + ## Summary -Since 2010 we have DevOps. This brings increasing delivery speed and efficiency at scale. -But next we got high 'cognitive loads' for developers and production congestion due to engineering lifecycle complexity. +Since 2010 we have DevOps. This brings increasing delivery speed and efficiency at scale. +But next we got high 'cognitive loads' for developers and production congestion due to engineering lifecycle complexity. So we need on top of DevOps an instrumentation to ensure and enforce speed, quality, security in modern, cloud native software development. This instrumentation is called 'golden paths' in intenal develoepr platforms (IDP). {{% /pageinfo %}} ## History of Platform Engineering -Let's start with a look into the history of platform engineering. A good starting point is [Humanitec](https://humanitec.com/), as they nowadays are one of the biggest players (['the market leader in IDPs.'](https://internaldeveloperplatform.org/#how-we-curate-this-site)) in platform engineering. +Let's start with a look into the history of platform engineering. A good starting point is [Humanitec](https://humanitec.com/), as they nowadays are one of the biggest players (['the market leader in IDPs.'](https://internaldeveloperplatform.org/#how-we-curate-this-site)) in platform engineering. They create lots of [beautiful articles and insights](https://humanitec.com/blog), their own [platform products](https://humanitec.com/products/) and [basic concepts for the platform architecture](https://humanitec.com/platform-engineering) (we'll meet this later on!). @@ -51,7 +52,7 @@ There is a CNCF working group which provides the definition of [Capabilities of ### Platform Engineering Team -Or, in another illustration for the platform as a developer service interface, which also defines the **'Platform Engineering Team'** inbetween: +Or, in another illustration for the platform as a developer service interface, which also defines the **'Platform Engineering Team'** inbetween: https://medium.com/@bijit211987/what-is-platform-engineering-and-how-it-reduce-cognitive-load-on-developers-ac7805603925 @@ -70,7 +71,7 @@ First of all some important wording to motivate the important term 'internal dev [Capabilities of platforms](https://tag-app-delivery.cncf.io/whitepapers/platforms/#capabilities-of-platforms) -### Ecosystems in InternalDeveloperPlatform +### Ecosystems in InternalDeveloperPlatform Build or buy - this is also in pltaform engineering a tweaked discussion, which one of the oldest player answers like this with some oppinioated internal capability structuring: @@ -78,6 +79,7 @@ Build or buy - this is also in pltaform engineering a tweaked discussion, which {{% pageinfo color="info" %}} + ### What comes next? [Next](../orchestrators/) we'll see how these concepts got structured! @@ -87,7 +89,7 @@ Build or buy - this is also in pltaform engineering a tweaked discussion, which ### Digital Platform defintion from [What we **call** a Platform](https://martinfowler.com/articles/talk-about-platforms.html) -> Words are hard, it seems. ‘Platform’ is just about the most ambiguous term we could use for an approach that is super-important for increasing delivery speed and efficiency at scale. Hence the title of this article, here is what I’ve been talking about most recently. +> Words are hard, it seems. ‘Platform’ is just about the most ambiguous term we could use for an approach that is super-important for increasing delivery speed and efficiency at scale. Hence the title of this article, here is what I’ve been talking about most recently. \ Definitions for software and hardware platforms abound, generally describing an operating environment upon which applications can execute and which provides reusable capabilities such as file systems and security. \ diff --git a/content/en/docs/project/conceptual-onboarding/3_platforming/humanitec-history.png b/content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/humanitec-history.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/3_platforming/humanitec-history.png rename to content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/humanitec-history.png diff --git a/content/en/docs/project/conceptual-onboarding/3_platforming/platform-self-services.webp b/content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/platform-self-services.webp similarity index 100% rename from content/en/docs/project/conceptual-onboarding/3_platforming/platform-self-services.webp rename to content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/platform-self-services.webp diff --git a/content/en/docs/project/conceptual-onboarding/3_platforming/platforms-def.drawio.png b/content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/platforms-def.drawio.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/3_platforming/platforms-def.drawio.png rename to content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/platforms-def.drawio.png diff --git a/content/en/docs/project/conceptual-onboarding/3_platforming/teams.png b/content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/teams.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/3_platforming/teams.png rename to content/en/docs-old/v1/project/conceptual-onboarding/3_platforming/teams.png diff --git a/content/en/docs/project/conceptual-onboarding/4_orchestrators/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/_index.md similarity index 98% rename from content/en/docs/project/conceptual-onboarding/4_orchestrators/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/_index.md index 11f4446..29b4486 100644 --- a/content/en/docs/project/conceptual-onboarding/4_orchestrators/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/_index.md @@ -5,9 +5,11 @@ description: Next level platforming is orchestrating platforms --- {{% pageinfo color="info" %}} + ## Summary -When defining and setting up platforms next two intrinsic problems arise: +When defining and setting up platforms next two intrinsic problems arise: + 1. it is not declarative and automated 2. it is not or least not easily changable @@ -33,10 +35,11 @@ https://humanitec.com/reference-architectures https://humanitec.com/blog/aws-azure-and-gcp-open-source-reference-architectures-to-start-your-mvp -> Hint: There is a [slides tool provided by McKinsey](https://platformengineering.org/blog/create-your-own-platform-engineering-reference-architectures) to set up your own platform deign based on the reference architecture +> Hint: There is a [slides tool provided by McKinsey](https://platformengineering.org/blog/create-your-own-platform-engineering-reference-architectures) to set up your own platform deign based on the reference architecture {{% pageinfo color="info" %}} + ### What comes next? [Next](../cnoe/) we'll see how we are going to do platform orchestration with CNOE! @@ -50,4 +53,3 @@ You remember the [capability mappings from the time before orchestration](../pla https://humanitec.com/whitepapers/state-of-platform-engineering-report-volume-2 Whitepaper_ State of Platform Engineering Report.pdf - diff --git a/content/en/docs/project/conceptual-onboarding/4_orchestrators/platform-architectures.webp b/content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/platform-architectures.webp similarity index 100% rename from content/en/docs/project/conceptual-onboarding/4_orchestrators/platform-architectures.webp rename to content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/platform-architectures.webp diff --git a/content/en/docs/project/conceptual-onboarding/4_orchestrators/platform-tooling-humanitec-platform-report-2024.PNG b/content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/platform-tooling-humanitec-platform-report-2024.PNG similarity index 100% rename from content/en/docs/project/conceptual-onboarding/4_orchestrators/platform-tooling-humanitec-platform-report-2024.PNG rename to content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/platform-tooling-humanitec-platform-report-2024.PNG diff --git a/content/en/docs/project/conceptual-onboarding/4_orchestrators/vendor-neutral-idp-final.gif b/content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/vendor-neutral-idp-final.gif similarity index 100% rename from content/en/docs/project/conceptual-onboarding/4_orchestrators/vendor-neutral-idp-final.gif rename to content/en/docs-old/v1/project/conceptual-onboarding/4_orchestrators/vendor-neutral-idp-final.gif diff --git a/content/en/docs/project/conceptual-onboarding/5_cnoe/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/_index.md similarity index 99% rename from content/en/docs/project/conceptual-onboarding/5_cnoe/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/_index.md index 3788735..19b2e67 100644 --- a/content/en/docs/project/conceptual-onboarding/5_cnoe/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/_index.md @@ -5,6 +5,7 @@ description: Our top candidate for a platform orchestrator --- {{% pageinfo color="info" %}} + ## Summary In late 2023 platform orchestration raised - the discipline of declarativley dinfing, building, orchestarting and reconciling building blocks of (digital) platforms. @@ -17,6 +18,7 @@ Thus we were looking for open source means for platform orchestrating and found ## Requirements for an Orchestrator When we want to set up a [complete platform](../platforming/platforms-def.drawio.png) we expect to have + * a **schema** which defines the platform, its ressources and internal behaviour * a **dynamic configuration or templating mechanism** to provide a concrete specification of a platform * a **deployment mechanism** to deploy and reconcile the platform @@ -55,6 +57,7 @@ There are already some example stacks: {{% pageinfo color="info" %}} + ### What comes next? [Next](../cnoe-showtime/) we'll see how a CNOE stacked Internal Developer Platform is deployed on you local laptop! diff --git a/content/en/docs/project/conceptual-onboarding/5_cnoe/cnoe-architecture.png b/content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/cnoe-architecture.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/5_cnoe/cnoe-architecture.png rename to content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/cnoe-architecture.png diff --git a/content/en/docs/project/conceptual-onboarding/5_cnoe/cnoe-capabilities.png b/content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/cnoe-capabilities.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/5_cnoe/cnoe-capabilities.png rename to content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/cnoe-capabilities.png diff --git a/content/en/docs/project/conceptual-onboarding/5_cnoe/cnoe-stacks.png b/content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/cnoe-stacks.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/5_cnoe/cnoe-stacks.png rename to content/en/docs-old/v1/project/conceptual-onboarding/5_cnoe/cnoe-stacks.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/_index.md similarity index 98% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/_index.md index 28357df..a741445 100644 --- a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/_index.md @@ -5,9 +5,10 @@ description: CNOE hands on --- {{% pageinfo color="info" %}} + ## Summary -CNOE is a 'Platform Engineering Framework' (Danger: Our wording!) - it is open source and locally runnable. +CNOE is a 'Platform Engineering Framework' (Danger: Our wording!) - it is open source and locally runnable. It consists of the orchestrator 'idpbuilder' and both of some predefined building blocks and also some predefined platform configurations. @@ -87,7 +88,7 @@ It's an important feature of idpbuilder that it will set up on an existing clust That's why we here first create the kind cluster `localdev`itself: -```bash +```bash cat << EOF | kind create cluster --name localdev --config=- # Kind kubernetes release images https://github.com/kubernetes-sigs/kind/releases kind: Cluster @@ -137,7 +138,7 @@ kube-system kube-scheduler-localdev-control-plane 1/1 Ru local-path-storage local-path-provisioner-6f8956fb48-6fvt2 1/1 Running 0 15s ``` -### First run: Start with core applications, 'core package' +### First run: Start with core applications, 'core package' Now we run idpbuilder the first time: @@ -149,7 +150,7 @@ ib create --use-path-routing #### Output -##### idpbuilder log +##### idpbuilder log ```bash stl@ubuntu-vpn:~/git/mms/idpbuilder$ ib create --use-path-routing @@ -243,7 +244,7 @@ Data: username : giteaAdmin ``` -In ArgoCD you will see the deployed three applications of the core package: +In ArgoCD you will see the deployed three applications of the core package: ![alt text](image-1.png) @@ -302,7 +303,7 @@ drwxr-xr-x 4 stl stl 4096 Jul 29 10:57 .. Now we run idpbuilder the second time with `-p basic/package1` -##### idpbuilder log +##### idpbuilder log ```bash stl@ubuntu-vpn:~/git/mms/cnoe-stacks$ ib create --use-path-routing -p basic/package1 @@ -389,7 +390,7 @@ NAMESPACE NAME SYNC STATUS HEALTH STATUS argocd argo-workflows Synced Healthy argocd argocd Synced Healthy argocd backstage Synced Healthy -argocd backstage-templates Synced Healthy +argocd included-backstage-templates Synced Healthy argocd external-secrets Synced Healthy argocd gitea Synced Healthy argocd keycloak Synced Healthy @@ -572,9 +573,10 @@ Next wait a bit until Gitops does its magic and our 'wanted' state in the repo g ![alt text](image-15.png) {{% pageinfo color="info" %}} + ### What comes next? The showtime of CNOE high level behaviour and usage scenarios is now finished. We setup an initial IDP and used a backstage golden path to init and deploy a simple application. -[Last not least](../conclusio/) we want to sum up the whole way from Devops to 'Frameworking' (is this the correct wording???) +[Last not least](../conclusio/) we want to sum up the whole way from Devops to 'Frameworking' (is this the correct wording???) {{% /pageinfo %}} diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-1.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-1.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-1.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-1.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-10.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-10.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-10.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-10.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-11.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-11.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-11.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-11.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-12.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-12.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-12.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-12.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-13.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-13.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-13.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-13.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-14.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-14.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-14.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-14.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-15.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-15.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-15.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-15.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-16.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-16.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-16.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-16.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-2.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-2.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-2.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-2.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-3.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-3.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-3.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-3.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-4.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-4.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-4.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-4.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-5.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-5.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-5.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-5.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-6.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-6.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-6.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-6.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-7.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-7.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-7.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-7.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-8.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-8.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-8.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-8.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-9.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-9.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image-9.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image-9.png diff --git a/content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image.png b/content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/6_cnoe-showtime/image.png rename to content/en/docs-old/v1/project/conceptual-onboarding/6_cnoe-showtime/image.png diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/README.md b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/README.md similarity index 84% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/README.md rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/README.md index 769478d..a1027c9 100644 --- a/content/en/docs/project/conceptual-onboarding/7_conclusio/README.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/README.md @@ -9,10 +9,10 @@ docker commit likec4 likec4 docker run -it --rm --user node -v $PWD:/app -p 5173:5173 likec4 bash // as root -npx playwright install-deps +npx playwright install-deps npx playwright install npm install likec4 // render -node@e20899c8046f:/app/content/en/docs/project/onboarding$ ./node_modules/.bin/likec4 export png -o ./images . \ No newline at end of file +node@e20899c8046f:/app/content/en/docs/project/onboarding$ ./node_modules/.bin/likec4 export png -o ./images . diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/_index.md similarity index 78% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/_index.md index da262e3..f76269f 100644 --- a/content/en/docs/project/conceptual-onboarding/7_conclusio/_index.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/_index.md @@ -5,6 +5,7 @@ description: 'Summary and final thoughts: Always challenge theses concepts, accu --- {{% pageinfo color="info" %}} + ## Summary In the project 'Edge Developer Framework' we start with DevOps, set platforms on top to automate golden paths, and finally set 'frameworks' (aka Orchestrators') on top to have declarative,automated and reconcilable platforms. @@ -14,7 +15,7 @@ In the project 'Edge Developer Framework' we start with DevOps, set platforms on ## From Devops over Platform to Framework Engineering -We come along from a quite well known, but already complex discipline called 'Platform Engineering', which is the next level devops. +We come along from a quite well known, but already complex discipline called 'Platform Engineering', which is the next level devops. On top of these two domains we now have 'Framework Engineering', i.e. buildung dynamic, orchestrated and reconciling platforms: | Classic Platform engineering | New: Framework Orchestration on top of Platforms | Your job: Framework Engineer | @@ -23,11 +24,12 @@ On top of these two domains we now have 'Framework Engineering', i.e. buildung d ## The whole picture of engineering -So always keep in mind that as as 'Framework Engineer' you - * include the skills of a platform and a devops engineer, - * you do Framework, Platform and Devops Engineering at the same time - * and your results have impact on Frameworks, Platforms and Devops tools, layers, processes. +So always keep in mind that as as 'Framework Engineer' you + +* include the skills of a platform and a devops engineer, +* you do Framework, Platform and Devops Engineering at the same time +* and your results have impact on Frameworks, Platforms and Devops tools, layers, processes. The following diamond is illustrating this: on top is you, on the bottom is our baseline 'DevOps' - \ No newline at end of file + diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/domain-architecture.c4 b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/domain-architecture.c4 similarity index 100% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/domain-architecture.c4 rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/domain-architecture.c4 diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/images/layers-and-framework-engineer.png b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/layers-and-framework-engineer.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/images/layers-and-framework-engineer.png rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/layers-and-framework-engineer.png diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/images/layers-and-platform-engineer.png b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/layers-and-platform-engineer.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/images/layers-and-platform-engineer.png rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/layers-and-platform-engineer.png diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/images/layers.png b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/layers.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/images/layers.png rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/layers.png diff --git a/content/en/docs/project/conceptual-onboarding/7_conclusio/images/modern.png b/content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/modern.png similarity index 100% rename from content/en/docs/project/conceptual-onboarding/7_conclusio/images/modern.png rename to content/en/docs-old/v1/project/conceptual-onboarding/7_conclusio/images/modern.png diff --git a/content/en/docs/project/conceptual-onboarding/_index.md b/content/en/docs-old/v1/project/conceptual-onboarding/_index.md similarity index 100% rename from content/en/docs/project/conceptual-onboarding/_index.md rename to content/en/docs-old/v1/project/conceptual-onboarding/_index.md diff --git a/content/en/docs/project/conceptual-onboarding/storyline.md b/content/en/docs-old/v1/project/conceptual-onboarding/storyline.md similarity index 98% rename from content/en/docs/project/conceptual-onboarding/storyline.md rename to content/en/docs-old/v1/project/conceptual-onboarding/storyline.md index 11d2997..b49b373 100644 --- a/content/en/docs/project/conceptual-onboarding/storyline.md +++ b/content/en/docs-old/v1/project/conceptual-onboarding/storyline.md @@ -1,5 +1,5 @@ -## Storyline +## Storyline 1. We have the 'Developer Framework' 2. We think the solution for DF is 'Platforming' (Digital Platforms) @@ -25,4 +25,3 @@ ## Architecture - diff --git a/content/en/docs-old/v1/project/intro-stakeholder-workshop/DevOps-Lifecycle-1.jpg b/content/en/docs-old/v1/project/intro-stakeholder-workshop/DevOps-Lifecycle-1.jpg new file mode 100644 index 0000000..c40430a Binary files /dev/null and b/content/en/docs-old/v1/project/intro-stakeholder-workshop/DevOps-Lifecycle-1.jpg differ diff --git a/content/en/docs-old/v1/project/intro-stakeholder-workshop/DevOps-Lifecycle.jpg b/content/en/docs-old/v1/project/intro-stakeholder-workshop/DevOps-Lifecycle.jpg new file mode 100644 index 0000000..c40430a Binary files /dev/null and b/content/en/docs-old/v1/project/intro-stakeholder-workshop/DevOps-Lifecycle.jpg differ diff --git a/content/en/docs-old/v1/project/intro-stakeholder-workshop/_index.md b/content/en/docs-old/v1/project/intro-stakeholder-workshop/_index.md new file mode 100644 index 0000000..a3cf645 --- /dev/null +++ b/content/en/docs-old/v1/project/intro-stakeholder-workshop/_index.md @@ -0,0 +1,93 @@ +--- +title: Stakeholder Workshop Intro +weight: 50 +description: An overall eDF introduction for stakeholders +linktitle: Stakeholder Workshops +--- + + +## Edge Developer Framework Solution Overview + +> This section is derived from [conceptual-onboarding-intro](../conceptual-onboarding/1_intro/) + +1. As presented in the introduction: We have the ['Edge Developer Framework'](./edgel-developer-framework/). \ + In short the mission is: + * Build a european edge cloud IPCEI-CIS + * which contains typical layers infrastructure, platform, application + * and on top has a new layer 'developer platform' + * which delivers a **cutting edge developer experience** and enables **easy deploying** of applications onto the IPCEI-CIS +2. We think the solution for EDF is in relation to ['Platforming' (Digital Platforms)](../conceptual-onboarding/3_platforming/) + 1. The next evolution after DevOps + 2. Gartner predicts 80% of SWE companies to have platforms in 2026 + 3. Platforms have a history since roundabout 2019 + 4. CNCF has a working group which created capabilities and a maturity model +3. Platforms evolve - nowadys there are [Platform Orchestrators](../conceptual-onboarding/4_orchestrators/) + 1. Humanitec set up a Reference Architecture + 2. There is this 'Orchestrator' thing - declaratively describe, customize and change platforms! +4. Mapping our assumptions to the [CNOE solution](../conceptual-onboarding/5_cnoe/) + 1. CNOE is a hot candidate to help and fulfill our platform building + 2. CNOE aims to embrace change and customization! + + +## 2. Platforming as the result of DevOps + +### DevOps since 2010 + +![alt text](DevOps-Lifecycle.jpg) + +* from 'left' to 'right' - plan to monitor +* 'leftshift' +* --> turns out to be a right shift for developers with cognitive overload +* 'DevOps isd dead' -> we need Platforms + +### Platforming to provide 'golden paths' + +> don't mix up 'golden paths' with pipelines or CI/CD + +![alt text](../conceptual-onboarding/3_platforming/humanitec-history.png) + +#### Short list of platform using companies + +As [Gartner states](https://www.gartner.com/en/newsroom/press-releases/2023-11-28-gartner-hype-cycle-shows-ai-practices-and-platform-engineering-will-reach-mainstream-adoption-in-software-engineering-in-two-to-five-years): "By 2026, 80% of software engineering organizations will establish platform teams as internal providers of reusable services, components and tools for application delivery." + +Here is a small list of companies alrteady using IDPs: + +* Spotify +* Airbnb +* Zalando +* Uber +* Netflix +* Salesforce +* Google +* Booking.com +* Amazon +* Autodesk +* Adobe +* Cisco +* ... + +## 3 Platform building by 'Orchestrating' + +So the goal of platforming is to build a 'digital platform' which fits [this architecture](https://www.gartner.com/en/infrastructure-and-it-operations-leaders/topics/platform-engineering) ([Ref. in German)](https://www.gartner.de/de/artikel/was-ist-platform-engineering): + +![alt text](image.png) + +### Digital Platform blue print: Reference Architecture + +The blue print for such a platform is given by the reference architecture from Humanitec: + +[Platform Orchestrators](../conceptual-onboarding/4_orchestrators/) + +### Digital Platform builder: CNOE + +Since 2023 this is done by 'orchestrating' such platforms. One orchestrator is the [CNOE solution](../conceptual-onboarding/5_cnoe/), which highly inspired our approach. + +In our orchestartion engine we think in 'stacks' of 'packages' containing platform components. + + +## 4 Sticking all together: Our current platform orchestrating generated platform + +Sticking together the platforming orchestration concept, the reference architecture and the CNOE stack solution, [this is our current running platform minimum viable product](../plan-in-2024/image-2024-8-14_10-50-27.png). + +This will now be presented! Enjoy! + diff --git a/content/en/docs-old/v1/project/intro-stakeholder-workshop/devops.png b/content/en/docs-old/v1/project/intro-stakeholder-workshop/devops.png new file mode 100644 index 0000000..efa787a Binary files /dev/null and b/content/en/docs-old/v1/project/intro-stakeholder-workshop/devops.png differ diff --git a/content/en/docs-old/v1/project/intro-stakeholder-workshop/image.png b/content/en/docs-old/v1/project/intro-stakeholder-workshop/image.png new file mode 100644 index 0000000..ed09018 Binary files /dev/null and b/content/en/docs-old/v1/project/intro-stakeholder-workshop/image.png differ diff --git a/content/en/docs/project/plan-in-2024/_index.md b/content/en/docs-old/v1/project/plan-in-2024/_index.md similarity index 80% rename from content/en/docs/project/plan-in-2024/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/_index.md index 56ff916..ed78154 100644 --- a/content/en/docs/project/plan-in-2024/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/_index.md @@ -5,7 +5,7 @@ description: The planned project workload in 2024 --- -## First Blue Print in 2024 +## First Blue Print in 2024 Our first architectural blue print for the IPCEI-CIS Developer Framework derives from Humanitecs Reference Architecture, see links in [Blog](../../blog/240823-archsession.md) @@ -13,10 +13,6 @@ Our first architectural blue print for the IPCEI-CIS Developer Framework derives ## C4 Model -> (sources see in ./ressources/architecture-c4) - -> How to use: install C4lite VSC exension and/or C4lite cli - then open *.c4 files in ./ressources/architecture-c4 - First system landscape C4 model: ![c4-model](./planes.png) @@ -28,7 +24,7 @@ https://confluence.telekom-mms.com/display/IPCEICIS/Architecture ## Dimensionierung Cloud für initiales DevFramework -### 28.08.24, Stefan Betkle, Florian Fürstenberg, Stephan Lo +### 28.08.24, Stefan Bethke, Florian Fürstenberg, Stephan Lo 1) zuerst viele DevFrameworkPlatformEngineers arbeiten lokal, mit zentralem Deployment nach OTC in **einen/max zwei** Control-Cluster 2) wir gehen anfangs von ca. 5 clustern aus @@ -39,6 +35,7 @@ https://confluence.telekom-mms.com/display/IPCEICIS/Architecture 7) Wildcard Domain ?? --> Eher ja Next Steps: (Vorschlag: in den nächsten 2 Wochen) + 1. Florian spezifiziert an Tobias 2. Tobias stellt bereit, kubeconfig kommt an uns 3. wir deployen diff --git a/content/en/docs/project/plan-in-2024/image-2024-8-14_10-50-27.png b/content/en/docs-old/v1/project/plan-in-2024/image-2024-8-14_10-50-27.png similarity index 100% rename from content/en/docs/project/plan-in-2024/image-2024-8-14_10-50-27.png rename to content/en/docs-old/v1/project/plan-in-2024/image-2024-8-14_10-50-27.png diff --git a/content/en/docs/project/plan-in-2024/planes.png b/content/en/docs-old/v1/project/plan-in-2024/planes.png similarity index 100% rename from content/en/docs/project/plan-in-2024/planes.png rename to content/en/docs-old/v1/project/plan-in-2024/planes.png diff --git a/content/en/docs-old/v1/project/plan-in-2024/poc/_assets/image-1.png b/content/en/docs-old/v1/project/plan-in-2024/poc/_assets/image-1.png new file mode 100644 index 0000000..cd3bfdf Binary files /dev/null and b/content/en/docs-old/v1/project/plan-in-2024/poc/_assets/image-1.png differ diff --git a/content/en/docs-old/v1/project/plan-in-2024/poc/_assets/image.png b/content/en/docs-old/v1/project/plan-in-2024/poc/_assets/image.png new file mode 100644 index 0000000..f5c6665 Binary files /dev/null and b/content/en/docs-old/v1/project/plan-in-2024/poc/_assets/image.png differ diff --git a/content/en/docs-old/v1/project/plan-in-2024/poc/_index.md b/content/en/docs-old/v1/project/plan-in-2024/poc/_index.md new file mode 100644 index 0000000..ef03359 --- /dev/null +++ b/content/en/docs-old/v1/project/plan-in-2024/poc/_index.md @@ -0,0 +1,15 @@ +--- +title: PoC Structure +weight: 5 +description: Building plan of the PoC milestone (end 2024) output +--- + +Presented and approved on tuesday, 26.11.2024 within the team: + +![alt text](./_assets/image.png) + + +The use cases/application lifecycle and deployment flow is drawn here: https://confluence.telekom-mms.com/display/IPCEICIS/Proof+of+Concept+2024 + + +![alt text](./_assets/image-1.png) diff --git a/content/en/docs/project/plan-in-2024/streams/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/_index.md similarity index 96% rename from content/en/docs/project/plan-in-2024/streams/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/_index.md index d060a96..2f65326 100644 --- a/content/en/docs/project/plan-in-2024/streams/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/_index.md @@ -3,9 +3,10 @@ title: Workstreams weight: 2 --- -This page is WiP (23.8.2024). +This page is WiP (23.8.2024). > Continued discussion on 29th Aug 24 +> > * idea: Top down mit SAFe, Value Streams > * paralell dazu bottom up (die zB aus den technisch/operativen Tätigkeietn entstehen) > * Scrum Master? @@ -14,7 +15,7 @@ This page is WiP (23.8.2024). Stefan and Stephan try to solve the mission 'wir wollen losmachen'. -**Solution Idea**: +**Solution Idea**: 1. First we define a **rough overall structure (see 'streams')** and propose some initial **activities** (like user stories) within them. 1. Next we work in **iterative steps** and produce iteratively progress and knowledge and outcomes in these activities. diff --git a/content/en/docs-old/v1/project/plan-in-2024/streams/deployment/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/deployment/_index.md new file mode 100644 index 0000000..cae759b --- /dev/null +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/deployment/_index.md @@ -0,0 +1,15 @@ +--- +title: Deployment +weight: 3 +--- + +> **Mantra**: +> +> 1. Everything as Code. +> 1. Cloud natively deployable everywhere. +> 1. Ramping up and tearing down oftenly is a no-brainer. +> 1. Especially locally (whereby 'locally' means 'under my own control') + +## Entwurf (28.8.24) + +![Deployment 2024](./deployment.drawio.png) diff --git a/content/en/docs/project/plan-in-2024/streams/deployment/deployment.drawio.png b/content/en/docs-old/v1/project/plan-in-2024/streams/deployment/deployment.drawio.png similarity index 100% rename from content/en/docs/project/plan-in-2024/streams/deployment/deployment.drawio.png rename to content/en/docs-old/v1/project/plan-in-2024/streams/deployment/deployment.drawio.png diff --git a/content/en/docs/project/plan-in-2024/streams/deployment/forgejo/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/deployment/forgejo/_index.md similarity index 84% rename from content/en/docs/project/plan-in-2024/streams/deployment/forgejo/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/deployment/forgejo/_index.md index 7e10216..de68795 100644 --- a/content/en/docs/project/plan-in-2024/streams/deployment/forgejo/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/deployment/forgejo/_index.md @@ -4,7 +4,7 @@ linkTitle: Forgejo weight: 1 --- -> **WiP** Ich (Stephan) schreibe mal schnell einige Stichworte, was ich so von Stefan gehört habe: +> **WiP** Ich (Stephan) schreibe mal schnell einige Stichworte, was ich so von Stefan gehört habe: ## Summary @@ -33,4 +33,4 @@ tbd * STBE deployed mit Helm in bereitgestelltes OTC-Kubernetes * erstmal interne User Datenbank nutzen -* dann ggf. OIDC mit vorhandenem Keycloak in der OTC anbinden \ No newline at end of file +* dann ggf. OIDC mit vorhandenem Keycloak in der OTC anbinden diff --git a/content/en/docs/project/plan-in-2024/streams/fundamentals/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/_index.md similarity index 95% rename from content/en/docs/project/plan-in-2024/streams/fundamentals/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/_index.md index fd8d2df..13d90d3 100644 --- a/content/en/docs/project/plan-in-2024/streams/fundamentals/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/_index.md @@ -15,4 +15,4 @@ weight: 1 ### nice article about platform orchestration automation (introducing BACK stack) -* https://dev.to/thenjdevopsguy/creating-your-platform-engineering-environment-4hpa \ No newline at end of file +* https://dev.to/thenjdevopsguy/creating-your-platform-engineering-environment-4hpa diff --git a/content/en/docs/project/plan-in-2024/streams/fundamentals/cicd-definition/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/cicd-definition/_index.md similarity index 94% rename from content/en/docs/project/plan-in-2024/streams/fundamentals/cicd-definition/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/cicd-definition/_index.md index 2565522..54259ed 100644 --- a/content/en/docs/project/plan-in-2024/streams/fundamentals/cicd-definition/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/cicd-definition/_index.md @@ -12,9 +12,10 @@ Der Produktionsprozess für Applikationen soll im Kontext von Gitops und Plattfo In Gitops basierten Plattformen (Anm.: wie es zB. CNOE und Humanitec mit ArgoCD sind) trifft das klassische Verständnis von Pipelining mit finalem Pushing des fertigen Builds auf die Target-Plattform nicht mehr zu. -D.h. in diesem fall is Argo CD = Continuous Delivery = Pulling des desired state auf die Target plattform. Eine pipeline hat hier keien Rechte mehr, single source of truth ist das 'Control-Git'. +D.h. in diesem fall is Argo CD = Continuous Delivery = Pulling des desired state auf die Target plattform. Eine pipeline hat hier keien Rechte mehr, single source of truth ist das 'Control-Git'. D.h. es stellen sich zwei Fragen: + 1. Wie sieht der adaptierte Workflow aus, der die 'Single Source of Truth' im 'Control-Git' definiert? Was ist das gewünschte korrekte Wording? Was bedeuen CI und CD in diesem (neuen) Kontext ? Auf welchen Environmants laufen Steps (zB Funktionstest), die eben nicht mehr auf einer gitops-kontrollierten Stage laufen? 2. Wie sieht der Workflow aus für 'Events', die nach dem CI/CD in die single source of truth einfliessen? ZB. abnahmen auf einer Abnahme Stage, oder Integrationsprobleme auf einer test Stage @@ -22,9 +23,9 @@ D.h. es stellen sich zwei Fragen: * Es sollen existierende, typische Pipelines hergenommen werden und auf die oben skizzierten Fragestellungen hin untersucht und angepasst werden. * In lokalen Demo-Systemen (mit oder ohne CNOE aufgesetzt) sollen die Pipeline entwürfe dummyhaft dargestellt werden und luffähig sein. -* Für den POC sollen Workflow-Systeme wie Dagger, Argo Workflow, Flux, Forgejo Actions zum Einsatz kommen. +* Für den POC sollen Workflow-Systeme wie Dagger, Argo Workflow, Flux, Forgejo Actions zum Einsatz kommen. ## Further ideas for POSs -* see sample flows in https://docs.kubefirst.io/ \ No newline at end of file +* see sample flows in https://docs.kubefirst.io/ diff --git a/content/en/docs/project/plan-in-2024/streams/fundamentals/image.png b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/image.png similarity index 100% rename from content/en/docs/project/plan-in-2024/streams/fundamentals/image.png rename to content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/image.png diff --git a/content/en/docs/project/plan-in-2024/streams/fundamentals/platform-definition/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/platform-definition/_index.md similarity index 93% rename from content/en/docs/project/plan-in-2024/streams/fundamentals/platform-definition/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/platform-definition/_index.md index c4d21c9..33d842d 100644 --- a/content/en/docs/project/plan-in-2024/streams/fundamentals/platform-definition/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/fundamentals/platform-definition/_index.md @@ -4,14 +4,14 @@ linkTitle: Platform Definition weight: 1 --- -## Summary +## Summary -Das theoretische Fundament unserer Plattform-Architektur soll begründet und weitere wesentliche Erfahrungen anderer Player durch Recherche erhoben werden, so dass unser aktuelles Zielbild abgesichert ist. +Das theoretische Fundament unserer Plattform-Architektur soll begründet und weitere wesentliche Erfahrungen anderer Player durch Recherche erhoben werden, so dass unser aktuelles Zielbild abgesichert ist. ## Rationale -Wir starten gerade auf der Bais des Referenzmodells zu Platform-Engineering von Gartner und Huamitec. -Es gibt viele weitere Grundlagen und Entwicklungen zu Platform Engineering. +Wir starten gerade auf der Bais des Referenzmodells zu Platform-Engineering von Gartner und Huamitec. +Es gibt viele weitere Grundlagen und Entwicklungen zu Platform Engineering. ## Task @@ -25,6 +25,3 @@ Es gibt viele weitere Grundlagen und Entwicklungen zu Platform Engineering. * Argumentation für unseren Weg zusammentragen. * Best Practices und wichtige Tipps und Erfahrungen zusammentragen. - - - diff --git a/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/_index.md new file mode 100644 index 0000000..c83523b --- /dev/null +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/_index.md @@ -0,0 +1,8 @@ +--- +title: POCs +weight: 2 +--- + +## Further ideas for POSs + +* see sample apps 'metaphor' in https://docs.kubefirst.io/ diff --git a/content/en/docs/project/plan-in-2024/streams/pocs/cnoe/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/cnoe/_index.md similarity index 97% rename from content/en/docs/project/plan-in-2024/streams/pocs/cnoe/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/pocs/cnoe/_index.md index 1a48228..9d0f324 100644 --- a/content/en/docs/project/plan-in-2024/streams/pocs/cnoe/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/cnoe/_index.md @@ -11,7 +11,7 @@ Als designiertes Basis-Tool des Developer Frameworks sollen die Verwendung und d ## Rationale -CNOE ist das designierte Werkzeug zur Beschreibung und Ausspielung des Developer Frameworks. +CNOE ist das designierte Werkzeug zur Beschreibung und Ausspielung des Developer Frameworks. Dieses Werkzeug gilt es zu erlernen, zu beschreiben und weiterzuentwickeln. Insbesondere der Metacharkter des 'Software zur Bereitstellung von Bereitstellungssoftware für Software', d.h. der unterschiedlichen Ebenen für unterschiedliche Use Cases und Akteure soll klar verständlich und dokumentiert werden. Siehe hierzu auch das Webinar von Huamnitec und die Diskussion zu unterschiedlichen Bereitstellungsmethoden eines RedisCaches. @@ -29,4 +29,3 @@ Insbesondere der Metacharkter des 'Software zur Bereitstellung von Bereitstellun * k3d anstatt kind * kind: ggf. issue mit kindnet, ersetzen durch Cilium - diff --git a/content/en/docs/project/plan-in-2024/streams/pocs/kratix/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/kratix/_index.md similarity index 100% rename from content/en/docs/project/plan-in-2024/streams/pocs/kratix/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/pocs/kratix/_index.md diff --git a/content/en/docs/project/plan-in-2024/streams/pocs/sia-asset/_index.md b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/sia-asset/_index.md similarity index 99% rename from content/en/docs/project/plan-in-2024/streams/pocs/sia-asset/_index.md rename to content/en/docs-old/v1/project/plan-in-2024/streams/pocs/sia-asset/_index.md index 147f8a8..60967a9 100644 --- a/content/en/docs/project/plan-in-2024/streams/pocs/sia-asset/_index.md +++ b/content/en/docs-old/v1/project/plan-in-2024/streams/pocs/sia-asset/_index.md @@ -47,4 +47,4 @@ graph TB LocalBox.EDF -. "provision" .-> LocalBox.Local LocalBox.EDF -. "provision" .-> CloudGroup.Prod LocalBox.EDF -. "provision" .-> CloudGroup.Test -``` \ No newline at end of file +``` diff --git a/content/en/docs-old/v1/project/team-process/_assets/P1.png b/content/en/docs-old/v1/project/team-process/_assets/P1.png new file mode 100644 index 0000000..43d35b7 Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P1.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P2.png b/content/en/docs-old/v1/project/team-process/_assets/P2.png new file mode 100644 index 0000000..a7b9deb Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P2.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P3.png b/content/en/docs-old/v1/project/team-process/_assets/P3.png new file mode 100644 index 0000000..6e295a7 Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P3.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P4.png b/content/en/docs-old/v1/project/team-process/_assets/P4.png new file mode 100644 index 0000000..f72f222 Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P4.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P5.png b/content/en/docs-old/v1/project/team-process/_assets/P5.png new file mode 100644 index 0000000..eb3314a Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P5.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P6.png b/content/en/docs-old/v1/project/team-process/_assets/P6.png new file mode 100644 index 0000000..f66aa56 Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P6.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P7.png b/content/en/docs-old/v1/project/team-process/_assets/P7.png new file mode 100644 index 0000000..b25b487 Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P7.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/P8.png b/content/en/docs-old/v1/project/team-process/_assets/P8.png new file mode 100644 index 0000000..bcd074f Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/P8.png differ diff --git a/content/en/docs-old/v1/project/team-process/_assets/image.png b/content/en/docs-old/v1/project/team-process/_assets/image.png new file mode 100644 index 0000000..ee73f3d Binary files /dev/null and b/content/en/docs-old/v1/project/team-process/_assets/image.png differ diff --git a/content/en/docs-old/v1/project/team-process/_index.md b/content/en/docs-old/v1/project/team-process/_index.md new file mode 100644 index 0000000..93c2b62 --- /dev/null +++ b/content/en/docs-old/v1/project/team-process/_index.md @@ -0,0 +1,139 @@ +--- +title: Team and Work Structure +weight: 50 +description: The way we work and produce runnable, presentable software +linkTitle: Team-Process +--- + +This document describes a proposal to set up a team work structure to primarily get the POC successfully delivered. Later on we will adjust and refine the process to fit for the MVP. + +## Introduction + +### Rationale + +We currently face the following [challenges in our process](https://confluence.telekom-mms.com/display/IPCEICIS/Proof+of+Concept+2024): + +1. missing team alignment on PoC-Output over all components + 1. Action: team is committed to **clearly defined PoC capabilities** + 1. Action: every each team-member is aware of **individual and common work** to be done (backlog) to achieve PoC +1. missing concept for repository (process, structure, + 1. Action: the **PoC has a robust repository concept** up & running + 1. Action: repo concept is applicable for other repositorys as well (esp. documentation repo) + +### General working context + +A **project goal** drives us as a **team** to create valuable **product output**. + +The **backlog** contains the product specification which instructs us by working in **tasks** with the help and usage of **ressources** (like git, 3rd party code and knowledge and so on). + +![alt text](./_assets/P1.png) + +Goal, Backlog, Tasks and Output must be in a well-defined context, such that the team can be productive. + +### POC and MVP working context + +This document has two targets: POC and MVP. + +Today is mid november 2024 and we need to package our project results created since july 2024 to deliver the POC product. + +![alt text](./_assets/P2.png) + +> Think of the agenda's goal like this: Imagine Ralf the big sponsor passes by and sees 'edge Developer Framework' somewhere on your screen. Then he asks: 'Hey cool, you are one of these famous platform guys?! I always wanted to get a demo how this framework looks like!' \ +> **What are you going to show him?** + +## Team and Work Structure (POC first, MVP later) + +In the following we will look at the work structure proposal, primarily for the POC, but reusable for any other release or the MVP + +### Consolidated POC (or any release later) + +![alt text](./_assets/P3.png) + +#### Responsibilities to reliably specify the deliverables + +![alt text](./_assets/P4.png) + +#### Todos + +1. SHOULD: Clarify context (arch, team, leads) +1. MUST: Define Deliverables (arch, team) (Hint: Deleiverables could be seen 1:1 as use cases - not sure about that right now) +1. MUST: Define Output structure (arch, leads) + +### Process (General): from deliverables to output (POC first, MVP later) + +Most important in the process are: + +* **traces** from tickets to outputs (as the clue to understand and control what is where) +* **README.md** (as the clue how to use the output) + +![alt text](./_assets/P5.png) + +### Output Structure POC + +Most important in the POC structure are: + +* one repo which is the product +* a README which maps project goals to the repo content +* the content consists of capabilities +* capabilities are shown ('prooven') by use cases +* the use cases are described in the deliverables + +![alt text](./_assets/P6.png) + +#### Glossary + +* README: user manual and storybook +* Outcome: like resolution, but more verbose and detailled (especially when resolution was 'Done'), so that state changes are easily recognisable + +### Work Structure Guidelines (POC first, MVP later) + +#### Structure + +1. each task and/or user story has at least a branch in an existing repo or a new, dedicated task repo + > recommended: multi-repo over monorepo +1. each repo has a main and development branch. development is the intgration line +1. pull requests are used to merge work outputs to the integration line +1. optional (my be too cumbersome): each PR should be reflected as comment in jira + +#### Workflow (in any task / user story) + +1. when output comes in own repo: `git init` --> always create as fast as possible a new repo +1. commit early and oftenly +1. comments on output and outcome when where is new work done. this could typically correlate to a pull request, see above + +#### Definition of Done + +1. Jira: there is a final comment summarizimg the outcome (in a bit more verbose from than just the 'resolution' of the ticket) and the main outputs. This may typically be a link to the commit and/or pull request of the final repo state +2. Git/Repo: there is a README.md in the root of the repo. It summarizes in a typical Gihub-manner how to use the repo, so that it does what it is intended to do and reveals all the bells and whistles of the repo to the consumer. If the README doesn't lead to the usable and recognizable added value the work is not done! + +#### Review + +1. Before a ticket gets finished (not defined yet which jira-state this is) there must be a review by a second team member +1. the reviewing person may review whatever they want, but must at least check the README + +#### Out of scope (for now) + +The following topics are optional and do not need an agreement at the moment: + +1. Commit message syntax + > Recommendation: at least 'WiP' would be good if the state is experimental +1. branch permissions +1. branch clean up policies +1. squashing when merging into the integration line +1. CI +1. Tech blogs / gists +1. Changelogs + +#### Integration of Jira with Forgejo (compare to https://github.com/atlassian/github-for-jira) + +1. Jira -> Forgejo: Create Branch +1. Forgejo -> Jira: + 1. commit + 2. PR + +## Status of POC Capabilities + +The following table lists an analysis of the status of the ['Funcionality validation' of the POC](https://confluence.telekom-mms.com/display/IPCEICIS/Proof+of+Concept+2024). +Assumption: These functionalities should be the aforementioned capabilities. + +![alt text](./_assets/P8.png) diff --git a/content/en/docs-old/v1/solution/_index.md b/content/en/docs-old/v1/solution/_index.md new file mode 100644 index 0000000..aaac88e --- /dev/null +++ b/content/en/docs-old/v1/solution/_index.md @@ -0,0 +1,6 @@ +--- +title: Solution +weight: 2 +description: "The implemented platforming solutions of EDF, i.e. the solution domain. The documentation of all project output: Design, Building blocks, results, show cases, artifacts and so on" +--- + diff --git a/content/en/docs-old/v1/solution/design/_index.md b/content/en/docs-old/v1/solution/design/_index.md new file mode 100644 index 0000000..f5f925c --- /dev/null +++ b/content/en/docs-old/v1/solution/design/_index.md @@ -0,0 +1,7 @@ +--- +title: Design +weight: 1 +description: Edge Developver Framework Design Documents +--- + +This design documentation structure is inspired by the [design of crossplane](https://github.com/crossplane/crossplane/tree/main/design#readme). diff --git a/content/en/docs-old/v1/solution/design/architectural-documentation.md b/content/en/docs-old/v1/solution/design/architectural-documentation.md new file mode 100644 index 0000000..0988144 --- /dev/null +++ b/content/en/docs-old/v1/solution/design/architectural-documentation.md @@ -0,0 +1,39 @@ +# why we have architectural documentation + +TN: Robert, Patrick, Stefan, Stephan +25.2.25, 13-14h + +## referring Tickets / Links + +* https://jira.telekom-mms.com/browse/IPCEICIS-2424 +* https://jira.telekom-mms.com/browse/IPCEICIS-478 +* Confluence: https://confluence.telekom-mms.com/display/IPCEICIS/Architecture + +## charts + +we need charts, because: + +* external stakeholders (especially architects) want to understand our product and component structure(*) +* our team needs visualization in technical discussions(**) +* we need to have discussions during creating the documentation + +(*): marker: "jetzt hab' ich das erste mal so halbwegs verstanden was ihr da überhaupt macht" +(**) marker: ???? + + +## typed of charts + +* schichtenmodell (frontend, middleware, backend) +* bebauungsplan mit abhängigkeiten, domänen +* kontext von außen +* komponentendiagramm, + +## decisions + +* openbao is backend-system, wird über apis erreicht + +## further topics / new requirements + +* runbook (compare to openbao discussions) +* persistenz der EDP konfiguartion (zb postgres) +* OIDC vs. SSI diff --git a/content/en/docs-old/v1/solution/design/architectural-work-structure.md b/content/en/docs-old/v1/solution/design/architectural-work-structure.md new file mode 100644 index 0000000..676ec2e --- /dev/null +++ b/content/en/docs-old/v1/solution/design/architectural-work-structure.md @@ -0,0 +1,85 @@ + + +# arbeitsteilung arcihtekur, nach innen und nach aussen + +Sebastiano, Stefan, Robert, Patrick, Stephan +25.2.25, 14-15h + +## links + +* https://confluence.telekom-mms.com/display/IPCEICIS/Team+Members + +# montags-call + +* Sebasriano im montags-call, inklusive florian, mindestens interim, solange wir keinen architektur-aussenminister haben + +# workshops + +* nach abstimmung mit hasan zu platform workshops +* weitere beteiligung in weiteren workshop-serien to be defined + +# programm-alignment + +* sponsoren finden +* erledigt sich durch die workshop-serien + +# interne architekten + +* robert und patrick steigen ein +* themen-teilung + +# produkt struktur + +edp standalone +ipcei edp + +# architektur themen + +## stl + +produktstruktur +application model (cnoe, oam, score, xrd, ...) +api +backstage (usage scenarios) +pipelining +'everything as code', deklaratives deployment, crossplane (bzw. orchestrator) + +ggf: +identity mgmt + +nicht: +security +monitoring +kubernetes internals + +## robert + +pipelining +kubernetes-inetrnals +api +crossplane +platforming - erzeugen von ressourcen in 'clouds' (e.g. gcp, und hetzner :-) ) + +## patrick + +security +identity-mgmt (SSI) +EaC +und alles andere macht mir auch total spass! + +# einschätzungen + +* ipceicis-pltaform ist wichtigstes teilprojekt (hasan + patrick) +* offener punkt: workload-steuerung, application model (kompatibility mit EDP) +* thema security, siehe ssi vs. oidc +* wir brauchen eigene workshops zum definieren der zusammenarbiets-modi + +# committements + +* patrick und robert nehmen teil an architektur + +# offen + +* sebastian schwaar onboarding? (>=50%) --- robert fragt + * alternative: consulting/support anfallsweise + * hält eine kubernetes einführungs-schulung --> termine sind zu vereinbaren (liegt bei sophie) diff --git a/content/en/docs-old/v1/solution/design/crossplane-vs-terraform.md b/content/en/docs-old/v1/solution/design/crossplane-vs-terraform.md new file mode 100644 index 0000000..6d27389 --- /dev/null +++ b/content/en/docs-old/v1/solution/design/crossplane-vs-terraform.md @@ -0,0 +1,23 @@ +# crossplane dawn? + +* Monday, March 31, 2025 + +## Issue + +Robert worked on the kindserver reconciling. + +He got aware that crossplane is able to delete clusters when drift is detected. This mustnt happen for sure in productive clusters. + +Even worse, if crossplane did delete the cluster and then set it up again correctly, argocd would be out of sync and had no idea by default how to relate the old and new cluster. + +## Decisions + +1. quick solution: crosspllane doesn't delete clusters. + * If it detects drift with a kind cluster, it shall create an alert (like email) but not act in any way +2. analyze how crossplane orchestration logic calls 'business logic' to decide what to do. + * In this logic we could decide whether to delete resources like clusters and if so then how. Secondly an 'orchestration' or let's workflow how to correctly set the old state with respect to argocd could be implemented there. +3. keep terraform in mind + * we probably will need it in adapters anyway + * if the crossplane design does not fir, or the benefit is too small, or we definetly ahve more ressources in developing terraform, the we could completley switch +4. focus on EDP domain and application logic + * for the momen (in MVP1) we need to focus on EDP higher level functionality diff --git a/content/en/docs-old/v1/solution/design/decision-iam-and-edf-self-containment.md b/content/en/docs-old/v1/solution/design/decision-iam-and-edf-self-containment.md new file mode 100644 index 0000000..8e31282 --- /dev/null +++ b/content/en/docs-old/v1/solution/design/decision-iam-and-edf-self-containment.md @@ -0,0 +1,31 @@ +--- +title: eDF is self-contained and has an own IAM (WiP) +weight: 2 +description: tbd +--- + +* Type: Proposal +* Owner: Stephan Lo (stephan.lo@telekom.de) +* Reviewers: EDF Architects +* Status: Speculative, revision 0.1 + +## Background + +tbd + +## Proposal + +==== 1 ===== + +There is a core eDF which is self-contained and does not have any impelmented dependency to external platforms. +eDF depends on abstractions. +Each embdding into customer infrastructure works with adapters which implement the abstraction. + +==== 2 ===== + +eDF has an own IAM. This may either hold the principals and permissions itself when there is no other IAM or proxy and map them when integrated into external enterprise IAMs. + + +## Reference + +Arch call from 4.12.24, Florian, Stefan, Stephan-Pierre diff --git a/content/en/docs-old/v1/solution/design/platform-component.md b/content/en/docs-old/v1/solution/design/platform-component.md new file mode 100644 index 0000000..76046c4 --- /dev/null +++ b/content/en/docs-old/v1/solution/design/platform-component.md @@ -0,0 +1,42 @@ + + +# platform-team austausch + +## stefan + +* initiale fragen: +* vor 2 wochen workshop tapeten-termin +* wer nimmt an den workshops teil? +* was bietet platform an? +* EDP: könnte 5mio/a kosten + * -> produkt pitch mit marko + * -> edp ist unabhängig von ipceicis cloud continuum* + * generalisierte quality of services ( <-> platform schnittstelle) + + +## Hasan + +* martin macht: agent based iac generation +* platform-workshops mitgestalten +* mms-fokus +* connectivity enabled cloud offering, e2e von infrastruktur bis endgerät +* sdk für latenzarme systeme, beraten und integrieren + * monitoring in EDP? +* beispiel 'unity' +* vorstellung im arch call +* wie können unterschieldiche applikationsebenen auf unterschiedliche infrastruktur(compute ebenen) verteit werden +* zero touch application deployment model +* ich werde gerade 'abgebremst' +* workshop beteiligung, TPM application model + +## martin + + * edgeXR erlaubt keine persistenz + * openai, llm als abstarktion nicht vorhanden + * momentan nur compute vorhanden + * roaming von applikationen --> EDP muss das unterstützen + * anwendungsfall: sprachmodell übersetzt design-artifakte in architektur, dann wird provisionierung ermöglicht + +? Applikations-modelle +? zusammenhang mit golden paths + * zB für reines compute faas diff --git a/content/en/docs-old/v1/solution/design/proposal-local-deployment.md b/content/en/docs-old/v1/solution/design/proposal-local-deployment.md new file mode 100644 index 0000000..71cad6c --- /dev/null +++ b/content/en/docs-old/v1/solution/design/proposal-local-deployment.md @@ -0,0 +1,23 @@ +--- +title: Agnostic EDF Deployment +weight: 2 +description: The implementation of EDF must be kubernetes provider agnostic +--- + +* Type: Proposal +* Owner: Stephan Lo (stephan.lo@telekom.de) +* Reviewers: EDF Architects +* Status: Speculative, revision 0.1 + +## Background + +EDF is running as a controlplane - or let's say an orchestration plane, correct wording is still to be defined - in a kubernetes cluster. +Right now we have at least ArgoCD as controller of manifests which we provide as CNOE stacks of packages and standalone packages. + +## Proposal + +The implementation of EDF must be kubernetes provider agnostic. Thus each provider specific deployment dependency must be factored out into provider specific definitions or deployment procedures. + +## Local deployment + +This implies that EDF must always be deployable into a local cluster, whereby by 'local' we mean a cluster which is under the full control of the platform engineer, e.g. a kind cluster on their laptop. diff --git a/content/en/docs-old/v1/solution/design/proposal-stack-hydration.md b/content/en/docs-old/v1/solution/design/proposal-stack-hydration.md new file mode 100644 index 0000000..4037da2 --- /dev/null +++ b/content/en/docs-old/v1/solution/design/proposal-stack-hydration.md @@ -0,0 +1,28 @@ +--- +title: Agnostic Stack Definition +weight: 2 +description: The implementation of EDF stacks must be kubernetes provider agnostic by a templating/hydration mechanism +--- + +* Type: Proposal +* Owner: Stephan Lo (stephan.lo@telekom.de) +* Reviewers: EDF Architects +* Status: Speculative, revision 0.1 + +## Background + +When booting and reconciling the 'final' stack exectuting orchestrator (here: ArgoCD) needs to get rendered (or hydrated) presentations of the manifests. + +It is not possible or unwanted that the orchestrator itself resolves dependencies or configuration values. + +## Proposal + +The hydration takes place for all target clouds/kubernetes providers. There is no 'default' or 'special' setup, like the Kind version. + +## Local development + +This implies that in a development process there needs to be a build step hydrating the ArgoCD manifests for the targeted cloud. + +## Reference + +Discussion from Robert and Stephan-Pierre in the context of stack development - there should be an easy way to have locally changed stacks propagated into the local running platform. diff --git a/content/en/docs/solution/scenarios/_index.md b/content/en/docs-old/v1/solution/scenarios/_index.md similarity index 100% rename from content/en/docs/solution/scenarios/_index.md rename to content/en/docs-old/v1/solution/scenarios/_index.md diff --git a/content/en/docs/solution/scenarios/gitops/_index.md b/content/en/docs-old/v1/solution/scenarios/gitops/_index.md similarity index 90% rename from content/en/docs/solution/scenarios/gitops/_index.md rename to content/en/docs-old/v1/solution/scenarios/gitops/_index.md index b0191fb..81490f5 100644 --- a/content/en/docs/solution/scenarios/gitops/_index.md +++ b/content/en/docs-old/v1/solution/scenarios/gitops/_index.md @@ -13,4 +13,4 @@ What kind of Gitops do we have with idpbuilder/CNOE ? https://github.com/gitops-bridge-dev/gitops-bridge -![alt text](image.png) \ No newline at end of file +![alt text](image.png) diff --git a/content/en/docs/solution/scenarios/gitops/image.png b/content/en/docs-old/v1/solution/scenarios/gitops/image.png similarity index 100% rename from content/en/docs/solution/scenarios/gitops/image.png rename to content/en/docs-old/v1/solution/scenarios/gitops/image.png diff --git a/content/en/docs/solution/scenarios/orchestration/_index.md b/content/en/docs-old/v1/solution/scenarios/orchestration/_index.md similarity index 96% rename from content/en/docs/solution/scenarios/orchestration/_index.md rename to content/en/docs-old/v1/solution/scenarios/orchestration/_index.md index 2ef6417..d45f7d5 100644 --- a/content/en/docs/solution/scenarios/orchestration/_index.md +++ b/content/en/docs-old/v1/solution/scenarios/orchestration/_index.md @@ -18,7 +18,7 @@ The next chart shows a system landscape of CNOE orchestration. [2024-04-PlatformEngineering-DevOpsDayRaleigh.pdf](https://github.com/cnoe-io/presentations/blob/main/2024-04-PlatformEngineering-DevOpsDayRaleigh.pdf) -Questions: What are the degrees of freedom in this chart? What variations with respect to environments and environmnent types exist? +Questions: What are the degrees of freedom in this chart? What variations with respect to environments and environmnent types exist? ![alt text](image.png) @@ -28,7 +28,7 @@ The next chart shows a context chart of CNOE orchestration. [reference-implementation-aws](https://github.com/cnoe-io/reference-implementation-aws) -Questions: What are the degrees of freedom in this chart? What variations with respect to environments and environmnent types exist? +Questions: What are the degrees of freedom in this chart? What variations with respect to environments and environmnent types exist? -![alt text](image-1.png) \ No newline at end of file +![alt text](image-1.png) diff --git a/content/en/docs/solution/scenarios/orchestration/image-1.png b/content/en/docs-old/v1/solution/scenarios/orchestration/image-1.png similarity index 100% rename from content/en/docs/solution/scenarios/orchestration/image-1.png rename to content/en/docs-old/v1/solution/scenarios/orchestration/image-1.png diff --git a/content/en/docs/solution/scenarios/orchestration/image.png b/content/en/docs-old/v1/solution/scenarios/orchestration/image.png similarity index 100% rename from content/en/docs/solution/scenarios/orchestration/image.png rename to content/en/docs-old/v1/solution/scenarios/orchestration/image.png diff --git a/content/en/docs/solution/tools/Backstage/Backstage setup tutorial/_index.md b/content/en/docs-old/v1/solution/tools/Backstage/Backstage setup tutorial/_index.md similarity index 84% rename from content/en/docs/solution/tools/Backstage/Backstage setup tutorial/_index.md rename to content/en/docs-old/v1/solution/tools/Backstage/Backstage setup tutorial/_index.md index d8cdba2..9f8f288 100644 --- a/content/en/docs/solution/tools/Backstage/Backstage setup tutorial/_index.md +++ b/content/en/docs-old/v1/solution/tools/Backstage/Backstage setup tutorial/_index.md @@ -33,9 +33,11 @@ To install the Backstage Standalone app, you can use npx. npx is a tool that com ```bash npx @backstage/create-app@latest ``` + This command will create a new directory with a Backstage app inside. The wizard will ask you for the name of the app. This name will be created as sub directory in your current working directory. Below is a simplified layout of the files and folders generated when creating an app. + ```bash app ├── app-config.yaml @@ -46,15 +48,17 @@ app └── backend ``` -- **app-config.yaml**: Main configuration file for the app. See Configuration for more information. -- **catalog-info.yaml**: Catalog Entities descriptors. See Descriptor Format of Catalog Entities to get started. -- **package.json**: Root package.json for the project. Note: Be sure that you don't add any npm dependencies here as they probably should be installed in the intended workspace rather than in the root. -- **packages/**: Lerna leaf packages or "workspaces". Everything here is going to be a separate package, managed by lerna. -- **packages/app/**: A fully functioning Backstage frontend app that acts as a good starting point for you to get to know Backstage. -- **packages/backend/**: We include a backend that helps power features such as Authentication, Software Catalog, Software Templates, and TechDocs, amongst other things. +* **app-config.yaml**: Main configuration file for the app. See Configuration for more information. +* **catalog-info.yaml**: Catalog Entities descriptors. See Descriptor Format of Catalog Entities to get started. +* **package.json**: Root package.json for the project. Note: Be sure that you don't add any npm dependencies here as they probably should be installed in the intended workspace rather than in the root. +* **packages/**: Lerna leaf packages or "workspaces". Everything here is going to be a separate package, managed by lerna. +* **packages/app/**: A fully functioning Backstage frontend app that acts as a good starting point for you to get to know Backstage. +* **packages/backend/**: We include a backend that helps power features such as Authentication, Software Catalog, Software Templates, and TechDocs, amongst other things. ## Run the Backstage Application + You can run it in Backstage root directory by executing this command: + ```bash yarn dev ``` diff --git a/content/en/docs-old/v1/solution/tools/Backstage/Exsisting Plugins/_index.md b/content/en/docs-old/v1/solution/tools/Backstage/Exsisting Plugins/_index.md new file mode 100644 index 0000000..866f60f --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Backstage/Exsisting Plugins/_index.md @@ -0,0 +1,55 @@ ++++ +title = "Existing Backstage Plugins" +weight = 4 ++++ + +1. **Catalog**: + * Used for managing services and microservices, including registration, visualization, and the ability to track dependencies and relationships between services. It serves as a central directory for all services in an organization. + +2. **Docs**: + * Designed for creating and managing documentation, supporting formats such as Markdown. It helps teams organize and access technical and non-technical documentation in a unified interface. + +3. **API Docs**: + * Automatically generates API documentation based on OpenAPI specifications or other API definitions, ensuring that your API information is always up to date and accessible for developers. + +4. **TechDocs**: + * A tool for creating and publishing technical documentation. It is integrated directly into Backstage, allowing developers to host and maintain documentation alongside their projects. + +5. **Scaffolder**: + * Allows the rapid creation of new projects based on predefined templates, making it easier to deploy services or infrastructure with consistent best practices. + +6. **CI/CD**: + * Provides integration with CI/CD systems such as GitHub Actions and Jenkins, allowing developers to view build status, logs, and pipelines directly in Backstage. + +7. **Metrics**: + * Offers the ability to monitor and visualize performance metrics for applications, helping teams to keep track of key indicators like response times and error rates. + +8. **Snyk**: + * Used for dependency security analysis, scanning your codebase for vulnerabilities and helping to manage any potential security risks in third-party libraries. + +9. **SonarQube**: + * Integrates with SonarQube to analyze code quality, providing insights into code health, including issues like technical debt, bugs, and security vulnerabilities. + +10. **GitHub**: + +* Enables integration with GitHub repositories, displaying information such as commits, pull requests, and other repository activity, making collaboration more transparent and efficient. + +11. **CircleCI**: + +* Allows seamless integration with CircleCI for managing CI/CD workflows, giving developers insight into build pipelines, test results, and deployment statuses. + +12. **Kubernetes**: + +* Provides tools to manage Kubernetes clusters, including visualizing pod status, logs, and cluster health, helping teams maintain and troubleshoot their cloud-native applications. + +13. **Cloud**: + +* Includes plugins for integration with cloud providers like AWS and Azure, allowing teams to manage cloud infrastructure, services, and billing directly from Backstage. + +14. **OpenTelemetry**: + +* Helps with monitoring distributed applications by integrating OpenTelemetry, offering powerful tools to trace requests, detect performance bottlenecks, and ensure application health. + +15. **Lighthouse**: + +* Integrates Google Lighthouse to analyze web application performance, helping teams identify areas for improvement in metrics like load times, accessibility, and SEO. diff --git a/content/en/docs/solution/tools/Backstage/General Information/_index.md b/content/en/docs-old/v1/solution/tools/Backstage/General Information/_index.md similarity index 98% rename from content/en/docs/solution/tools/Backstage/General Information/_index.md rename to content/en/docs-old/v1/solution/tools/Backstage/General Information/_index.md index 54dabd1..09d2514 100644 --- a/content/en/docs/solution/tools/Backstage/General Information/_index.md +++ b/content/en/docs-old/v1/solution/tools/Backstage/General Information/_index.md @@ -21,4 +21,4 @@ Backstage supports the concept of "Golden Paths," enabling teams to follow recom Modularity and Extensibility: The platform allows for the creation of plugins, enabling users to customize and extend Backstage's functionality to fit their organization's needs. -Backstage provides developers with centralized and convenient access to essential tools and resources, making it an effective solution for supporting Platform Engineering and developing an internal platform portal. \ No newline at end of file +Backstage provides developers with centralized and convenient access to essential tools and resources, making it an effective solution for supporting Platform Engineering and developing an internal platform portal. diff --git a/content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/_index.md b/content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/_index.md similarity index 99% rename from content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/_index.md rename to content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/_index.md index a975456..e83bc96 100644 --- a/content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/_index.md +++ b/content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/_index.md @@ -3,6 +3,7 @@ title = "Plugin Creation Tutorial" weight = 4 +++ Backstage plugins and functionality extensions should be writen in TypeScript/Node.js because backstage is written in those languages + ### General Algorithm for Adding a Plugin in Backstage 1. **Create the Plugin** @@ -33,6 +34,7 @@ Backstage plugins and functionality extensions should be writen in TypeScript/No Run the Backstage development server using `yarn dev` and navigate to your plugin’s route via the sidebar or directly through its URL. Ensure that the plugin’s functionality works as expected. ### Example + All steps will be demonstrated using a simple example plugin, which will request JSON files from the API of jsonplaceholder.typicode.com and display them on a page. 1. Creating test-plugin: @@ -121,8 +123,9 @@ All steps will be demonstrated using a simple example plugin, which will request }; ``` - + 3. Setup routs in plugins/{plugin_id}/src/routs.ts + ```javascript import { createRouteRef } from '@backstage/core-plugin-api'; @@ -133,11 +136,13 @@ All steps will be demonstrated using a simple example plugin, which will request 4. Register the plugin in `packages/app/src/App.tsx` in routes Import of the plugin: + ```javascript import { TestPluginPage } from '@internal/backstage-plugin-test-plugin'; ``` Adding route: + ```javascript const routes = ( @@ -148,6 +153,7 @@ All steps will be demonstrated using a simple example plugin, which will request ``` 5. Add Item to sidebar menu of the backstage in `packages/app/src/components/Root/Root.tsx`. This should be added in to Root object as another SidebarItem + ```javascript export const Root = ({ children }: PropsWithChildren<{}>) => ( @@ -159,11 +165,12 @@ All steps will be demonstrated using a simple example plugin, which will request ); ``` - + 6. Plugin is ready. Run the application + ```bash yarn dev ``` ![example](example_1.png) -![example](example_2.png) \ No newline at end of file +![example](example_2.png) diff --git a/content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/example_1.png b/content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/example_1.png similarity index 100% rename from content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/example_1.png rename to content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/example_1.png diff --git a/content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/example_2.png b/content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/example_2.png similarity index 100% rename from content/en/docs/solution/tools/Backstage/Plugin Creation Tutorial/example_2.png rename to content/en/docs-old/v1/solution/tools/Backstage/Plugin Creation Tutorial/example_2.png diff --git a/content/en/docs/solution/tools/Backstage/_index.md b/content/en/docs-old/v1/solution/tools/Backstage/_index.md similarity index 100% rename from content/en/docs/solution/tools/Backstage/_index.md rename to content/en/docs-old/v1/solution/tools/Backstage/_index.md diff --git a/content/en/docs/solution/tools/CNOE/CNOE-competitors/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/CNOE-competitors/_index.md similarity index 78% rename from content/en/docs/solution/tools/CNOE/CNOE-competitors/_index.md rename to content/en/docs-old/v1/solution/tools/CNOE/CNOE-competitors/_index.md index 22a54ea..dfed2d0 100644 --- a/content/en/docs/solution/tools/CNOE/CNOE-competitors/_index.md +++ b/content/en/docs-old/v1/solution/tools/CNOE/CNOE-competitors/_index.md @@ -9,60 +9,62 @@ description: We compare CNOW - which we see as an orchestrator - with other plat Kratix is a Kubernetes-native framework that helps platform engineering teams automate the provisioning and management of infrastructure and services through custom-defined abstractions called Promises. It allows teams to extend Kubernetes functionality and provide resources in a self-service manner to developers, streamlining the delivery and management of workloads across environments. ### Concepts + Key concepts of Kratix: -- Workload: +* Workload: This is an abstraction representing any application or service that needs to be deployed within the infrastructure. It defines the requirements and dependent resources necessary to execute this task. -- Promise: +* Promise: A "Promise" is a ready-to-use infrastructure or service package. Promises allow developers to request specific resources (such as databases, storage, or computing power) through the standard Kubernetes interface. It’s similar to an operator in Kubernetes but more universal and flexible. Kratix simplifies the development and delivery of applications by automating the provisioning and management of infrastructure and resources through simple Kubernetes APIs. -### Pros of Kratix: -- Resource provisioning automation. Kratix simplifies infrastructure creation for developers through the abstraction of "Promises." This means developers can simply request the necessary resources (like databases, message queues) without dealing with the intricacies of infrastructure management. +### Pros of Kratix +* Resource provisioning automation. Kratix simplifies infrastructure creation for developers through the abstraction of "Promises." This means developers can simply request the necessary resources (like databases, message queues) without dealing with the intricacies of infrastructure management. -- Flexibility and adaptability. Platform teams can customize and adapt Kratix to specific needs by creating custom Promises for various services, allowing the infrastructure to meet the specific requirements of the organization. +* Flexibility and adaptability. Platform teams can customize and adapt Kratix to specific needs by creating custom Promises for various services, allowing the infrastructure to meet the specific requirements of the organization. -- Unified resource request interface. Developers can use a single API (Kubernetes) to request resources, simplifying interaction with infrastructure and reducing complexity when working with different tools and systems. +* Unified resource request interface. Developers can use a single API (Kubernetes) to request resources, simplifying interaction with infrastructure and reducing complexity when working with different tools and systems. -### Cons of Kratix: -- Although Kratix offers great flexibility, it can also lead to more complex setup and platform management processes. Creating custom Promises and configuring their behavior requires time and effort. +### Cons of Kratix +* Although Kratix offers great flexibility, it can also lead to more complex setup and platform management processes. Creating custom Promises and configuring their behavior requires time and effort. -- Kubernetes dependency. Kratix relies on Kubernetes, which makes it less applicable in environments that don’t use Kubernetes or containerization technologies. It might also lead to integration challenges if an organization uses other solutions. +* Kubernetes dependency. Kratix relies on Kubernetes, which makes it less applicable in environments that don’t use Kubernetes or containerization technologies. It might also lead to integration challenges if an organization uses other solutions. -- Limited ecosystem. Kratix doesn’t have as mature an ecosystem as some other infrastructure management solutions (e.g., Terraform, Pulumi). This may limit the availability of ready-made solutions and tools, increasing the amount of manual work when implementing Kratix. +* Limited ecosystem. Kratix doesn’t have as mature an ecosystem as some other infrastructure management solutions (e.g., Terraform, Pulumi). This may limit the availability of ready-made solutions and tools, increasing the amount of manual work when implementing Kratix. ## Humanitec -Humanitec is an Internal Developer Platform (IDP) that helps platform engineering teams automate the provisioning -and management of infrastructure and services through dynamic configuration and environment management. +Humanitec is an Internal Developer Platform (IDP) that helps platform engineering teams automate the provisioning +and management of infrastructure and services through dynamic configuration and environment management. It allows teams to extend their infrastructure capabilities and provide resources in a self-service manner to developers, streamlining the deployment and management of workloads across various environments. ### Concepts + Key concepts of Humanitec: -- Application Definition: +* Application Definition: This is an abstraction where developers define their application, including its services, environments, a dependencies. It abstracts away infrastructure details, allowing developers to focus on building and deploying their applications. -- Dynamic Configuration Management: +* Dynamic Configuration Management: Humanitec automatically manages the configuration of applications and services across multiple environments (e.g., development, staging, production). It ensures consistency and alignment of configurations as applications move through different stages of deployment. -Humanitec simplifies the development and delivery process by providing self-service deployment options while maintaining +Humanitec simplifies the development and delivery process by providing self-service deployment options while maintaining centralized governance and control for platform teams. -### Pros of Humanitec: -- Resource provisioning automation. Humanitec automates infrastructure and environment provisioning, allowing developers to focus on building and deploying applications without worrying about manual configuration. +### Pros of Humanitec +* Resource provisioning automation. Humanitec automates infrastructure and environment provisioning, allowing developers to focus on building and deploying applications without worrying about manual configuration. -- Dynamic environment management. Humanitec manages application configurations across different environments, ensuring consistency and reducing manual configuration errors. +* Dynamic environment management. Humanitec manages application configurations across different environments, ensuring consistency and reducing manual configuration errors. -- Golden Paths. best-practice workflows and processes that guide developers through infrastructure provisioning and application deployment. This ensures consistency and reduces cognitive load by providing a set of recommended practices. +* Golden Paths. best-practice workflows and processes that guide developers through infrastructure provisioning and application deployment. This ensures consistency and reduces cognitive load by providing a set of recommended practices. -- Unified resource management interface. Developers can use Humanitec’s interface to request resources and deploy applications, reducing complexity and improving the development workflow. +* Unified resource management interface. Developers can use Humanitec’s interface to request resources and deploy applications, reducing complexity and improving the development workflow. -### Cons of Humanitec: -- Humanitec is commercially licensed software +### Cons of Humanitec +* Humanitec is commercially licensed software -- Integration challenges. Humanitec’s dependency on specific cloud-native environments can create challenges for organizations with diverse infrastructures or those using legacy systems. +* Integration challenges. Humanitec’s dependency on specific cloud-native environments can create challenges for organizations with diverse infrastructures or those using legacy systems. -- Cost. Depending on usage, Humanitec might introduce additional costs related to the implementation of an Internal Developer Platform, especially for smaller teams. +* Cost. Depending on usage, Humanitec might introduce additional costs related to the implementation of an Internal Developer Platform, especially for smaller teams. -- Harder to customise +* Harder to customise diff --git a/content/en/docs/solution/tools/CNOE/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/_index.md similarity index 100% rename from content/en/docs/solution/tools/CNOE/_index.md rename to content/en/docs-old/v1/solution/tools/CNOE/_index.md diff --git a/content/en/docs-old/v1/solution/tools/CNOE/argocd/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/argocd/_index.md new file mode 100644 index 0000000..6c0da5a --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/CNOE/argocd/_index.md @@ -0,0 +1,141 @@ +--- +title: ArgoCD +weight: 30 +description: A description of ArgoCD and its role in CNOE +--- + +## What is ArgoCD? + +ArgoCD is a Continuous Delivery tool for kubernetes based on GitOps principles. + +> ELI5: ArgoCD is an application running in kubernetes which monitors Git +> repositories containing some sort of kubernetes manifests and automatically +> deploys them to some configured kubernetes clusters. + +From ArgoCD's perspective, applications are defined as custom resource +definitions within the kubernetes clusters that ArgoCD monitors. Such a +definition describes a source git repository that contains kubernetes +manifests, in the form of a helm chart, kustomize, jsonnet definitions or plain +yaml files, as well as a target kubernetes cluster and namespace the manifests +should be applied to. Thus, ArgoCD is capable of deploying applications to +various (remote) clusters and namespaces. + +ArgoCD monitors both the source and the destination. It applies changes from +the git repository that acts as the source of truth for the destination as soon +as they occur, i.e. if a change was pushed to the git repository, the change is +applied to the kubernetes destination by ArgoCD. Subsequently, it checks +whether the desired state was established. For example, it verifies that all +resources were created, enough replicas started, and that all pods are in the +`running` state and healthy. + +## Architecture + +### Core Components + +An ArgoCD deployment mainly consists of 3 main components: + +#### Application Controller + +The application controller is a kubernetes operator that synchronizes the live +state within a kubernetes cluster with the desired state derived from the git +sources. It monitors the live state, can detect derivations, and perform +corrective actions. Additionally, it can execute hooks on life cycle stages +such as pre- and post-sync. + +#### Repository Server + +The repository server interacts with git repositories and caches their state, +to reduce the amount of polling necessary. Furthermore, it is responsible for +generating the kubernetes manifests from the resources within the git +repositories, i.e. executing helm or jsonnet templates. + +#### API Server + +The API Server is a REST/gRPC Service that allows the Web UI and CLI, as well +as other API clients, to interact with the system. It also acts as the callback +for webhooks particularly from Git repository platforms such as GitHub or +Gitlab to reduce repository polling. + +### Others + +The system primarily stores its configuration as kubernetes resources. Thus, +other external storage is not vital. + +Redis +: A Redis store is optional but recommended to be used as a cache to reduce +load on ArgoCD components and connected systems, e.g. git repositories. + +ApplicationSetController +: The ApplicationSet Controller is similar to the Application Controller a +kubernetes operator that can deploy applications based on parameterized +application templates. This allows the deployment of different versions of an +application into various environments from a single template. + +### Overview + +![Conceptual Architecture](./argocd_architecture.webp) + +![Core components](./argocd-core-components.webp) + +## Role in CNOE + +ArgoCD is one of the core components besides gitea/forgejo that is being +bootstrapped by the idpbuilder. Future project creation, e.g. through +backstage, relies on the availability of ArgoCD. + +After the initial bootstrapping phase, effectively all components in the stack +that are deployed in kubernetes are managed by ArgoCD. This includes the +bootstrapped components of gitea and ArgoCD which are onboarded afterward. +Thus, the idpbuilder is only necessary in the bootstrapping phase of the +platform and the technical coordination of all components shifts to ArgoCD +eventually. + +In general, the creation of new projects and applications should take place in +backstop. It is a catalog of software components and best practices that allows +developers to grasp and to manage their software portfolio. Underneath, +however, the deployment of applications and platform components is managed by +ArgoCD. Among others, backstage creates Application CRDs to instruct ArgoCD to +manage deployments and subsequently report on their current state. + +## Glossary + +_Initially shamelessly copied from [the docs](https://argo-cd.readthedocs.io/en/stable/core_concepts/)_ + +Application +: A group of Kubernetes resources as defined by a manifest. This is a Custom Resource Definition (CRD). + +ApplicationSet +: A CRD that is a template that can create multiple parameterized Applications. + +Application source type +: Which Tool is used to build the application. + +Configuration management tool +: See Tool. + +Configuration management plugin +: A custom tool. + +Health +: The health of the application, is it running correctly? Can it serve requests? + +Live state +: The live state of that application. What pods etc are deployed. + +Refresh +: Compare the latest code in Git with the live state. Figure out what is different. + +Sync +: The process of making an application move to its target state. E.g. by applying changes to a Kubernetes cluster. + +Sync status +: Whether or not the live state matches the target state. Is the deployed application the same as Git says it should be? + +Sync operation status +: Whether or not a sync succeeded. + +Target state +: The desired state of an application, as represented by files in a Git repository. + +Tool +: A tool to create manifests from a directory of files. E.g. Kustomize. See Application Source Type. diff --git a/content/en/docs-old/v1/solution/tools/CNOE/argocd/argocd-core-components.webp b/content/en/docs-old/v1/solution/tools/CNOE/argocd/argocd-core-components.webp new file mode 100644 index 0000000..6140f51 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/CNOE/argocd/argocd-core-components.webp differ diff --git a/content/en/docs-old/v1/solution/tools/CNOE/argocd/argocd_architecture.webp b/content/en/docs-old/v1/solution/tools/CNOE/argocd/argocd_architecture.webp new file mode 100644 index 0000000..adee037 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/CNOE/argocd/argocd_architecture.webp differ diff --git a/content/en/docs/solution/tools/CNOE/idpbuilder/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/_index.md similarity index 100% rename from content/en/docs/solution/tools/CNOE/idpbuilder/_index.md rename to content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/_index.md diff --git a/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/hostname-routing-proxy.png b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/hostname-routing-proxy.png new file mode 100644 index 0000000..d100481 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/hostname-routing-proxy.png differ diff --git a/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/hostname-routing.png b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/hostname-routing.png new file mode 100644 index 0000000..a6b9742 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/hostname-routing.png differ diff --git a/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/http-routing.md b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/http-routing.md new file mode 100644 index 0000000..f2da697 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/http-routing.md @@ -0,0 +1,178 @@ +--- +title: Http Routing +weight: 100 +--- + +### Routing switch + +The idpbuilder supports creating platforms using either path based or subdomain +based routing: + +```shell +idpbuilder create --log-level debug --package https://github.com/cnoe-io/stacks//ref-implementation +``` + +```shell +idpbuilder create --use-path-routing --log-level debug --package https://github.com/cnoe-io/stacks//ref-implementation +``` + +However, even though argo does report all deployments as green eventually, not +the entire demo is actually functional (verification?). This is due to +hardcoded values that for example point to the path-routed location of gitea to +access git repos. Thus, backstage might not be able to access them. + +Within the demo / ref-implementation, a simple search & replace is suggested to +change urls to fit the given environment. But proper scripting/templating could +take care of that as the hostnames and necessary properties should be +available. This is, however, a tedious and repetitive task one has to keep in +mind throughout the entire system, which might lead to an explosion of config +options in the future. Code that addresses correct routing is located in both +the stack templates and the idpbuilder code. + +### Cluster internal routing + +For the most part, components communicate with either the cluster API using the +default DNS or with each other via http(s) using the public DNS/hostname (+ +path-routing scheme). The latter is necessary due to configs that are visible +and modifiable by users. This includes for example argocd config for components +that has to sync to a gitea git repo. Using the same URL for internal and +external resolution is imperative. + +The idpbuilder achieves transparent internal DNS resolution by overriding the +public DNS name in the cluster's internal DNS server (coreDNS). Subsequently, +within the cluster requests to the public hostnames resolve to the IP of the +internal ingress controller service. Thus, internal and external requests take +a similar path and run through proper routing (rewrites, ssl/tls, etc). + +### Conclusion + +One has to keep in mind that some specific app features might not +work properly or without haxx when using path based routing (e.g. docker +registry in gitea). Futhermore, supporting multiple setup strategies will +become cumbersome as the platforms grows. We should probably only support one +type of setup to keep the system as simple as possible, but allow modification +if necessary. + +DNS solutions like `nip.io` or the already used `localtest.me` mitigate the +need for path based routing + +## Excerpt + +HTTP is a cornerstone of the internet due to its high flexibility. Starting +from HTTP/1.1 each request in the protocol contains among others a path and a +`Host`name in its header. While an HTTP request is sent to a single IP address +/ server, these two pieces of data allow (distributed) systems to handle +requests in various ways. + +```shell +$ curl -v http://google.com/something > /dev/null + +* Connected to google.com (2a00:1450:4001:82f::200e) port 80 +* using HTTP/1.x +> GET /something HTTP/1.1 +> Host: google.com +> User-Agent: curl/8.10.1 +> Accept: */* +... +``` + +### Path-Routing + +Imagine requesting `http://myhost.foo/some/file.html`, in a simple setup, the +web server `myhost.foo` resolves to would serve static files from some +directory, `//some/file.html`. + +In more complex systems, one might have multiple services that fulfill various +roles, for example a service that generates HTML sites of articles from a CMS +and a service that can convert images into various formats. Using path-routing +both services are available on the same host from a user's POV. + +An article served from `http://myhost.foo/articles/news1.html` would be +generated from the article service and points to an image +`http://myhost.foo/images/pic.jpg` which in turn is generated by the image +converter service. When a user sends an HTTP request to `myhost.foo`, they hit +a reverse proxy which forwards the request based on the requested path to some +other system, waits for a response, and subsequently returns that response to +the user. + +![Path-Routing Example](../path-routing.png) + +Such a setup hides the complexity from the user and allows the creation of +large distributed, scalable systems acting as a unified entity from the +outside. Since everything is served on the same host, the browser is inclined +to trust all downstream services. This allows for easier 'communication' +between services through the browser. For example, cookies could be valid for +the entire host and thus authentication data could be forwarded to requested +downstream services without the user having to explicitly re-authenticate. + +Furthermore, services 'know' their user-facing location by knowing their path +and the paths to other services as paths are usually set as a convention and / +or hard-coded. In practice, this makes configuration of the entire system +somewhat easier, especially if you have various environments for testing, +development, and production. The hostname of the system does not matter as one +can use hostname-relative URLs, e.g. `/some/service`. + +Load balancing is also easily achievable by multiplying the number of service +instances. Most reverse proxy systems are able to apply various load balancing +strategies to forward traffic to downstream systems. + +Problems might arise if downstream systems are not built with path-routing in +mind. Some systems require to be served from the root of a domain, see for +example the container registry spec. + + +### Hostname-Routing + +Each downstream service in a distributed system is served from a different +host, typically a subdomain, e.g. `serviceA.myhost.foo` and +`serviceB.myhost.foo`. This gives services full control over their respective +host, and even allows them to do path-routing within each system. Moreover, +hostname-routing allows the entire system to create more flexible and powerful +routing schemes in terms of scalability. Intra-system communication becomes +somewhat harder as the browser treats each subdomain as a separate host, +shielding cookies for example form one another. + +Each host that serves some services requires a DNS entry that has to be +published to the clients (from some DNS server). Depending on the environment +this can become quite tedious as DNS resolution on the internet and intranets +might have to deviate. This applies to intra-cluster communication as well, as +seen with the idpbuilder's platform. In this case, external DNS resolution has +to be replicated within the cluster to be able to use the same URLs to address +for example gitea. + +The following example depicts DNS-only routing. By defining separate DNS +entries for each service / subdomain requests are resolved to the respective +servers. In theory, no additional infrastructure is necessary to route user +traffic to each service. However, as services are completely separated other +infrastructure like authentication possibly has to be duplicated. + +![DNS-only routing](../hostname-routing.png) + +When using hostname based routing, one does not have to set different IPs for +each hostname. Instead, having multiple DNS entries pointing to the same set of +IPs allows re-using existing infrastructure. As shown below, a reverse proxy is +able to forward requests to downstream services based on the `Host` request +parameter. This way specific hostname can be forwarded to a defined service. + +![Hostname Proxy](../hostname-routing-proxy.png) + +At the same time, one could imagine a multi-tenant system that differentiates +customer systems by name, e.g. `tenant-1.cool.system` and +`tenant-2.cool.system`. Configured as a wildcard-sytle domain, `*.cool.system` +could point to a reverse proxy that forwards requests to a tenants instance of +a system, allowing re-use of central infrastructure while still hosting +separate systems per tenant. + + +The implicit dependency on DNS resolution generally makes this kind of routing +more complex and error-prone as changes to DNS server entries are not always +possible or modifiable by everyone. Also, local changes to your `/etc/hosts` +file are a constant pain and should be seen as a dirty hack. As mentioned +above, dynamic DNS solutions like `nip.io` are often helpful in this case. + +### Conclusion + +Path and hostname based routing are the two most common methods of HTTP traffic +routing. They can be used separately but more often they are used in +conjunction. Due to HTTP's versatility other forms of HTTP routing, for example +based on the `Content-Type` Header are also very common. diff --git a/content/en/docs/solution/tools/CNOE/idpbuilder/installation/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/installation/_index.md similarity index 93% rename from content/en/docs/solution/tools/CNOE/idpbuilder/installation/_index.md rename to content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/installation/_index.md index d919ab5..fbb475d 100644 --- a/content/en/docs/solution/tools/CNOE/idpbuilder/installation/_index.md +++ b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/installation/_index.md @@ -11,10 +11,10 @@ Windows and Mac users already utilize a virtual machine for the Docker Linux env ### Prerequisites -- Docker Engine -- Go -- kubectl -- kind +* Docker Engine +* Go +* kubectl +* kind ### Build process @@ -76,28 +76,28 @@ idpbuilder delete cluster CNOE provides two implementations of an IDP: -- Amazon AWS implementation -- KIND implementation +* Amazon AWS implementation +* KIND implementation Both are not useable to run on bare metal or an OSC instance. The Amazon implementation is complex and makes use of Terraform which is currently not supported by either base metal or OSC. Therefore the KIND implementation is used and customized to support the idpbuilder installation. The idpbuilder is also doing some network magic which needs to be replicated. Several prerequisites have to be provided to support the idpbuilder on bare metal or the OSC: -- Kubernetes dependencies -- Network dependencies -- Changes to the idpbuilder - +* Kubernetes dependencies +* Network dependencies +* Changes to the idpbuilder + ### Prerequisites Talos Linux is choosen for a bare metal Kubernetes instance. -- talosctl -- Go -- Docker Engine -- kubectl -- kustomize -- helm -- nginx +* talosctl +* Go +* Docker Engine +* kubectl +* kustomize +* helm +* nginx As soon as the idpbuilder works correctly on bare metal, the next step is to apply it to an OSC instance. @@ -338,14 +338,14 @@ talosctl cluster destroy Required: -- Add *.cnoe.localtest.me to the Talos cluster DNS, pointing to the host device IP address, which runs nginx. +* Add *.cnoe.localtest.me to the Talos cluster DNS, pointing to the host device IP address, which runs nginx. -- Create a SSL certificate with `cnoe.localtest.me` as common name. Edit the nginx config to load this certificate. Configure idpbuilder to distribute this certificate instead of the one idpbuilder distributes by idefault. +* Create a SSL certificate with `cnoe.localtest.me` as common name. Edit the nginx config to load this certificate. Configure idpbuilder to distribute this certificate instead of the one idpbuilder distributes by idefault. Optimizations: -- Implement an idpbuilder uninstall. This is specially important when working on the OSC instance. +* Implement an idpbuilder uninstall. This is specially important when working on the OSC instance. -- Remove or configure gitea.cnoe.localtest.me, it seems not to work even in the idpbuilder local installation with KIND. +* Remove or configure gitea.cnoe.localtest.me, it seems not to work even in the idpbuilder local installation with KIND. -- Improvements to the idpbuilder to support Kubernetes instances other then KIND. This can either be done by parametrization or by utilizing Terraform / OpenTOFU or Crossplane. \ No newline at end of file +* Improvements to the idpbuilder to support Kubernetes instances other then KIND. This can either be done by parametrization or by utilizing Terraform / OpenTOFU or Crossplane. diff --git a/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/path-routing.png b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/path-routing.png new file mode 100644 index 0000000..0e5a576 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/CNOE/idpbuilder/path-routing.png differ diff --git a/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/_index.md new file mode 100644 index 0000000..8cc2ff2 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/_index.md @@ -0,0 +1,5 @@ +--- +title: Included Backstage Templates +weight: 2 +description: Here you will find information about backstage templates that are included into idpbuilder's ref-implementation +--- \ No newline at end of file diff --git a/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/basic-argo-workflow/_index.md b/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/basic-argo-workflow/_index.md new file mode 100644 index 0000000..110bb03 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/basic-argo-workflow/_index.md @@ -0,0 +1,19 @@ ++++ +title = "Template for basic Argo Workflow" +weight = 4 ++++ + +# Backstage Template for Basic Argo Workflow with Spark Job + +This Backstage template YAML automates the creation of an Argo Workflow for Kubernetes that includes a basic Spark job, providing a convenient way to configure and deploy workflows involving data processing or machine learning jobs. Users can define key parameters, such as the application name and the path to the main Spark application file. The template creates necessary Kubernetes resources, publishes the application code to a Gitea Git repository, registers the application in the Backstage catalog, and deploys it via ArgoCD for easy CI/CD management. + +## Use Case + +This template is designed for teams that need a streamlined approach to deploy and manage data processing or machine learning jobs using Spark within an Argo Workflow environment. It simplifies the deployment process and integrates the application with a CI/CD pipeline. The template performs the following: + +* **Workflow and Spark Job Setup**: Defines a basic Argo Workflow and configures a Spark job using the provided application file path, ideal for data processing tasks. +* **Repository Setup**: Publishes the workflow configuration to a Gitea repository, enabling version control and easy updates to the job configuration. +* **ArgoCD Integration**: Creates an ArgoCD application to manage the Spark job deployment, ensuring continuous delivery and synchronization with Kubernetes. +* **Backstage Registration**: Registers the application in Backstage, making it easily discoverable and manageable through the Backstage catalog. + +This template boosts productivity by automating steps required for setting up Argo Workflows and Spark jobs, integrating version control, and enabling centralized management and visibility, making it ideal for projects requiring efficient deployment and scalable data processing solutions. diff --git a/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/basic-kubernetes-deployment/_idex.md b/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/basic-kubernetes-deployment/_idex.md new file mode 100644 index 0000000..80e668c --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/CNOE/included-backstage-templates/basic-kubernetes-deployment/_idex.md @@ -0,0 +1,19 @@ ++++ +title = "Template for basic kubernetes deployment" +weight = 4 ++++ + +# Backstage Template for Kubernetes Deployment + +This Backstage template YAML automates the creation of a basic Kubernetes Deployment, aimed at simplifying the deployment and management of applications in Kubernetes for the user. The template allows users to define essential parameters, such as the application’s name, and then creates and configures the Kubernetes resources, publishes the application code to a Gitea Git repository, and registers the application in the Backstage catalog for tracking and management. + +## Use Case + +The template is designed for teams needing a streamlined approach to deploy applications in Kubernetes while automatically configuring their CI/CD pipelines. It performs the following: + +* **Deployment Creation**: A Kubernetes Deployment YAML is generated based on the provided application name, specifying a basic setup with an Nginx container. +* **Repository Setup**: Publishes the deployment code in a Gitea repository, allowing for version control and future updates. +* **ArgoCD Integration**: Automatically creates an ArgoCD application for the deployment, facilitating continuous delivery and synchronization with Kubernetes. +* **Backstage Registration**: Registers the application in Backstage to make it discoverable and manageable via the Backstage catalog. + +This template enhances productivity by automating several steps required for deployment, version control, and registration, making it ideal for projects where fast, consistent deployment and centralized management are required. diff --git a/content/en/docs/solution/tools/CNOE/verification.md b/content/en/docs-old/v1/solution/tools/CNOE/verification.md similarity index 93% rename from content/en/docs/solution/tools/CNOE/verification.md rename to content/en/docs-old/v1/solution/tools/CNOE/verification.md index af36de9..4f60e77 100644 --- a/content/en/docs/solution/tools/CNOE/verification.md +++ b/content/en/docs-old/v1/solution/tools/CNOE/verification.md @@ -14,17 +14,17 @@ most part they adhere to the general definition: Examples: -- Form validation before processing the data -- Compiler checking syntax -- Rust's borrow checker +* Form validation before processing the data +* Compiler checking syntax +* Rust's borrow checker > Verification describes testing if your 'thing' complies with your spec Examples: -- Unit tests -- Testing availability (ping, curl health check) -- Checking a ZKP of some computation +* Unit tests +* Testing availability (ping, curl health check) +* Checking a ZKP of some computation --- diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/_index.md b/content/en/docs-old/v1/solution/tools/Crossplane/_index.md new file mode 100644 index 0000000..a6f2168 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Crossplane/_index.md @@ -0,0 +1,4 @@ +--- +title: Crossplane +description: Crossplane is a tool to provision cloud resources. it can act as a backend for platform orchestrators as well +--- diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/_index.md b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/_index.md new file mode 100644 index 0000000..cf3a0a2 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/_index.md @@ -0,0 +1,764 @@ +--- +title: Howto develop a crossplane kind provider +weight: 1 +description: A provider-kind allows using crossplane locally +--- + +To support local development and usage of crossplane compositions, a crossplane provider is needed. +Every big hyperscaler already has support in crossplane (e.g. provider-gcp and provider-aws). + +Each provider has two main parts, the provider config and implementations of the cloud resources. + +The provider config takes the credentials to log into the cloud provider and provides a token +(e.g. a kube config or even a service account) that the implementations can use to provision cloud resources. + +The implementations of the cloud resources reflect each type of cloud resource, typical resources are: + +* S3 Bucket +* Nodepool +* VPC +* GkeCluster + +## Architecture of provider-kind + +To have the crossplane concepts applied, the provider-kind consists of two components: kindserver and provider-kind. + +The kindserver is used to manage local kind clusters. It provides an HTTP REST interface to create, delete and get informations of a running cluster, using an Authorization HTTP header field used as a password: + +![kindserver_interface](./kindserver_interface.png) + +The two properties to connect the provider-kind to kindserver are the IP address and password of kindserver. The IP address is required because the kindserver needs to be executed outside the kind cluster, directly on the local machine, as it need to control +kind itself: + +![kindserver_provider-kind](./kindserver_provider-kind.png) + +The provider-kind provides two crossplane elements, the `ProviderConfig` and `KindCluster` as the (only) cloud resource. The +`ProviderConfig` is configured with the IP address and password of the running kindserver. The `KindCluster` type is configured +to use the provided `ProviderConfig`. Kind clusters can be managed by adding and removing kubernetes manifests of type +`KindCluster`. The crossplane reconcilation loop makes use of the kindserver HTTP GET method to see if a new cluster needs to be +created by HTTP POST or being removed by HTTP DELETE. + +The password used by `ProviderConfig` is configured as an kubernetes secret, while the kindserver IP address is configured +inside the `ProviderConfig` as the field endpoint. + +When provider-kind created a new cluster by processing a `KindCluster` manifest, the two providers which are used to deploy applications, provider-helm and provider-kubernetes, can be configured to use the `KindCluster`. + +![provider-kind_providerconfig](./provider-kind_providerconfig.png) + +A Crossplane composition can be created by concaternating different providers and their objects. A composition is managed as a +custom resource definition and defined in a single file. + +![composition](./composition.png) + +## Configuration + +Two kubernetes manifests are defines by provider-kind: `ProviderConfig` and `KindCluster`. The third needed kubernetes +object is a secret. + +The need for the following inputs arise when developing a provider-kind: + +* kindserver password as a kubernetes secret +* endpoint, the IP address of the kindserver as a detail of `ProviderConfig` +* kindConfig, the kind configuration file as a detail of `KindCluster` + +The following outputs arise: + +* kubernetesVersion, kubernetes version of a created kind cluster as a detail of `KindCluster` +* internalIP, IP address of a created kind cluster as a detail of `KindCluster` +* readiness as a detail of `KindCluster` +* kube config of a created kind cluster as a kubernetes secret reference of `KindCluster` + +### Inputs + +#### kindserver password + +The kindserver password needs to be defined first. It is realized as a kubernetes secret and contains the password +which the kindserver has been configured with: + +``` +apiVersion: v1 +data: + credentials: MTIzNDU= +kind: Secret +metadata: + name: kind-provider-secret + namespace: crossplane-system +type: Opaque +``` + +#### endpoint + +The IP address of the kindserver `endpoint` is configured in the provider-kind `ProviderConfig`. This config also references the kindserver password (`kind-provider-secret`): + +``` +apiVersion: kind.crossplane.io/v1alpha1 +kind: ProviderConfig +metadata: + name: kind-provider-config +spec: + credentials: + source: Secret + secretRef: + namespace: crossplane-system + name: kind-provider-secret + key: credentials + endpoint: + url: https://172.18.0.1:7443/api/v1/kindserver +``` + +It is suggested that the kindserver runs on the IP of the docker host, so that all kind clusters can access it without extra routing. + +#### kindConfig + +The kind config is provided as the field `kindConfig` in each `KindCluster` manifest. The manifest also references the provider-kind `ProviderConfig` (`kind-provider-config` in the `providerConfigRef` field): + +``` +apiVersion: container.kind.crossplane.io/v1alpha1 +kind: KindCluster +metadata: + name: example-kind-cluster +spec: + forProvider: + kindConfig: | + kind: Cluster + apiVersion: kind.x-k8s.io/v1alpha4 + nodes: + - role: control-plane + kubeadmConfigPatches: + - | + kind: InitConfiguration + nodeRegistration: + kubeletExtraArgs: + node-labels: "ingress-ready=true" + extraPortMappings: + - containerPort: 80 + hostPort: 80 + protocol: TCP + - containerPort: 443 + hostPort: 443 + protocol: TCP + containerdConfigPatches: + - |- + [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gitea.cnoe.localtest.me:443"] + endpoint = ["https://gitea.cnoe.localtest.me"] + [plugins."io.containerd.grpc.v1.cri".registry.configs."gitea.cnoe.localtest.me".tls] + insecure_skip_verify = true + providerConfigRef: + name: kind-provider-config + writeConnectionSecretToRef: + namespace: default + name: kind-connection-secret +``` + +After the kind cluster has been created, it's kube config is stored in a kubernetes secret `kind-connection-secret` which `writeConnectionSecretToRef` references. + +### Outputs + +The three outputs can be recieved by getting the `KindCluster` manifest after the cluster has been created. The `KindCluster` is +available for reading even before the cluster has been created, but the three outputfields are empty until then. The ready state +will also switch from `false` to `true` after the cluster has finally been created. + +#### kubernetesVersion, internalIP and readiness + +This fields can be recieved with a standard kubectl get command: + +``` +$ kubectl get kindclusters kindcluster-fw252 -o yaml +... +status: + atProvider: + internalIP: 192.168.199.19 + kubernetesVersion: v1.31.0 + conditions: + - lastTransitionTime: "2024-11-12T18:22:39Z" + reason: Available + status: "True" + type: Ready + - lastTransitionTime: "2024-11-12T18:21:38Z" + reason: ReconcileSuccess + status: "True" + type: Synced +``` + +#### kube config + +The kube config is stored in a kubernetes secret (`kind-connection-secret`) which can be accessed after the cluster has been +created: + +``` +$ kubectl get kindclusters kindcluster-fw252 -o yaml +... + writeConnectionSecretToRef: + name: kind-connection-secret + namespace: default +... + +$ kubectl get secret kind-connection-secret +NAME TYPE DATA AGE +kind-connection-secret connection.crossplane.io/v1alpha1 2 107m +``` + +The API endpoint of the new cluster `endpoint` and it's kube config `kubeconfig` is stored in that secret. This values are set in +the Obbserve function of the kind controller of provider-kind. They are set with the special crossplane function managed +ExternalObservation. + +## The reconciler loop of a crossplane provider + +The reconciler loop is the heart of every crossplane provider. As it is coupled async, it's best to describe it working in words: + +Internally, the Connect function get's triggered in the kindcluster controller `internal/controller/kindcluster/kindcluster.go` +first, to setup the provider and configure it with the kindserver password and IP address of the kindserver. + +After that the provider-kind has been configured with the kindserver secret and it's `ProviderConfig`, the provider is ready to +be activated by applying a `KindCluster` manifest to kubernetes. + +When the user applies a new `KindCluster` manifest, a observe loop is started. The provider regulary triggers the `Observe` +function of the controller. As there has yet been created nothing yet, the controller will return +`managed.ExternalObservation{ResourceExists: false}` to signal that the kind cluster resource has not been created yet. +As the is a kindserver SDK available, the controller is using the `Get` function of the SDK to query the kindserver. + +The `KindCluster` is already applied and can be retrieved with `kubectl get kindclusters`. As the cluster has not been +created yet, it readiness state is `false`. + +In parallel, the `Create` function is triggered in the controller. This function has acces to the desired kind config +`cr.Spec.ForProvider.KindConfig` and the name of the kind cluster `cr.ObjectMeta.Name`. It can now call the kindserver SDK to +create a new cluster with the given config and name. The create function is supposed not to run too long, therefore +it directly returns in the case of provider-kind. The kindserver already knows the name of the new cluster and even it is +not yet ready, it will respond with a partial success. + +The observe loops is triggered regulary in parallel. It will be triggered after the create call but before the kind cluster has been +created. Now it will get a step further. It gets the information of kindserver, that the cluster is already knows, but not +finished creating yet. + +After the cluster has been finished creating, the kindserver has all important informations for the provider-kind. That is +The API server endpoint of the new cluster and it's kube config. After another round of the observer loop, the controller +gets now the full set of information of kindcluster (cluster ready, it's API server endpoint and it's kube config). +When this informations has been recieved by the kindserver SDk in form of a JSON file, it is able to signal successfull +creating of the cluster. That is done by returning the following structure from inside the observe function: + +``` + return managed.ExternalObservation{ + ResourceExists: true, + ResourceUpToDate: true, + ConnectionDetails: managed.ConnectionDetails{ + xpv1.ResourceCredentialsSecretEndpointKey: []byte(clusterInfo.Endpoint), + xpv1.ResourceCredentialsSecretKubeconfigKey: []byte(clusterInfo.KubeConfig), + }, + }, nil +``` + +Note that the managed.ConnectionDetails will automatically write the API server endpoint and it's kube config to the kubernetes +secret which `writeConnectionSecretToRef`of `KindCluster` points to. + +It also set the availability flag before returning, that will mark the `KindCluster` as ready: + +``` + cr.Status.SetConditions(xpv1.Available()) +``` + +Before returning, it will also set the informations which are transfered into fields of `kindCluster` which can be retrieved by a +`kubectl get`, the `kubernetesVersion` and the `internalIP` fields: + +``` + cr.Status.AtProvider.KubernetesVersion = clusterInfo.K8sVersion + cr.Status.AtProvider.InternalIP = clusterInfo.NodeIp +``` + +Now the `KindCluster` is setup completly and when it's data is retrieved by `kubectl get`, all data is available and it's readiness +is set to `true`. + +The observer loops continies to be called to enable drift detection. That detection is currently not implemented, but is +prepared for future implementations. When the observer function would detect that the kind cluster with a given name is set +up with a kind config other then the desired, the controller would call the controller `Update` function, which would +delete the currently runnign kind cluster and recreates it with the desired kind config. + +When the user is deleting the `KindCluster` manifest at a later stage, the `Delete` function of the controller is triggered +to call the kindserver SDK to delete the cluster with the given name. The observer loop will acknowledge that the cluster +is deleted successfully by retrieving `kind cluster not found` when the deletion had been successfull. If not, the controller +will trigger the delete function in a loop as well, until the kind cluster has been deleted. + +That assembles the reconciler loop. + +## kind API server IP address + +Each newly created kind cluster has a practially random kubernetes API server endpoint. As the IP address of a new kind cluster +can't determined before creation, the kindserver manages the API server field of the kind config. It will map all +kind server kubernets API endpoints on it's own IP address, but on different ports. That garantees that alls kind +clusters can access the kubernetes API endpoints of all other kind clusters by using the docker host IP of the kindserver +itself. This is needed as the kube config hardcodes the kubernets API server endpoint. By using the docker host IP +but with different ports, every usage of a kube config from one kind cluster to another is working successfully. + +The management of the kind config in the kindserver is implemented in the `Post` function of the kindserver `main.go` file. + +## Create a the crossplane provider-kind + +The official way for creating crossplane providers is to use the provider-template. Process the following steps to create +a new provider. + +First, clone the provider-template. The commit ID when this howto has been written is 2e0b022c22eb50a8f32de2e09e832f17161d7596. +Rename the new folder after cloning. + +``` +git clone https://github.com/crossplane/provider-template.git +mv provider-template provider-kind +cd provider-kind/ +``` + +The informations in the provided README.md are incomplete. Folow this steps to get it running: + +> Please use bash for the next commands (`${type,,}` e.g. is not a mistake) + +``` +make submodules +export provider_name=Kind # Camel case, e.g. GitHub +make provider.prepare provider=${provider_name} +export group=container # lower case e.g. core, cache, database, storage, etc. +export type=KindCluster # Camel casee.g. Bucket, Database, CacheCluster, etc. +make provider.addtype provider=${provider_name} group=${group} kind=${type} +sed -i "s/sample/${group}/g" apis/${provider_name,,}.go +sed -i "s/mytype/${type,,}/g" internal/controller/${provider_name,,}.go +``` + +Patch the Makefile: + +``` +dev: $(KIND) $(KUBECTL) + @$(INFO) Creating kind cluster ++ @$(KIND) delete cluster --name=$(PROJECT_NAME)-dev + @$(KIND) create cluster --name=$(PROJECT_NAME)-dev + @$(KUBECTL) cluster-info --context kind-$(PROJECT_NAME)-dev +- @$(INFO) Installing Crossplane CRDs +- @$(KUBECTL) apply --server-side -k https://github.com/crossplane/crossplane//cluster?ref=master ++ @$(INFO) Installing Crossplane ++ @helm install crossplane --namespace crossplane-system --create-namespace crossplane-stable/crossplane --wait + @$(INFO) Installing Provider Template CRDs + @$(KUBECTL) apply -R -f package/crds + @$(INFO) Starting Provider Template controllers +``` + +Generate, build and execute the new provider-kind: + +``` +make generate +make build +make dev +``` + +Now it's time to add the required fields (internalIP, endpoint, etc.) to the spec fields in go api sources found in: + +* apis/container/v1alpha1/kindcluster_types.go +* apis/v1alpha1/providerconfig_types.go + +The file `apis/kind.go` may also be modified. The word `sample` can be replaces with `container` in our case. + +When that's done, the yaml specifications needs to be modified to also include the required fields (internalIP, endpoint, etc.) + +Next, a kindserver SDK can be implemented. That is a helper class which encapsulates the get, create and delete HTTP calls to the kindserver. Connection infos (kindserver IP address and password) will be stored by the constructor. + +After that we can add the usage of the kindclient sdk in kindcluster controller `internal/controller/kindcluster/kindcluster.go`. + +Finally we can update the `Makefile` to better handle the primary kind cluster creation and adding of a cluster role binding +so that crossplane can access the `KindCluster` objects. Examples and updating the README.md will finish the development. + +All this steps are documented in: https://forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/DevFW/provider-kind/pulls/1 + +## Publish the provider-kind to a user defined docker registry + +Every provider-kind release needs to be tagged first in the git repository: + +``` +git tag v0.1.0 +git push origin v0.1.0 +``` + +Next, make sure you have docker logged in into the target registry: + +``` +docker login forgejo.edf-bootstrap.cx.fg1.ffm.osc.live +``` + +Now it's time to specify the target registry, build the provider-kind for ARM64 and AMD64 CPU architectures and publish it to the target registry: + +``` +XPKG_REG_ORGS_NO_PROMOTE="" XPKG_REG_ORGS="forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz" make build.all publish BRANCH_NAME=main +``` + +The parameter `BRANCH_NAME=main` is needed when the tagging and publishing happens from another branch. The version of the provider-kind that of the tag name. The output of the make call ends then like this: + +``` +$ XPKG_REG_ORGS_NO_PROMOTE="" XPKG_REG_ORGS="forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz" make build.all publish BRANCH_NAME=main +... +14:09:19 [ .. ] Skipping image publish for docker.io/provider-kind:v0.1.0 +Publish is deferred to xpkg machinery +14:09:19 [ OK ] Image publish skipped for docker.io/provider-kind:v0.1.0 +14:09:19 [ .. ] Pushing package forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz/provider-kind:v0.1.0 +xpkg pushed to forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz/provider-kind:v0.1.0 +14:10:19 [ OK ] Pushed package forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz/provider-kind:v0.1.0 +``` + +After publishing, the provider-kind can be installed in-cluster similar to other providers like +provider-helm and provider-kubernetes. To install it apply the following manifest: + +``` +apiVersion: pkg.crossplane.io/v1 +kind: Provider +metadata: + name: provider-kind +spec: + package: forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz/provider-kind:v0.1.0 +``` + +The output of `kubectl get providers`: + +``` +$ kubectl get providers +NAME INSTALLED HEALTHY PACKAGE AGE +provider-helm True True xpkg.upbound.io/crossplane-contrib/provider-helm:v0.19.0 38m +provider-kind True True forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/richardrobertreitz/provider-kind:v0.1.0 39m +provider-kubernetes True True xpkg.upbound.io/crossplane-contrib/provider-kubernetes:v0.15.0 38m +``` + +The provider-kind can now be used. + +## Crossplane Composition `edfbuilder` + +Together with the implemented provider-kind and it's config to create a composition which can create kind clusters and +the ability to deploy helm and kubernetes objects in the newly created cluster. + +A composition is realized as a custom resource definition (CRD) considting of three parts: + +* A definition +* A composition +* One or more deplyoments of the composition + +### definition.yaml + +The definition of the CRD will most probably contain one additional fiel, the ArgoCD repository URL to easily select +the stacks which should be deployed: + +``` +apiVersion: apiextensions.crossplane.io/v1 +kind: CompositeResourceDefinition +metadata: + name: edfbuilders.edfbuilder.crossplane.io +spec: + connectionSecretKeys: + - kubeconfig + group: edfbuilder.crossplane.io + names: + kind: EDFBuilder + listKind: EDFBuilderList + plural: edfbuilders + singular: edfbuilders + versions: + - name: v1alpha1 + served: true + referenceable: true + schema: + openAPIV3Schema: + description: A EDFBuilder is a composite resource that represents a K8S Cluster with edfbuilder Installed + type: object + properties: + spec: + type: object + properties: + repoURL: + type: string + description: URL to ArgoCD stack of stacks repo + required: + - repoURL +``` + +### composition.yaml + +This is a shortened version of the file `examples/composition_deprecated/composition.yaml`. It combines a `KindCluster` with +deployments of of provider-helm and provider-kubernetes. Note that the `ProviderConfig` and the kindserver secret has already been +applied to kubernetes (by the Makefile) before applying this composition. + +``` +apiVersion: apiextensions.crossplane.io/v1 +kind: Composition +metadata: + name: edfbuilders.edfbuilder.crossplane.io +spec: + writeConnectionSecretsToNamespace: crossplane-system + compositeTypeRef: + apiVersion: edfbuilder.crossplane.io/v1alpha1 + kind: EDFBuilder + resources: + + ### kindcluster + - base: + apiVersion: container.kind.crossplane.io/v1alpha1 + kind: KindCluster + metadata: + name: example + spec: + forProvider: + kindConfig: | + kind: Cluster + apiVersion: kind.x-k8s.io/v1alpha4 + nodes: + - role: control-plane + kubeadmConfigPatches: + - | + kind: InitConfiguration + nodeRegistration: + kubeletExtraArgs: + node-labels: "ingress-ready=true" + extraPortMappings: + - containerPort: 80 + hostPort: 80 + protocol: TCP + - containerPort: 443 + hostPort: 443 + protocol: TCP + containerdConfigPatches: + - |- + [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gitea.cnoe.localtest.me:443"] + endpoint = ["https://gitea.cnoe.localtest.me"] + [plugins."io.containerd.grpc.v1.cri".registry.configs."gitea.cnoe.localtest.me".tls] + insecure_skip_verify = true + providerConfigRef: + name: example-provider-config + writeConnectionSecretToRef: + namespace: default + name: my-connection-secret + + ### helm provider config + - base: + apiVersion: helm.crossplane.io/v1beta1 + kind: ProviderConfig + spec: + credentials: + source: Secret + secretRef: + namespace: default + name: my-connection-secret + key: kubeconfig + patches: + - fromFieldPath: metadata.name + toFieldPath: metadata.name + readinessChecks: + - type: None + + ### ingress-nginx + - base: + apiVersion: helm.crossplane.io/v1beta1 + kind: Release + metadata: + annotations: + crossplane.io/external-name: ingress-nginx + spec: + rollbackLimit: 99999 + forProvider: + chart: + name: ingress-nginx + repository: https://kubernetes.github.io/ingress-nginx + version: 4.11.3 + namespace: ingress-nginx + values: + controller: + updateStrategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + hostPort: + enabled: true + terminationGracePeriodSeconds: 0 + service: + type: NodePort + watchIngressWithoutClass: true + + nodeSelector: + ingress-ready: "true" + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Equal" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/control-plane" + operator: "Equal" + effect: "NoSchedule" + + publishService: + enabled: false + extraArgs: + publish-status-address: localhost + # added for idpbuilder + enable-ssl-passthrough: "" + + # added for idpbuilder + allowSnippetAnnotations: true + + # added for idpbuilder + config: + proxy-buffer-size: 32k + use-forwarded-headers: "true" + patches: + - fromFieldPath: metadata.name + toFieldPath: spec.providerConfigRef.name + + ### kubernetes provider config + - base: + apiVersion: kubernetes.crossplane.io/v1alpha1 + kind: ProviderConfig + spec: + credentials: + source: Secret + secretRef: + namespace: default + name: my-connection-secret + key: kubeconfig + patches: + - fromFieldPath: metadata.name + toFieldPath: metadata.name + readinessChecks: + - type: None + + ### kubernetes argocd stack of stacks application + - base: + apiVersion: kubernetes.crossplane.io/v1alpha2 + kind: Object + spec: + forProvider: + manifest: + apiVersion: argoproj.io/v1alpha1 + kind: Application + metadata: + name: edfbuilder + namespace: argocd + labels: + env: dev + spec: + destination: + name: in-cluster + namespace: argocd + source: + path: registry + repoURL: 'https://gitea.cnoe.localtest.me/giteaAdmin/edfbuilder-shoot' + targetRevision: HEAD + project: default + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + patches: + - fromFieldPath: metadata.name + toFieldPath: spec.providerConfigRef.name +``` + +## Usage + +Set this values to allow many kind clusters running in parallel, if needed: + +``` +sudo sysctl fs.inotify.max_user_watches=524288 +sudo sysctl fs.inotify.max_user_instances=512 + +To make the changes persistent, edit the file /etc/sysctl.conf and add these lines: +fs.inotify.max_user_watches = 524288 +fs.inotify.max_user_instances = 512 +``` + +Start provider-kind: + +``` +make build +kind delete clusters $(kind get clusters) +kind create cluster --name=provider-kind-dev +DOCKER_HOST_IP="$(docker inspect $(docker ps | grep kindest | awk '{ print $1 }' | head -n1) | jq -r .[0].NetworkSettings.Networks.kind.Gateway)" make dev +``` + +Wait until debug output of the provider-kind is shown: + +``` +... +namespace/crossplane-system configured +secret/example-provider-secret created +providerconfig.kind.crossplane.io/example-provider-config created +14:49:50 [ .. ] Starting Provider Kind controllers +2024-11-12T14:49:54+01:00 INFO controller-runtime.metrics Starting metrics server +2024-11-12T14:49:54+01:00 INFO Starting EventSource {"controller": "providerconfig/providerconfig.kind.crossplane.io", "controllerGroup": "kind.crossplane.io", "controllerKind": "ProviderConfig", "source": "kind source: *v1alpha1.ProviderConfig"} +2024-11-12T14:49:54+01:00 INFO Starting EventSource {"controller": "providerconfig/providerconfig.kind.crossplane.io", "controllerGroup": "kind.crossplane.io", "controllerKind": "ProviderConfig", "source": "kind source: *v1alpha1.ProviderConfigUsage"} +2024-11-12T14:49:54+01:00 INFO Starting Controller {"controller": "providerconfig/providerconfig.kind.crossplane.io", "controllerGroup": "kind.crossplane.io", "controllerKind": "ProviderConfig"} +2024-11-12T14:49:54+01:00 INFO Starting EventSource {"controller": "managed/kindcluster.container.kind.crossplane.io", "controllerGroup": "container.kind.crossplane.io", "controllerKind": "KindCluster", "source": "kind source: *v1alpha1.KindCluster"} +2024-11-12T14:49:54+01:00 INFO Starting Controller {"controller": "managed/kindcluster.container.kind.crossplane.io", "controllerGroup": "container.kind.crossplane.io", "controllerKind": "KindCluster"} +2024-11-12T14:49:54+01:00 INFO controller-runtime.metrics Serving metrics server {"bindAddress": ":8080", "secure": false} +2024-11-12T14:49:54+01:00 INFO Starting workers {"controller": "providerconfig/providerconfig.kind.crossplane.io", "controllerGroup": "kind.crossplane.io", "controllerKind": "ProviderConfig", "worker count": 10} +2024-11-12T14:49:54+01:00 DEBUG provider-kind Reconciling {"controller": "providerconfig/providerconfig.kind.crossplane.io", "request": {"name":"example-provider-config"}} +2024-11-12T14:49:54+01:00 INFO Starting workers {"controller": "managed/kindcluster.container.kind.crossplane.io", "controllerGroup": "container.kind.crossplane.io", "controllerKind": "KindCluster", "worker count": 10} +2024-11-12T14:49:54+01:00 INFO KubeAPIWarningLogger metadata.finalizers: "in-use.crossplane.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers +2024-11-12T14:49:54+01:00 DEBUG provider-kind Reconciling {"controller": "providerconfig/providerconfig.kind.crossplane.io", "request": {"name":"example-provider-config"}} + +``` + +Start kindserver: + +see kindserver/README.md + +When kindserver is started: + +```bash +cd examples/composition_deprecated +kubectl apply -f definition.yaml +kubectl apply -f composition.yaml +kubectl apply -f cluster.yaml +``` + +List the created elements, wait until the new cluster is created, then switch back to the primary cluster: + +```bash +kubectl config use-context kind-provider-kind-dev +``` + +Show edfbuilder compositions: + +```bash +kubectl get edfbuilders +NAME SYNCED READY COMPOSITION AGE +kindcluster True True edfbuilders.edfbuilder.crossplane.io 4m45s +``` + +Show kind clusters: + +```bash +kubectl get kindclusters +NAME READY SYNCED EXTERNAL-NAME INTERNALIP VERSION AGE +kindcluster-wlxrt True True kindcluster-wlxrt 192.168.199.19 v1.31.0 5m12s +``` + +Show helm deployments: + +```bash +kubectl get releases +NAME CHART VERSION SYNCED READY STATE REVISION DESCRIPTION AGE +kindcluster-29dgf ingress-nginx 4.11.3 True True deployed 1 Install complete 5m32s +kindcluster-w2dxl forgejo 10.0.2 True True deployed 1 Install complete 5m32s +kindcluster-x8x9k argo-cd 7.6.12 True True deployed 1 Install complete 5m32s +``` + +Show kubernetes objects: + +```bash +kubectl get objects +NAME KIND PROVIDERCONFIG SYNCED READY AGE +kindcluster-8tbv8 ConfigMap kindcluster True True 5m50s +kindcluster-9lwc9 ConfigMap kindcluster True True 5m50s +kindcluster-9sgmd Deployment kindcluster True True 5m50s +kindcluster-ct2h7 Application kindcluster True True 5m50s +kindcluster-s5knq ConfigMap kindcluster True True 5m50s +``` + +Open the composition in VS Code: examples/composition_deprecated/composition.yaml + +## What is missing + +Currently missing is the third and final part, the imperative steps which need to be processed: + +* creation of TLS certificates and giteaAdmin password +* creation of a Forgejo repository for the stacks +* uploading the stacks in the Forgejo repository + +Connecting the definition field (ArgoCD repo URL) and composition interconnects (function-patch-and-transform) are also missing. diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/composition.drawio b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/composition.drawio new file mode 100644 index 0000000..48abda4 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/composition.drawio @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/composition.png b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/composition.png new file mode 100644 index 0000000..ce63ab8 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/composition.png differ diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_interface.drawio b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_interface.drawio new file mode 100644 index 0000000..4d11b51 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_interface.drawio @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_interface.png b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_interface.png new file mode 100644 index 0000000..5d09530 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_interface.png differ diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_provider-kind.drawio b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_provider-kind.drawio new file mode 100644 index 0000000..7da7ae6 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_provider-kind.drawio @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_provider-kind.png b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_provider-kind.png new file mode 100644 index 0000000..c55fc61 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/kindserver_provider-kind.png differ diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/provider-kind_providerconfig.drawio b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/provider-kind_providerconfig.drawio new file mode 100644 index 0000000..44dd400 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/provider-kind_providerconfig.drawio @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/provider-kind_providerconfig.png b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/provider-kind_providerconfig.png new file mode 100644 index 0000000..e588964 Binary files /dev/null and b/content/en/docs-old/v1/solution/tools/Crossplane/provider-kind/provider-kind_providerconfig.png differ diff --git a/content/en/docs-old/v1/solution/tools/Kube-prometheus-stack/_index.md b/content/en/docs-old/v1/solution/tools/Kube-prometheus-stack/_index.md new file mode 100644 index 0000000..9b5512a --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Kube-prometheus-stack/_index.md @@ -0,0 +1,32 @@ +--- +title: Kube-prometheus-stack +description: Kube-prometheus-stack contains Kubernetes manifests, Prometheus and Grafana, including preconfigured dashboards +--- + +## Kube-prometheus-stack Overview + +Grafana is an open-source monitoring solution that enables viusalization of metrics and logs. +Prometheus is an open-source monitoring and alerting system which collects metrics from services and allows the metrics to be shown in Grafana. + +### Implementation Details + +The application ist started in edfbuilder/kind/stacks/core/kube-prometheus.yaml. +The application has the sync option spec.syncPolicy.syncOptions ServerSideApply=true. This is necessary, since kube-prometheus-stack exceeds the size limit for secrets and without this option a sync attempt will fail and throw an exception. +The Helm values file edfbuilder/kind/stacks/core/kube-prometheus/values.yaml contains configuration values: +grafana.additionalDataSources contains Loki as a Grafana Data Source. +grafana.ingress contains the Grafana ingress configuratione, like the host url (cnoe.localtest.me). +grafana.sidecar.dashboards contains necessary configurations so additional user defined dashboards are loaded when Grafana is started. +grafana.grafana.ini.server contains configuration details that are necessary, so the ingress points to the correct url. + +### Start + +Once Grafana is running it is accessible under https://cnoe.localtest.me/grafana. +Many preconfigured dashboards can be used by klicking the menu option Dashboards. + +### Adding your own dashboards + +The application edfbuilder/kind/stacks/core/kube-prometheus.yaml is used to import new Loki dashboards. Examples for imported dashboards can be found in the folder edfbuilder/kind/stacks/core/kube-prometheus/dashboards. + +It is possible to add your own dashboards: Dashboards must be in JSON format. To add your own dashboard create a new ConfigMap in YAML format using onw of the examples as a blueprint. The new dashboard in JSON format has to be added as the value for data.k8s-dashboard-[...].json like in the examples. (It is important to use a unique name for data.k8s-dashboard-[...].json for each dashboard.) + +Currently preconfigured dashboards include several dahboards for Loki and a dashboard to showcase Nginx-Ingress metrics. diff --git a/content/en/docs-old/v1/solution/tools/Loki/_index.md b/content/en/docs-old/v1/solution/tools/Loki/_index.md new file mode 100644 index 0000000..4c51070 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Loki/_index.md @@ -0,0 +1,10 @@ +--- +title: Loki +description: Grafana Loki is a scalable open-source log aggregation system +--- + +## Loki Overview + +The application Grafana Loki is started in edfbuilder/kind/stacks/core/loki.yaml. +Loki is started in microservices mode and contains the components ingester, distributor, querier, and query-frontend. +The Helm values file edfbuilder/kind/stacks/core/loki/values.yaml contains configuration values. diff --git a/content/en/docs-old/v1/solution/tools/Promtail/_index.md b/content/en/docs-old/v1/solution/tools/Promtail/_index.md new file mode 100644 index 0000000..b675162 --- /dev/null +++ b/content/en/docs-old/v1/solution/tools/Promtail/_index.md @@ -0,0 +1,9 @@ +--- +title: Promtail +description: Grafana Promtail is an agent that ships logs to a Grafan Loki instance (log-shipper) +--- + +## Promtail Overview + +The application Grafana Promtail is started in edfbuilder/kind/stacks/core/promtail.yaml. +The Helm values file edfbuilder/kind/stacks/core/promtail/values.yaml contains configuration values. diff --git a/content/en/docs/solution/tools/_index.md b/content/en/docs-old/v1/solution/tools/_index.md similarity index 100% rename from content/en/docs/solution/tools/_index.md rename to content/en/docs-old/v1/solution/tools/_index.md diff --git a/content/en/docs/solution/tools/kyverno integration/_index.md b/content/en/docs-old/v1/solution/tools/kyverno integration/_index.md similarity index 96% rename from content/en/docs/solution/tools/kyverno integration/_index.md rename to content/en/docs-old/v1/solution/tools/kyverno integration/_index.md index 12ca83e..072d54c 100644 --- a/content/en/docs/solution/tools/kyverno integration/_index.md +++ b/content/en/docs-old/v1/solution/tools/kyverno integration/_index.md @@ -17,17 +17,21 @@ Kyverno is a policy engine for Kubernetes designed to enforce, validate, and mut Kyverno simplifies governance and compliance in Kubernetes environments by automating policy management and ensuring best practices are followed. ## Prerequisites + Same as for idpbuilder installation -- Docker Engine -- Go -- kubectl -- kind + +* Docker Engine +* Go +* kubectl +* kind ## Installation + ### Build process + For building idpbuilder the source code needs to be downloaded and compiled: -``` +```bash git clone https://github.com/cnoe-io/idpbuilder.git cd idpbuilder go build @@ -37,7 +41,7 @@ go build To start the idpbuilder with kyverno integration execute the following command: -``` +```bash idpbuilder create --use-path-routing -p https://github.com/cnoe-io/stacks//ref-implementation -p https://github.com/cnoe-io/stacks//kyverno-integration ``` diff --git a/content/en/docs/solution/tools/kyverno integration/kyverno.png b/content/en/docs-old/v1/solution/tools/kyverno integration/kyverno.png similarity index 100% rename from content/en/docs/solution/tools/kyverno integration/kyverno.png rename to content/en/docs-old/v1/solution/tools/kyverno integration/kyverno.png diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md old mode 100755 new mode 100644 index 688aef1..92e4dcb --- a/content/en/docs/_index.md +++ b/content/en/docs/_index.md @@ -1,9 +1,45 @@ --- -title: Developer Framework Documentation -linkTitle: Docs -menu: {main: {weight: 20}} -weight: 20 +title: "Documentation" +linkTitle: "Documentation" +menu: + main: + weight: 20 --- -This section is the project documentation for IPCEI-CIS Developer Framework. +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +# Edge Developer Platform (EDP) Documentation + +Welcome to the EDP documentation. This documentation serves developers, engineers, and auditors who want to understand, use, and audit the Edge Developer Platform. + +## Target Audience + +* **Developers & Engineers**: Learn how to use the platform, deploy applications, and integrate services +* **Platform Engineers**: Understand the architecture, components, and operational aspects +* **Auditors & Governance**: Access project history, decisions, and compliance information + +## Documentation Structure + +The documentation follows a top-down approach focusing on outcomes and practical usage: + +* **Platform Overview**: High-level introduction and product structure +* **Components**: Individual platform components and their usage +* **Getting Started**: Onboarding and quick start guides +* **Operations**: Deployment, monitoring, and troubleshooting +* **Governance**: Project history, decisions, and compliance + +## Purpose + +This documentation describes the outcomes and products of the edgeDeveloperFramework (eDF) project. The EDP is designed as a usable, integrated platform with clear links to repositories and implementation details. diff --git a/content/en/docs/components/TEMPLATE.md b/content/en/docs/components/TEMPLATE.md new file mode 100644 index 0000000..77eee23 --- /dev/null +++ b/content/en/docs/components/TEMPLATE.md @@ -0,0 +1,141 @@ +--- +title: "[Component Name]" +linkTitle: "[Short Name]" +weight: 1 +description: > + [Brief one-line description of the component] +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### C4 charts + +Embed C4 charts this way: + +1. add a likec4-view with the name of the view +{{< likec4-view view="components-template-documentation" project="architecture" title="Example Documentation Diagram" >}} + +2. create the LikeC4 view somewhere in ```./resources/edp-likec4/views```, the example above is in ```./resources/edp-likec4/views/documentation/components-template-documentation.c4``` + +3. run ```task likec4:generate``` to create the webcomponent + +4. if you are in ```task:serve``` hot-reload mode the view will show up directly + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/_index.md b/content/en/docs/components/_index.md new file mode 100644 index 0000000..a50ba3b --- /dev/null +++ b/content/en/docs/components/_index.md @@ -0,0 +1,39 @@ +--- +title: "Components" +linkTitle: "Components" +weight: 30 +description: > + Overview of EDP platform components and their integration. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: Stephan +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +This section documents all components of the Edge Developer Platform based on the product structure. + +## Component Categories + +The EDP consists of the following main component categories: + +* **Orchestrator**: Platform and infrastructure orchestration +* **Forgejo & CI/CD**: Source code management and automation +* **Deployments**: Deployment targets and edge connectivity +* **Dev Environments**: Development environment provisioning +* **Physical Environments**: Runtime infrastructure + +### Product Component Structure + +[TODO] Links + +![alt text](website-and-documentation_resources_product-structure.svg) diff --git a/content/en/docs/components/deployments/_index.md b/content/en/docs/components/deployments/_index.md new file mode 100644 index 0000000..c68c6ff --- /dev/null +++ b/content/en/docs/components/deployments/_index.md @@ -0,0 +1,28 @@ +--- +title: "Deployments" +linkTitle: "Deployments" +weight: 40 +description: > + Deployment targets and edge connectivity solutions. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6733](https://jira.telekom-mms.com/browse/IPCEICIS-6733) +* **Assignee**: Patrick +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +Deployment components manage connections to various deployment targets including cloud infrastructure and edge devices. + +## Components + +* **OTC**: Open Telekom Cloud deployment target +* **EdgeConnect**: Secure edge connectivity solution diff --git a/content/en/docs/components/deployments/edgeconnect/_index.md b/content/en/docs/components/deployments/edgeconnect/_index.md new file mode 100644 index 0000000..d31bd74 --- /dev/null +++ b/content/en/docs/components/deployments/edgeconnect/_index.md @@ -0,0 +1,128 @@ +--- +title: "EdgeConnect" +linkTitle: "EdgeConnect" +weight: 20 +description: > + Secure connectivity solution for edge devices and environments +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6734](https://jira.telekom-mms.com/browse/IPCEICIS-6734) +* **Assignee**: Waldemar +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/deployments/edgeconnect/edgeconnect-client.md b/content/en/docs/components/deployments/edgeconnect/edgeconnect-client.md new file mode 100644 index 0000000..7c08aca --- /dev/null +++ b/content/en/docs/components/deployments/edgeconnect/edgeconnect-client.md @@ -0,0 +1,128 @@ +--- +title: "EdgeConnect Client" +linkTitle: "EdgeConnect Client" +weight: 30 +description: > + Client software for establishing EdgeConnect connections +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6734](https://jira.telekom-mms.com/browse/IPCEICIS-6734) +* **Assignee**: Waldemar +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/deployments/edgeconnect/edgeconnect-sdk.md b/content/en/docs/components/deployments/edgeconnect/edgeconnect-sdk.md new file mode 100644 index 0000000..152d044 --- /dev/null +++ b/content/en/docs/components/deployments/edgeconnect/edgeconnect-sdk.md @@ -0,0 +1,128 @@ +--- +title: "EdgeConnect SDK" +linkTitle: "EdgeConnect SDK" +weight: 10 +description: > + Software Development Kit for establishing EdgeConnect connections +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6734](https://jira.telekom-mms.com/browse/IPCEICIS-6734) +* **Assignee**: Waldemar +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/deployments/otc.md b/content/en/docs/components/deployments/otc.md new file mode 100644 index 0000000..2ee32f5 --- /dev/null +++ b/content/en/docs/components/deployments/otc.md @@ -0,0 +1,128 @@ +--- +title: "OTC (Open Telekom Cloud)" +linkTitle: "OTC" +weight: 10 +description: > + Open Telekom Cloud deployment and infrastructure target +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6733](https://jira.telekom-mms.com/browse/IPCEICIS-6733) +* **Assignee**: Patrick +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/dev-environments.md b/content/en/docs/components/dev-environments.md new file mode 100644 index 0000000..71a9fa7 --- /dev/null +++ b/content/en/docs/components/dev-environments.md @@ -0,0 +1,128 @@ +--- +title: "Development Environments" +linkTitle: "DevEnvironments" +weight: 30 +description: > + Development environment provisioning and management +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/documentationsystem.md b/content/en/docs/components/documentationsystem.md new file mode 100644 index 0000000..d3b182a --- /dev/null +++ b/content/en/docs/components/documentationsystem.md @@ -0,0 +1,27 @@ +--- +title: "Documentation System" +linkTitle: "Documentation System" +weight: 100 +description: The developer 'documentation as code' documentation System we use ourselfes and over to use for each development team. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6736](https://jira.telekom-mms.com/browse/IPCEICIS-6736) +* **Assignee**: Stephan +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +The Orchestration manages platform and infrastructure provisioning, providing the foundation for the EDP deployment model. + +## Sub-Components + +* **Infrastructure Provisioning**: Low-level infrastructure deployment (infra-deploy, infra-catalogue) +* **Platform Provisioning**: Platform-level component deployment via Stacks diff --git a/content/en/docs/components/forgejo/_index.md b/content/en/docs/components/forgejo/_index.md new file mode 100644 index 0000000..bc41163 --- /dev/null +++ b/content/en/docs/components/forgejo/_index.md @@ -0,0 +1,28 @@ +--- +title: "Forgejo" +linkTitle: "Forgejo" +weight: 20 +description: > + Self-hosted Git service with project management and CI/CD capabilities. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +Forgejo provides source code management, project management, and CI/CD automation for the EDP. + +## Sub-Components + +* **Project Management**: Issue tracking and project management features +* **Actions**: CI/CD automation (see CI/CD section) diff --git a/content/en/docs/components/forgejo/actions/_index.md b/content/en/docs/components/forgejo/actions/_index.md new file mode 100644 index 0000000..e450675 --- /dev/null +++ b/content/en/docs/components/forgejo/actions/_index.md @@ -0,0 +1,27 @@ +--- +title: "Forgejo Actions" +linkTitle: "Forgejo Actions" +weight: 20 +description: Forgejo Actions. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6730](https://jira.telekom-mms.com/browse/IPCEICIS-6730) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +Forgejo provides source code management, project management, and CI/CD automation for the EDP. + +## Sub-Components + +* **Project Management**: Issue tracking and project management features +* **Actions**: CI/CD automation (see CI/CD section) diff --git a/content/en/docs/components/forgejo/actions/actions.md b/content/en/docs/components/forgejo/actions/actions.md new file mode 100644 index 0000000..c8d4d85 --- /dev/null +++ b/content/en/docs/components/forgejo/actions/actions.md @@ -0,0 +1,127 @@ +--- +title: "Forgejo Actions" +linkTitle: "Actions" +weight: 10 +description: GitHub Actions-compatible CI/CD automation +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/forgejo/actions/runner-orchestration.md b/content/en/docs/components/forgejo/actions/runner-orchestration.md new file mode 100644 index 0000000..151fff8 --- /dev/null +++ b/content/en/docs/components/forgejo/actions/runner-orchestration.md @@ -0,0 +1,127 @@ +--- +title: "Runner Orchestration" +linkTitle: "Runner Orchestration" +weight: 30 +description: GARM +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/forgejo/actions/runner.md b/content/en/docs/components/forgejo/actions/runner.md new file mode 100644 index 0000000..8a15857 --- /dev/null +++ b/content/en/docs/components/forgejo/actions/runner.md @@ -0,0 +1,128 @@ +--- +title: "Action Runner" +linkTitle: "Runner" +weight: 20 +description: > + Self-hosted runner infrastructure with orchestration capabilities +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/forgejo/forgejo.md b/content/en/docs/components/forgejo/forgejo.md new file mode 100644 index 0000000..c358644 --- /dev/null +++ b/content/en/docs/components/forgejo/forgejo.md @@ -0,0 +1,66 @@ +--- +title: "Forgejo Integration, Extension, and Community Collaboration" +linkTitle: Forgejo Software Forge +date: "2025-11-17" +description: "Summary of the project's work integrating GARM with Forgejo and contributing key features back to the community." +tags: ["Forgejo", "GARM", "CI/CD", "OSS", "Community", "Project Report"] +categories: ["Workpackage Results"] +weight: 10 +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6731](https://jira.telekom-mms.com/browse/IPCEICIS-6731) +* **Assignee**: Daniel +* **Status**: Draft +* **Last Updated**: 2025-11-17 +* **TODO**: + * [ ] Add concrete quick start steps + * [ ] Include prerequisites and access information + * [ ] Create first application tutorial +* **Review/Feedback**: + * [ ] Stephan: + * in general: + * [ ] some parts are worth to go th 'Governance' + * [ ] perhaps we should remove the emojis? + * [ ] perhaps we should avoid the impression that the text was copy/pated from AI + * some details/further ideas: + * [ ] where is it, this Forgejo? Why is it called 'edp.buildth.ing'? + * [ ] what are the components we use - package managament, actions, ... + * [ ] Friendly users? organisations? Public/private stuff? + * [ ] App Management discussions (we don't!)? + * [ ] what about code snippets how forgejo is deployed? SSO? user base? Federation options? + * [ ] storages, Redis, Postgres ... deployment options ... helm charts ... + * [ ] Migrations we did, where is the migration code? + * [ ] git POSIX filesystem concurrency discussion, S/3 bucket + * [ ] what is our general experience? + * [ ] repository centric domain data model + * [ ] how did we develop? which version did we take first? how did we upgrade? + * [ ] which development flows did we use? which pipleines? + * [ ] provide codeberg links for the PRs + * [ ] provide architecture drawings and repo links for the cache registry thing + * [ ] provide a hight level actions arch diagram from the perspective of forgejo - link to the GARM component here +{{% /alert %}} + +## 🧾 Result short description / cognitions + +Here is the management summary of the work package results: + +* **📈 Strategic Selection:** We chose **[Forgejo](https://forgejo.org/)** as the project's self-hosted Git service. This decision was based on several key strategic factors: + * **EU-Based & Data Sovereignty:** The project is stewarded by **[Codeberg e.V.](https://docs.codeberg.org/getting-started/what-is-codeberg/)**, a non-profit based in Berlin, Germany. This is a massive win for our "funding agency" stakeholders, as it aligns with **GDPR, compliance, and data sovereignty goals**. It's governed by EU laws, not a US tech entity. + * **True Open Source (GPL v3+):** Forgejo is a community-driven fork of Gitea, created to *guarantee* it stays 100% free and open-source (FOSS). + * **License Protects Our Contributions:** It uses the **GPL v3+ "copyleft" license**. This is *perfect* for our collaboration goal. It legally ensures that the features we contribute back (like GARM support) can **never be taken and locked into a proprietary, closed-source product by anyone**. It protects our work and keeps the community open. + +* **⚙️ Core Use Case:** Forgejo is used for all project source code **versioning** and as the backbone for our **CI/CD (Continuous Integration/Continuous Deployment)** pipelines. + +* **🛠️ Key Extension (GARM Support):** The main technical achievement was integrating **[GARM (GitHub Actions Runner Manager)](https://github.com/cloudbase/garm)**. This was *not* supported by Forgejo out-of-the-box. + +* **✨ Required Enhancements:** To make GARM work, our team developed and implemented several critical features: + * Webhook support for workflow events (to tell runners when to start). + * Support for ephemeral runners (for secure, clean-slate builds every time). + * GitHub API-compatible endpoints (to allow the runners to register themselves correctly). + +* **💖 Community Contribution:** We didn't just keep this for ourselves! We contributed all these features **directly back to the upstream Forgejo community**. This wasn't just a code-dump; we actively collaborated via **issues**, **feature requests**, and **pull requests (PRs) on [codeberg.org](https://codeberg.org/)**. + +* **🚀 Bonus Functionality:** We also implemented **artifact caching**. This configures Forgejo to act as a **pull-through proxy** for remote container registries (like Docker Hub), which seriously speeds up our build times and saves bandwidth. diff --git a/content/en/docs/components/forgejo/project-mgmt.md b/content/en/docs/components/forgejo/project-mgmt.md new file mode 100644 index 0000000..b98dd7f --- /dev/null +++ b/content/en/docs/components/forgejo/project-mgmt.md @@ -0,0 +1,128 @@ +--- +title: "Project Management" +linkTitle: "Forgejo Project Mgmt" +weight: 50 +description: > + Project and issue management capabilities within Forgejo +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/_index.md b/content/en/docs/components/orchestration/_index.md new file mode 100644 index 0000000..6246d1b --- /dev/null +++ b/content/en/docs/components/orchestration/_index.md @@ -0,0 +1,28 @@ +--- +title: "Orchestratiion" +linkTitle: "Orchestration" +weight: 10 +description: > + Platform and infrastructure orchestration components. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6734](https://jira.telekom-mms.com/browse/IPCEICIS-6734) +* **Assignee**: Stephan +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +The Orchestration manages platform and infrastructure provisioning, providing the foundation for the EDP deployment model. + +## Sub-Components + +* **Infrastructure Provisioning**: Low-level infrastructure deployment (infra-deploy, infra-catalogue) +* **Platform Provisioning**: Platform-level component deployment via Stacks diff --git a/content/en/docs/components/orchestration/application.md b/content/en/docs/components/orchestration/application.md new file mode 100644 index 0000000..976aeba --- /dev/null +++ b/content/en/docs/components/orchestration/application.md @@ -0,0 +1,128 @@ +--- +title: "Application Orchestration" +linkTitle: "Application Orchestration" +weight: 30 +description: > + Application-level component provisioning via Stacks +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/infrastructure/_index.md b/content/en/docs/components/orchestration/infrastructure/_index.md new file mode 100644 index 0000000..fc84a9d --- /dev/null +++ b/content/en/docs/components/orchestration/infrastructure/_index.md @@ -0,0 +1,128 @@ +--- +title: "Infrastructure Orchestration" +linkTitle: "Infrastructure Orchestration" +weight: 10 +description: > + Infrastructure deployment and catalog management (infra-deploy, infra-catalogue) +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6732](https://jira.telekom-mms.com/browse/IPCEICIS-6732) +* **Assignee**: Martin +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/infrastructure/provider.md b/content/en/docs/components/orchestration/infrastructure/provider.md new file mode 100644 index 0000000..236c0cc --- /dev/null +++ b/content/en/docs/components/orchestration/infrastructure/provider.md @@ -0,0 +1,127 @@ +--- +title: "Provider" +linkTitle: "Provider" +weight: 20 +description: Used Provider we deploy on +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6732](https://jira.telekom-mms.com/browse/IPCEICIS-6732) +* **Assignee**: Martin +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/infrastructure/terraform.md b/content/en/docs/components/orchestration/infrastructure/terraform.md new file mode 100644 index 0000000..69e1813 --- /dev/null +++ b/content/en/docs/components/orchestration/infrastructure/terraform.md @@ -0,0 +1,128 @@ +--- +title: "Terrafrom" +linkTitle: "Terraform" +weight: 10 +description: > + Infrastructure deployment and catalog management (infra-deploy, infra-catalogue) +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6732](https://jira.telekom-mms.com/browse/IPCEICIS-6732) +* **Assignee**: Martin +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/platform.md b/content/en/docs/components/orchestration/platform.md new file mode 100644 index 0000000..baa528f --- /dev/null +++ b/content/en/docs/components/orchestration/platform.md @@ -0,0 +1,128 @@ +--- +title: "Platform Orchestration" +linkTitle: "Platform Orchestration" +weight: 20 +description: > + Platform-level component provisioning via Stacks +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/stacks/_index.md b/content/en/docs/components/orchestration/stacks/_index.md new file mode 100644 index 0000000..f8d30b1 --- /dev/null +++ b/content/en/docs/components/orchestration/stacks/_index.md @@ -0,0 +1,128 @@ +--- +title: "Stacks" +linkTitle: "Stacks" +weight: 40 +description: > + Platform-level component provisioning via Stacks +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6729](https://jira.telekom-mms.com/browse/IPCEICIS-6729) +* **Assignee**: Stephan +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/stacks/component-1.md b/content/en/docs/components/orchestration/stacks/component-1.md new file mode 100644 index 0000000..4f6b18c --- /dev/null +++ b/content/en/docs/components/orchestration/stacks/component-1.md @@ -0,0 +1,128 @@ +--- +title: "Component 1" +linkTitle: "Component 1" +weight: 20 +description: > + Component 1 +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TBD] +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/orchestration/stacks/component-2.md b/content/en/docs/components/orchestration/stacks/component-2.md new file mode 100644 index 0000000..0244aa7 --- /dev/null +++ b/content/en/docs/components/orchestration/stacks/component-2.md @@ -0,0 +1,128 @@ +--- +title: "Component 2" +linkTitle: "Component 2" +weight: 30 +description: > + Component 2 +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TBD] +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/physical-envs/_index.md b/content/en/docs/components/physical-envs/_index.md new file mode 100644 index 0000000..d81421d --- /dev/null +++ b/content/en/docs/components/physical-envs/_index.md @@ -0,0 +1,16 @@ +--- +title: "Physical Environments" +linkTitle: "Physical Envs" +weight: 60 +description: > + Physical runtime environments and infrastructure providers. +--- + +Physical environment components provide the runtime infrastructure for deploying and running applications. + +## Components + +* **Docker**: Container runtime +* **Kubernetes**: Container orchestration +* **LXC**: Linux Containers +* **Provider**: Infrastructure provider abstraction diff --git a/content/en/docs/components/physical-envs/docker.md b/content/en/docs/components/physical-envs/docker.md new file mode 100644 index 0000000..ee1b9fb --- /dev/null +++ b/content/en/docs/components/physical-envs/docker.md @@ -0,0 +1,128 @@ +--- +title: "Docker" +linkTitle: "Docker" +weight: 10 +description: > + Container runtime for running containerized applications +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/physical-envs/kubernetes.md b/content/en/docs/components/physical-envs/kubernetes.md new file mode 100644 index 0000000..f2a5128 --- /dev/null +++ b/content/en/docs/components/physical-envs/kubernetes.md @@ -0,0 +1,128 @@ +--- +title: "Kubernetes" +linkTitle: "Kubernetes" +weight: 20 +description: > + Container orchestration platform for managing containerized workloads +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/physical-envs/lxc.md b/content/en/docs/components/physical-envs/lxc.md new file mode 100644 index 0000000..dfc9783 --- /dev/null +++ b/content/en/docs/components/physical-envs/lxc.md @@ -0,0 +1,128 @@ +--- +title: "LXC" +linkTitle: "LXC" +weight: 30 +description: > + Linux Containers for lightweight system-level virtualization +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/physical-envs/provider.md b/content/en/docs/components/physical-envs/provider.md new file mode 100644 index 0000000..9a96897 --- /dev/null +++ b/content/en/docs/components/physical-envs/provider.md @@ -0,0 +1,128 @@ +--- +title: "Infrastructure Provider" +linkTitle: "Provider" +weight: 40 +description: > + Infrastructure provider abstraction for managing physical resources +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-XXX](https://your-jira/browse/TICKET-XXX) +* **Assignee**: [Name or Team] +* **Status**: Draft +* **Last Updated**: YYYY-MM-DD +* **TODO**: + * [ ] Add detailed component description + * [ ] Include usage examples and code samples + * [ ] Add architecture diagrams + * [ ] Review and finalize content +{{% /alert %}} + +## Overview + +[Detailed description of the component - what it is, what it does, and why it exists] + +## Key Features + +* [Feature 1] +* [Feature 2] +* [Feature 3] + +## Purpose in EDP + +[Explain the role this component plays in the Edge Developer Platform and how it contributes to the overall platform capabilities] + +## Repository + +**Code**: [Link to source code repository] + +**Documentation**: [Link to component-specific documentation] + +## Getting Started + +### Prerequisites + +* [Prerequisite 1] +* [Prerequisite 2] + +### Quick Start + +[Step-by-step guide to get started with this component] + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +### Verification + +[How to verify the component is working correctly] + +## Usage Examples + +### [Use Case 1] + +[Example with code/commands showing common use case] + +```bash +# Example commands +``` + +### [Use Case 2] + +[Another common scenario] + +## Integration Points + +* **[Component A]**: [How it integrates] +* **[Component B]**: [How it integrates] +* **[Component C]**: [How it integrates] + +## Architecture + +[Optional: Add architectural diagrams and descriptions] + +### Component Architecture (C4) + +[Add C4 Container or Component diagrams showing the internal structure] + +### Sequence Diagrams + +[Add sequence diagrams showing key interaction flows with other components] + +### Deployment Architecture + +[Add infrastructure and deployment diagrams showing how the component is deployed] + +## Configuration + +[Key configuration options and how to set them] + +## Troubleshooting + +### [Common Issue 1] + +**Problem**: [Description] + +**Solution**: [How to fix] + +### [Common Issue 2] + +**Problem**: [Description] + +**Solution**: [How to fix] + +## Status + +**Maturity**: [Production / Beta / Experimental] + +## Additional Resources + +* [Link to external documentation] +* [Link to community resources] +* [Link to related components] + +## Documentation Notes + +[Instructions for team members filling in this documentation - remove this section once complete] diff --git a/content/en/docs/components/website-and-documentation_resources_product-structure.svg b/content/en/docs/components/website-and-documentation_resources_product-structure.svg new file mode 100644 index 0000000..f757e88 --- /dev/null +++ b/content/en/docs/components/website-and-documentation_resources_product-structure.svg @@ -0,0 +1,2 @@ +EDPForgejoOrchestrationInfrastructure-ProvisioningTerraforminfra-deploy,infra-cataloguePlatform-ProvisioningStacksComponent 1Component XProject-mgmtActionsRunnerRunner-OrchestrationDeploymentsOTCEdgeConnectEdgeConnectClientProviderDevEnvironmentsPhysicalEnvsDockerKubernetesLXCeDF Product Structure TreeDocumentationSystemApplication-ProvisioningCI/CDComponent 2OperatorVMEdgeConnect SDKLocalDockerRemoteEnvPipelines \ No newline at end of file diff --git a/content/en/docs/concepts/5_platforms/Humanitec/_index.md b/content/en/docs/concepts/5_platforms/Humanitec/_index.md deleted file mode 100644 index 21c9e69..0000000 --- a/content/en/docs/concepts/5_platforms/Humanitec/_index.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = "Humanitec" -weight = 4 -+++ - - -tbd \ No newline at end of file diff --git a/content/en/docs/documentation-guide/_index.md b/content/en/docs/documentation-guide/_index.md new file mode 100644 index 0000000..fa0ccb3 --- /dev/null +++ b/content/en/docs/documentation-guide/_index.md @@ -0,0 +1,151 @@ +--- +title: "WiP Documentation Guide" +linkTitle: "WiP Doc Guide" +weight: 1 +description: Guidelines and templates for creating EDP documentation. This page will be removed in the final documentation. +--- + +{{% alert title="WiP - Only during creation phase" %}} +This page will be removed in the final documentation. +{{% /alert %}} + +## Purpose + +This guide helps team members create consistent, high-quality documentation for the Edge Developer Platform. + + +## Documentation Principles + +### 1. Focus on Outcomes + +1. Describe how the platform is comprised and which Products we deliver +2. If you need inspiration for our EDP product structure look at [EDP product structure tree](../components/website-and-documentation_resources_product-structure.svg) +2. Include links to repositories for deeper technical information or for not beeing too verbose and redundant with existing doumentation within the IPCEI-CIS scope or our EDP repos scope. + +### 2. Write for the Audience + +1. **Developers**: How to use the software products +2. **Engineers**: Architecture +3. **Auditors**: Project history, decisions, compliance information + +### 3. Keep It Concise + +1. Top-down approach: start with overview, drill down as needed +2. Less is more - avoid deep nested structures +3. Avoid emojis +4. **When using AI**: Review the text that you paste, check integration into the rest of the documentation + +### 4. Maintain Quality + +1. Use present tense ("The system processes..." not "will process") +2. Run `task test:quick` before committing changes + +## Documentation Structure + +The EDP documentation is organized into five main sections: + +### 1. Platform Overview + +High-level introduction to EDP, target audience, purpose, and product structure. + +**Content focus**: Why EDP exists, who uses it, what it provides + +### 2. Getting Started + +Onboarding guides and quick start instructions. + +**Content focus**: Prerequisites, step-by-step setup, first application deployment + +### 3. Components + +Detailed documentation for each platform component. + +**Content focus**: What each component does, how to use it, integration points + +**Template**: Use `components/TEMPLATE.md` as starting point + +### 4. Operations + +Deployment, monitoring, troubleshooting, and maintenance procedures. + +**Content focus**: How to operate the platform, resolve issues, maintain health + +### 5. Governance + +Project history, architecture decisions, compliance, and audit information. + +**Content focus**: Why decisions were made, project evolution, external relations + +## Writing Documentation + +### Components + +#### Using Templates + +In section 'Components' Templates are provided for common documentation types: + +* **Component Documentation**: `content/en/docs/components/TEMPLATE.md` + +#### Content Structure + +Follow this pattern for component documentation: + +1. **Overview**: What it is and what it does +2. **Key Features**: Bullet list of main capabilities +3. **Purpose in EDP**: Why it's part of the platform +4. **Getting Started**: Quick start guide +5. **Usage Examples**: Common scenarios +6. **Integration Points**: How it connects to other components +7. **Status**: Current maturity level +8. **Documentation Notes**: Instructions for filling in details (remove when complete) + +### Frontmatter + +Every markdown file starts with YAML frontmatter according to [Docsy](https://www.docsy.dev/docs/adding-content/content/#page-frontmatter): + +```yaml +--- +title: "Full Page Title" +linkTitle: "Short Nav Title" +weight: 10 +description: > + Brief description for search and previews. +--- +``` + +* **title**: Full page title (appears in page header) +* **linkTitle**: Shorter title for navigation menu +* **weight**: Sort order (lower numbers appear first) +* **description**: Brief summary for SEO and page previews + +## Testing Documentation + +Before committing changes: + +```bash +# Run all tests +task test:quick + +# Build site locally +task build + +# Preview changes +task serve +``` + +## Adding New Sections + +When adding a new documentation section: + +1. Create directory: `content/en/docs/[section-name]/` +2. Create index file: `_index.md` with frontmatter +3. Add weight to control sort order +4. Update navigation in parent `_index.md` if needed +5. Test with `task test` + +## Reference + +* **Main README**: `/doc/README-technical-writer.md` +* **Component Template**: `/content/en/docs/components/TEMPLATE.md` +* **Hugo Documentation**: +* **Docsy Theme**: diff --git a/content/en/docs/getting-started/_index.md b/content/en/docs/getting-started/_index.md new file mode 100644 index 0000000..80ac3ac --- /dev/null +++ b/content/en/docs/getting-started/_index.md @@ -0,0 +1,70 @@ +--- +title: "Getting Started" +linkTitle: "Getting Started" +weight: 20 +description: > + Quick start guides and onboarding information for the Edge Developer Platform. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: TBD +* **Assignee**: Team +* **Status**: Draft - Structure only +* **Last Updated**: 2025-11-16 +* **TODO**: + * [ ] Add concrete quick start steps + * [ ] Include prerequisites and access information + * [ ] Create first application tutorial +{{% /alert %}} + +## Welcome to EDP + +This section helps you get started with the Edge Developer Platform, whether you're a developer building applications or a platform engineer managing infrastructure. + +## Quick Start for Developers + +### Prerequisites + +* Access to EDP instance +* Git client installed +* kubectl configured (for Kubernetes access) +* Basic knowledge of containers and CI/CD + +### Your First Application + +1. **Access the Platform**: Log in to Backstage portal +2. **Clone Repository**: Get your application repository from Forgejo/GitLab +3. **Configure Pipeline**: Set up CI/CD in Woodpecker or ArgoCD +4. **Deploy**: Push code and watch automated deployment + +### Next Steps + +* Explore available components and services +* Review platform documentation and best practices +* Join the developer community + +## Quick Start for Platform Engineers + +### Platform Access + +* Kubernetes cluster access +* Infrastructure management tools +* Monitoring and observability dashboards + +### Key Resources + +* Platform architecture documentation +* Operational runbooks +* Troubleshooting guides + +## Documentation Template + +When creating "Getting Started" content for a component: + +1. **Prerequisites**: What users need before starting +2. **Step-by-Step Guide**: Clear, numbered instructions +3. **Verification**: How to confirm success +4. **Common Issues**: FAQ and troubleshooting +5. **Next Steps**: Links to deeper documentation diff --git a/content/en/docs/governance/_index.md b/content/en/docs/governance/_index.md new file mode 100644 index 0000000..c5ab30c --- /dev/null +++ b/content/en/docs/governance/_index.md @@ -0,0 +1,81 @@ +--- +title: "Governance" +linkTitle: "Governance" +weight: 100 +description: > + Project history, architecture decisions, compliance, and audit information. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: [TICKET-6737](https://jira.telekom-mms.com/browse/IPCEICIS-6737) +* **Assignee**: Sophie +* **Status**: Draft - Structure only +* **Last Updated**: 2025-11-16 +* **TODO**: + * [ ] Migrate relevant ADRs from docs-old + * [ ] Document project history and phases + * [ ] Add deliverables mapping + * [ ] Include compliance documentation +{{% /alert %}} + +## Governance Overview + +This section provides information for auditors, governance teams, and stakeholders who need to understand the project's decision-making process, history, and compliance. + +## Architecture Decision Records (ADRs) + +Documentation of significant architectural decisions made during the project, including context, options considered, and rationale. + +## Project History + +### Development Process + +The EDP was developed using collaborative approaches including mob programming and iterative development with regular user feedback. + +### Project Phases + +* Research & Design +* Proof of Concept +* Friendly User Phase +* Production Rollout + +### Deliverables Mapping + +Mapping to IPCEI-CIS deliverables and project milestones. + +## Compliance & Audit + +### Technology Choices + +Documentation of technology evaluation and selection process for key components (e.g., VictoriaMetrics, GARM, Terraform, ArgoCD). + +### Security Controls + +Overview of implemented security controls and compliance measures. + +### Ticket References + +Cross-references to Jira tickets, epics, and project tracking for audit trails. + +## Community & External Relations + +### Open Source Contributions + +Contributions to the Forgejo community and other open-source projects. + +### External Stakeholders + +User experience research and feedback integration. + +## Documentation Template + +When creating governance documentation: + +1. **Context**: Background and situation +2. **Decision/Event**: What was decided or what happened +3. **Rationale**: Why this decision was made +4. **Alternatives**: Other options considered +5. **Consequences**: Impact and outcomes +6. **References**: Links to tickets, discussions, external resources diff --git a/content/en/docs/operations/_index.md b/content/en/docs/operations/_index.md new file mode 100644 index 0000000..d81be4c --- /dev/null +++ b/content/en/docs/operations/_index.md @@ -0,0 +1,74 @@ +--- +title: "Operations" +linkTitle: "Operations" +weight: 40 +description: > + Operational guides for deploying, monitoring, and maintaining the Edge Developer Platform. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: TBD +* **Assignee**: Team +* **Status**: Draft - Structure only +* **Last Updated**: 2025-11-16 +* **TODO**: + * [ ] Add deployment procedures + * [ ] Document monitoring setup and dashboards + * [ ] Include troubleshooting guides + * [ ] Add maintenance procedures +{{% /alert %}} + +## Operations Overview + +This section covers operational aspects of the Edge Developer Platform including deployment, monitoring, troubleshooting, and maintenance. + +## Deployment + +### Platform Deployment + +Instructions for deploying EDP components to your infrastructure. + +### Application Deployment + +Guides for deploying applications to the platform using available deployment methods. + +## Monitoring & Observability + +### Metrics + +Access and interpret platform and application metrics using VictoriaMetrics, Prometheus, and Grafana. + +### Logging + +Log aggregation and analysis for troubleshooting and audit purposes. + +### Alerting + +Configure alerts for critical platform events and application issues. + +## Troubleshooting + +Common issues and their solutions for platform operations. + +## Maintenance + +### Updates & Upgrades + +Procedures for updating platform components and maintaining system health. + +### Backup & Recovery + +Data backup strategies and disaster recovery procedures. + +## Documentation Template + +When creating operational documentation: + +1. **Purpose**: What this operation achieves +2. **Prerequisites**: Required access, tools, and knowledge +3. **Procedure**: Step-by-step instructions with commands +4. **Verification**: How to confirm successful completion +5. **Rollback**: How to revert if needed +6. **Troubleshooting**: Common issues and solutions diff --git a/content/en/docs/platform-overview/_index.md b/content/en/docs/platform-overview/_index.md new file mode 100644 index 0000000..2360c6c --- /dev/null +++ b/content/en/docs/platform-overview/_index.md @@ -0,0 +1,61 @@ +--- +title: "Platform Overview" +linkTitle: "Platform Overview" +weight: 10 +description: > + High-level overview of the Edge Developer Platform (EDP), its purpose, and product structure. +--- + +{{% alert title="Draft" color="warning" %}} +**Editorial Status**: This page is currently being developed. + +* **Jira Ticket**: TBD +* **Assignee**: Team +* **Status**: Draft - Initial structure created +* **Last Updated**: 2025-11-16 +* **TODO**: + * [ ] Add detailed product structure from excalidraw + * [ ] Include platform maturity matrix + * [ ] Add links to component pages as they are created +{{% /alert %}} + +## Purpose + +The Edge Developer Platform (EDP) is a comprehensive DevOps platform designed to enable developers to build, deploy, and operate cloud-native applications at the edge. It provides an integrated suite of tools and services covering the entire software development lifecycle. + +## Target Audience + +* **Developers**: Build and deploy applications using standardized workflows +* **Platform Engineers**: Operate and maintain the platform infrastructure +* **DevOps Teams**: Implement CI/CD pipelines and automation +* **Auditors**: Verify platform capabilities and compliance + +## Product Structure + +EDP consists of multiple integrated components organized in layers: + +### Core Platform Services + +The foundation layer provides essential platform capabilities including source code management, CI/CD, and container orchestration. + +### Developer Experience + +Tools and services that developers interact with directly to build, test, and deploy applications. + +### Infrastructure & Operations + +Infrastructure automation, observability, and operational tooling for platform management. + +## Platform Maturity + +Components in EDP have different maturity levels: + +* **Production**: Fully integrated and supported for production use +* **Beta**: Available for testing with potential changes +* **Experimental**: Early stage, subject to significant changes + +## Getting Started + +For quick start guides and onboarding information, see the [Getting Started](../getting-started/) section. + +For detailed component information, explore the [Components](../components/) section. diff --git a/content/en/docs/project/plan-in-2024/streams/deployment/_index.md b/content/en/docs/project/plan-in-2024/streams/deployment/_index.md deleted file mode 100644 index ed797a0..0000000 --- a/content/en/docs/project/plan-in-2024/streams/deployment/_index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Deployment -weight: 3 ---- - -> **Mantra**: -> 1. Everything as Code. -> 1. Cloud natively deployable everywhere. -> 1. Ramping up and tearing down oftenly is a no-brainer. -> 1. Especially locally (whereby 'locally' means 'under my own control') - -## Entwurf (28.8.24) - -![Deployment 2024](./deployment.drawio.png) \ No newline at end of file diff --git a/content/en/docs/project/plan-in-2024/streams/pocs/_index.md b/content/en/docs/project/plan-in-2024/streams/pocs/_index.md deleted file mode 100644 index fb81dfc..0000000 --- a/content/en/docs/project/plan-in-2024/streams/pocs/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: POCs -weight: 2 ---- - -## Further ideas for POSs - -* see sample apps 'metaphor' in https://docs.kubefirst.io/ \ No newline at end of file diff --git a/content/en/docs/solution/_index.md b/content/en/docs/solution/_index.md deleted file mode 100644 index 4538533..0000000 --- a/content/en/docs/solution/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Solution -weight: 2 -description: The underlying platforming concepts of the EDF solution, the solution domain ---- - -All output the project created: Design, Building blocks, results, show cases, artifacts - diff --git a/content/en/docs/solution/tools/Backstage/Exsisting Plugins/_index.md b/content/en/docs/solution/tools/Backstage/Exsisting Plugins/_index.md deleted file mode 100644 index d449433..0000000 --- a/content/en/docs/solution/tools/Backstage/Exsisting Plugins/_index.md +++ /dev/null @@ -1,49 +0,0 @@ -+++ -title = "Existing Backstage Plugins" -weight = 4 -+++ - -1. **Catalog**: - - Used for managing services and microservices, including registration, visualization, and the ability to track dependencies and relationships between services. It serves as a central directory for all services in an organization. - -2. **Docs**: - - Designed for creating and managing documentation, supporting formats such as Markdown. It helps teams organize and access technical and non-technical documentation in a unified interface. - -3. **API Docs**: - - Automatically generates API documentation based on OpenAPI specifications or other API definitions, ensuring that your API information is always up to date and accessible for developers. - -4. **TechDocs**: - - A tool for creating and publishing technical documentation. It is integrated directly into Backstage, allowing developers to host and maintain documentation alongside their projects. - -5. **Scaffolder**: - - Allows the rapid creation of new projects based on predefined templates, making it easier to deploy services or infrastructure with consistent best practices. - -6. **CI/CD**: - - Provides integration with CI/CD systems such as GitHub Actions and Jenkins, allowing developers to view build status, logs, and pipelines directly in Backstage. - -7. **Metrics**: - - Offers the ability to monitor and visualize performance metrics for applications, helping teams to keep track of key indicators like response times and error rates. - -8. **Snyk**: - - Used for dependency security analysis, scanning your codebase for vulnerabilities and helping to manage any potential security risks in third-party libraries. - -9. **SonarQube**: - - Integrates with SonarQube to analyze code quality, providing insights into code health, including issues like technical debt, bugs, and security vulnerabilities. - -10. **GitHub**: - - Enables integration with GitHub repositories, displaying information such as commits, pull requests, and other repository activity, making collaboration more transparent and efficient. - -11. **CircleCI**: - - Allows seamless integration with CircleCI for managing CI/CD workflows, giving developers insight into build pipelines, test results, and deployment statuses. - -12. **Kubernetes**: - - Provides tools to manage Kubernetes clusters, including visualizing pod status, logs, and cluster health, helping teams maintain and troubleshoot their cloud-native applications. - -13. **Cloud**: - - Includes plugins for integration with cloud providers like AWS and Azure, allowing teams to manage cloud infrastructure, services, and billing directly from Backstage. - -14. **OpenTelemetry**: - - Helps with monitoring distributed applications by integrating OpenTelemetry, offering powerful tools to trace requests, detect performance bottlenecks, and ensure application health. - -15. **Lighthouse**: - - Integrates Google Lighthouse to analyze web application performance, helping teams identify areas for improvement in metrics like load times, accessibility, and SEO. diff --git a/content/en/docs/solution/tools/CNOE/idpbuilder/http-routing.md b/content/en/docs/solution/tools/CNOE/idpbuilder/http-routing.md deleted file mode 100644 index 21e709d..0000000 --- a/content/en/docs/solution/tools/CNOE/idpbuilder/http-routing.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Http Routing -weight: 100 ---- - -### Routing switch - -The idpbuilder supports creating platforms using either path based or subdomain -based routing: - -```shell -idpbuilder create --log-level debug --package https://github.com/cnoe-io/stacks//ref-implementation -``` - -```shell -idpbuilder create --use-path-routing --log-level debug --package https://github.com/cnoe-io/stacks//ref-implementation -``` - -However, even though argo does report all deployments as green eventually, not -the entire demo is actually functional (verification?). This is due to -hardcoded values that for example point to the path-routed location of gitea to -access git repos. Thus, backstage might not be able to access them. - -Within the demo / ref-implementation, a simple search & replace is suggested to -change urls to fit the given environment. But proper scripting/templating could -take care of that as the hostnames and necessary properties should be -available. This is, however, a tedious and repetitive task one has to keep in -mind throughout the entire system, which might lead to an explosion of config -options in the future. Code that addresses correct routing is located in both -the stack templates and the idpbuilder code. - -### Cluster internal routing - -For the most part, components communicate with either the cluster API using the -default DNS or with each other via http(s) using the public DNS/hostname (+ -path-routing scheme). The latter is necessary due to configs that are visible -and modifiable by users. This includes for example argocd config for components -that has to sync to a gitea git repo. Using the same URL for internal and -external resolution is imperative. - -The idpbuilder achieves transparent internal DNS resolution by overriding the -public DNS name in the cluster's internal DNS server (coreDNS). Subsequently, -within the cluster requests to the public hostnames resolve to the IP of the -internal ingress controller service. Thus, internal and external requests take -a similar path and run through proper routing (rewrites, ssl/tls, etc). - -### Conclusion - -One has to keep in mind that some specific app features might not -work properly or without haxx when using path based routing (e.g. docker -registry in gitea). Futhermore, supporting multiple setup strategies will -become cumbersome as the platforms grows. We should probably only support one -type of setup to keep the system as simple as possible, but allow modification -if necessary. - -DNS solutions like `nip.io` or the already used `localtest.me` mitigate the -need for path based routing diff --git a/devbox.json b/devbox.json new file mode 100644 index 0000000..4c3241a --- /dev/null +++ b/devbox.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.10.5/.schema/devbox.schema.json", + "packages": [ + "hugo@0.151.0", + "dart-sass@latest", + "go@1.25.1", + "nodejs@24.10.0", + "htmltest@latest", + "go-task@latest" + ], + "shell": { + "init_hook": [], + "scripts": {} + } +} diff --git a/devbox.lock b/devbox.lock new file mode 100644 index 0000000..678ea90 --- /dev/null +++ b/devbox.lock @@ -0,0 +1,346 @@ +{ + "lockfile_version": "1", + "packages": { + "dart-sass@latest": { + "last_modified": "2025-10-11T06:31:15Z", + "resolved": "github:NixOS/nixpkgs/362791944032cb532aabbeed7887a441496d5e6e#dart-sass", + "source": "devbox-search", + "version": "1.93.2", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/2wjcjimv86a010lvbsqiyjdl2jmbz49z-dart-sass-1.93.2", + "default": true + }, + { + "name": "pubcache", + "path": "/nix/store/r8d714i4fgjgsv1hj875afbp0n9cq4gi-dart-sass-1.93.2-pubcache" + } + ], + "store_path": "/nix/store/2wjcjimv86a010lvbsqiyjdl2jmbz49z-dart-sass-1.93.2" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/r8a0s7gf8chy7p5jjhdj4ip5a3jjyjb0-dart-sass-1.93.2", + "default": true + }, + { + "name": "pubcache", + "path": "/nix/store/b68qdyy9zwzanlvcqf9ppj1yna7svkna-dart-sass-1.93.2-pubcache" + } + ], + "store_path": "/nix/store/r8a0s7gf8chy7p5jjhdj4ip5a3jjyjb0-dart-sass-1.93.2" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/i09v3a327zg2kcby5kapqpyrx1ijh8vi-dart-sass-1.93.2", + "default": true + }, + { + "name": "pubcache", + "path": "/nix/store/ranyl11vksmg46nf9biw4nwk8h0hpqv9-dart-sass-1.93.2-pubcache" + } + ], + "store_path": "/nix/store/i09v3a327zg2kcby5kapqpyrx1ijh8vi-dart-sass-1.93.2" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/hqfw052brhr3ln21sw347jgdva8z33qh-dart-sass-1.93.2", + "default": true + }, + { + "name": "pubcache", + "path": "/nix/store/5vfpdb333pcbxw7adky8nbqjn2r4dc5h-dart-sass-1.93.2-pubcache" + } + ], + "store_path": "/nix/store/hqfw052brhr3ln21sw347jgdva8z33qh-dart-sass-1.93.2" + } + } + }, + "github:NixOS/nixpkgs/nixpkgs-unstable": { + "last_modified": "2025-10-20T13:06:07Z", + "resolved": "github:NixOS/nixpkgs/cb82756ecc37fa623f8cf3e88854f9bf7f64af93?lastModified=1760965567&narHash=sha256-0JDOal5P7xzzAibvD0yTE3ptyvoVOAL0rcELmDdtSKg%3D" + }, + "go-task@latest": { + "last_modified": "2025-10-07T08:41:47Z", + "resolved": "github:NixOS/nixpkgs/bce5fe2bb998488d8e7e7856315f90496723793c#go-task", + "source": "devbox-search", + "version": "3.45.4", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/jpyzi7ph07mxn64vr684rn4sn81rmdbv-go-task-3.45.4", + "default": true + } + ], + "store_path": "/nix/store/jpyzi7ph07mxn64vr684rn4sn81rmdbv-go-task-3.45.4" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/bhkmm0w7wmgncwvn8gmbsn254n0r9app-go-task-3.45.4", + "default": true + } + ], + "store_path": "/nix/store/bhkmm0w7wmgncwvn8gmbsn254n0r9app-go-task-3.45.4" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/pv4fd2995ys0dd4rvsqcn6cd2q2qi98s-go-task-3.45.4", + "default": true + } + ], + "store_path": "/nix/store/pv4fd2995ys0dd4rvsqcn6cd2q2qi98s-go-task-3.45.4" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/535z3a3p7hwdg4g3w4f4ssq44vnqsxqh-go-task-3.45.4", + "default": true + } + ], + "store_path": "/nix/store/535z3a3p7hwdg4g3w4f4ssq44vnqsxqh-go-task-3.45.4" + } + } + }, + "go@1.25.1": { + "last_modified": "2025-10-07T08:41:47Z", + "resolved": "github:NixOS/nixpkgs/bce5fe2bb998488d8e7e7856315f90496723793c#go", + "source": "devbox-search", + "version": "1.25.1", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/mkdfnr1nkfj2kznxyag9pypbxp3wqqdv-go-1.25.1", + "default": true + } + ], + "store_path": "/nix/store/mkdfnr1nkfj2kznxyag9pypbxp3wqqdv-go-1.25.1" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/0jzj8p7k9wkr4l17sgrlg3z5di27sggf-go-1.25.1", + "default": true + } + ], + "store_path": "/nix/store/0jzj8p7k9wkr4l17sgrlg3z5di27sggf-go-1.25.1" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/q2xylk8h3kbfajhw2lpdmyzyyqgqx8fl-go-1.25.1", + "default": true + } + ], + "store_path": "/nix/store/q2xylk8h3kbfajhw2lpdmyzyyqgqx8fl-go-1.25.1" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/f01qkydd3c2jqwi4w6hkddkf3blp16kw-go-1.25.1", + "default": true + } + ], + "store_path": "/nix/store/f01qkydd3c2jqwi4w6hkddkf3blp16kw-go-1.25.1" + } + } + }, + "htmltest@latest": { + "last_modified": "2025-10-07T08:41:47Z", + "resolved": "github:NixOS/nixpkgs/bce5fe2bb998488d8e7e7856315f90496723793c#htmltest", + "source": "devbox-search", + "version": "0.17.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/46gsr9pd5ssf705yl68mdb1wsls20q2p-htmltest-0.17.0", + "default": true + } + ], + "store_path": "/nix/store/46gsr9pd5ssf705yl68mdb1wsls20q2p-htmltest-0.17.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/chw7bw31lh3knq26p5ij6i7rq33wlhws-htmltest-0.17.0", + "default": true + } + ], + "store_path": "/nix/store/chw7bw31lh3knq26p5ij6i7rq33wlhws-htmltest-0.17.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/lclvbaw9h8jr3wq8y7jxyd5p67ljqnd0-htmltest-0.17.0", + "default": true + } + ], + "store_path": "/nix/store/lclvbaw9h8jr3wq8y7jxyd5p67ljqnd0-htmltest-0.17.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/0pywisrmyx271ryk3jd35hair132sc7k-htmltest-0.17.0", + "default": true + } + ], + "store_path": "/nix/store/0pywisrmyx271ryk3jd35hair132sc7k-htmltest-0.17.0" + } + } + }, + "hugo@0.151.0": { + "last_modified": "2025-10-09T02:37:25Z", + "resolved": "github:NixOS/nixpkgs/2dad7af78a183b6c486702c18af8a9544f298377#hugo", + "source": "devbox-search", + "version": "0.151.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/dcrip0cqzp49qrxj2y6866zivlh4ll7n-hugo-0.151.0", + "default": true + } + ], + "store_path": "/nix/store/dcrip0cqzp49qrxj2y6866zivlh4ll7n-hugo-0.151.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/7wkfywf6q4im4lqfb0px0gj1z470qbji-hugo-0.151.0", + "default": true + } + ], + "store_path": "/nix/store/7wkfywf6q4im4lqfb0px0gj1z470qbji-hugo-0.151.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/lgn4bf0axzgm44783j8rp24gjh87j1an-hugo-0.151.0", + "default": true + } + ], + "store_path": "/nix/store/lgn4bf0axzgm44783j8rp24gjh87j1an-hugo-0.151.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/jh0xghg9k3l7f8igldaqymj84fncyzcc-hugo-0.151.0", + "default": true + } + ], + "store_path": "/nix/store/jh0xghg9k3l7f8igldaqymj84fncyzcc-hugo-0.151.0" + } + } + }, + "nodejs@24.10.0": { + "last_modified": "2025-10-13T09:56:54Z", + "plugin_version": "0.0.2", + "resolved": "github:NixOS/nixpkgs/c12c63cd6c5eb34c7b4c3076c6a99e00fcab86ec#nodejs_24", + "source": "devbox-search", + "version": "24.10.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/355hbbr8bfhyij7vkqczbjmgqa9dbrsh-nodejs-24.10.0", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/pfnl3nqxa7agrd4rw52z52pspss7nvbi-nodejs-24.10.0-dev" + }, + { + "name": "libv8", + "path": "/nix/store/ch0ss8jqxs4dda64786ap78s3vrfi3kz-nodejs-24.10.0-libv8" + } + ], + "store_path": "/nix/store/355hbbr8bfhyij7vkqczbjmgqa9dbrsh-nodejs-24.10.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/ybfap4y7drm5nbx358cj238ba87gp8bk-nodejs-24.10.0", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/zdwjsr9hcb8ydkgwvljnm1rcbfg3336k-nodejs-24.10.0-dev" + }, + { + "name": "libv8", + "path": "/nix/store/lmcnw7gwb71bfy15qb87b1cphsxvj5jp-nodejs-24.10.0-libv8" + } + ], + "store_path": "/nix/store/ybfap4y7drm5nbx358cj238ba87gp8bk-nodejs-24.10.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/bgh57m6c4k348hd4wyb367xwkljq42ky-nodejs-24.10.0", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/747r79izxv4jm0h1zn2qdyc7hbz06ckz-nodejs-24.10.0-dev" + }, + { + "name": "libv8", + "path": "/nix/store/2zb0z0qhzb29jlksjpc2vz0sk9icln1p-nodejs-24.10.0-libv8" + } + ], + "store_path": "/nix/store/bgh57m6c4k348hd4wyb367xwkljq42ky-nodejs-24.10.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/p2sk3402d788hqn5diy5gba8cskjffzz-nodejs-24.10.0", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/fn613shrdw5k5d5is7h8rs3dmi9xrh37-nodejs-24.10.0-dev" + }, + { + "name": "libv8", + "path": "/nix/store/y9km82y1yqw1r7ld0xcifpj9zfzfy0q3-nodejs-24.10.0-libv8" + } + ], + "store_path": "/nix/store/p2sk3402d788hqn5diy5gba8cskjffzz-nodejs-24.10.0" + } + } + } + } +} diff --git a/doc/README-developer.md b/doc/README-developer.md new file mode 100644 index 0000000..b01c9ec --- /dev/null +++ b/doc/README-developer.md @@ -0,0 +1,496 @@ +# Developer Guide - IPCEI-CIS Developer Framework + +## 🚀 Quick Start + +### Prerequisites + +Install [Devbox](https://www.jetify.com/devbox/): +```bash +curl -fsSL https://get.jetify.com/devbox | bash +``` + +### Setup + +1. Clone the repository +2. Install dependencies: +```bash +task deps:install +``` +3. Start devbox shell: +```bash +devbox shell +``` + +Devbox automatically installs all required tools: +- Hugo (v0.151.0+extended) +- Go (v1.25.1) +- Node.js (v24.10.0) +- Dart Sass +- htmltest +- go-task + +> **Note:** For content contributors, see [README-technicalWriter.md](./README-technicalWriter.md) for a simplified guide. + +## 📚 Technology Stack + +### Hugo (v0.151.0+extended) + +Hugo is a fast static site generator. This project uses Hugo in extended mode with: +- **Docsy Theme** (v0.12.0) - Documentation theme with responsive design +- **Bootstrap 5.3.8** - UI framework +- **PostCSS** - CSS processing + +### Docsy Theme + +Docsy is a Hugo theme optimized for technical documentation: +- Multi-language support +- Search functionality +- Navigation menu system +- Code syntax highlighting +- Responsive design + +Key directories: +- `content/en/` - English content (Markdown files) +- `layouts/` - Custom layout overrides +- `assets/scss/` - Custom styles +- `static/` - Static assets (images, etc.) + +### LikeC4 (v1.43.0) + +LikeC4 is used for interactive architecture diagrams: +- C4 model-based architecture visualization +- Web Components for embedding diagrams +- Real-time preview during development + +Architecture models: +- `resources/edp-likec4/` - Platform architecture models +- `resources/doc-likec4/` - Documentation platform models + +LikeC4 tasks available: +- `task likec4:generate` - Generate web components +- `task likec4:validate` - Validate C4 models +- `task likec4:update` - Update LikeC4 version + +### Task (Taskfile) + +Task is a task runner / build tool that replaces Makefiles. It uses `Taskfile.yml` for defining tasks. + +## 🛠️ Development Workflow + +### Using Task (Recommended) + +View all available tasks: +```bash +task +# or +task --list +``` + +Common tasks: + +#### Development +```bash +task serve # Start Hugo dev server (http://localhost:1313) +task build # Build production site +task build:dev # Build development site +task clean # Clean build artifacts +``` + +#### Testing +```bash +task test # Run all tests +task test:quick # Run quick tests (without link checking) +task test:build # Test if Hugo builds successfully +task test:markdown # Lint Markdown files +task test:html # Validate HTML output +task test:links # Check all links (internal & external) +``` + +#### Dependencies +```bash +task deps:install # Install all dependencies +task deps:update # Update all dependencies +``` + +#### LikeC4 +```bash +task likec4:generate # Generate web components from C4 models +task likec4:validate # Validate C4 model syntax +task likec4:update # Update LikeC4 to latest version +``` + +#### Build & Test OCI Image +```bash +task build:oci-image # Build Docker/OCI image +task test:oci-image # Build and test image +``` + +#### CI/CD +```bash +task ci # Run full CI pipeline locally +``` + +## 🧪 Testing + +This project uses multiple automated tests for quality assurance. + +### Test Configuration Files + +- `.htmltest.yml` - Link checker configuration +- `.htmlvalidate.json` - HTML validation rules +- `.markdownlint.json` - Markdown linting rules + +### CI/CD Integration + +GitHub Actions runs these tests automatically on every push/PR via `.github/workflows/test.yml`. + +### Local Development Workflow + +**Before commit:** +```bash +task test:quick +``` + +**Before push:** +```bash +task test +``` + +## 🐳 Docker / Container Build + +### Version Management + +All tool versions are defined in `.env.versions` as the single source of truth: + +```bash +NODE_VERSION=24.10.0 +GO_VERSION=1.25.1 +HUGO_VERSION=0.151.0 +``` + +These versions are used in: +- `devbox.json` - Local development (manual sync required) +- `Dockerfile` - Build arguments with defaults +- `.github/workflows/ci.yaml` - CI/CD pipeline (automatic) + +**Updating versions:** + +1. Edit `.env.versions` +2. Manually sync `devbox.json`: + ```json + { + "packages": [ + "hugo@0.151.0", + "go@1.25.1", + "nodejs@24.10.0" + ] + } + ``` +3. Rebuild: `devbox shell --refresh` + +### Local Build + +**Using Task (recommended):** + +```bash +task build:oci-image # Build OCI image +task test:oci-image # Build and test +``` + +This automatically loads versions from `.env.versions` and tags with `latest` and git commit hash. + +**Helper script for manual builds:** + +```bash +source scripts/get-versions.sh +# Shows Docker build command with correct versions +``` + +**Manual build:** + +```bash +docker build --network=host \ + --build-arg NODE_VERSION=24.10.0 \ + --build-arg GO_VERSION=1.25.1 \ + --build-arg HUGO_VERSION=0.151.0 \ + -t ipceicis-developerframework:latest . +``` + +**Test the image:** + +```bash +docker run -d -p 8080:80 --name hugo-test ipceicis-developerframework:latest +curl http://localhost:8080 +docker stop hugo-test && docker rm hugo-test +``` + +### Image Structure + +- **Build Stage**: Node.js base, installs Go and Hugo +- **Runtime Stage**: nginx:alpine serves static content (~50MB) + +Build process: +1. Install npm dependencies +2. Download Hugo modules +3. Build static site (`hugo --gc --minify`) +4. Copy to nginx container + +### CI/CD Pipeline + +`.github/workflows/ci.yaml` automatically: +1. Extracts versions from devbox environment +2. Builds multi-arch images (amd64 + arm64) +3. Pushes to container registry + +**Required GitHub Secrets:** +- `PACKAGES_USER` - Registry username +- `PACKAGES_TOKEN` - Registry token/password + +#### CI/CD +```bash +task ci # Run full CI pipeline locally +``` + +### Using NPM Scripts (Alternative) + +If you prefer NPM: +```bash +npm test # All tests +npm run test:quick # Quick tests +npm run test:build # Build test +npm run test:markdown # Markdown linting +npm run test:html # HTML validation +npm run test:links # Link checking +``` + +### Using Hugo Directly + +```bash +# Development server +hugo server + +# Production build +hugo --gc --minify + +# Check version +hugo version +``` + +## 📁 Project Structure + +``` +. +├── content/ # Content files (Markdown) +│ └── en/ # English content +│ ├── docs/ # Documentation +│ └── blog/ # Blog posts +├── resources/ # LikeC4 architecture models +│ ├── edp-likec4/ # Platform architecture (C4 models) +│ └── doc-likec4/ # Documentation platform architecture +├── layouts/ # Custom HTML templates +│ └── shortcodes/ # Custom shortcodes (e.g., likec4-view) +├── static/ # Static files +│ └── js/ # JavaScript (LikeC4 webcomponents) +├── assets/ # Assets (SCSS, images) +├── public/ # Generated site (not in Git) +├── hugo.toml # Hugo configuration +├── go.mod # Hugo modules (Docsy theme) +├── Taskfile.yml # Task definitions +├── package.json # NPM dependencies & scripts +├── devbox.json # Devbox configuration +├── .env.versions # Version definitions (SSOT) +├── Dockerfile # Multi-stage container build +├── README.md # Main README +├── README-developer.md # This file +├── README-technicalWriter.md # Guide for content contributors +├── README-likec4.md # LikeC4 architecture modeling guide +└── RELEASE.md # Release process documentation +``` + +## 📝 Content Creation + +### Creating New Pages + +```bash +# Using Hugo +hugo new docs/concepts/my-page.md +hugo new blog/my-post.md + +# Or create manually in content/en/ +``` + +### Front Matter + +Every content file needs front matter: + +```yaml +--- +title: "My Page Title" +description: "Page description" +date: 2025-10-23 +weight: 10 # Order in navigation +--- + +Your content here... +``` + +### Using Docsy Shortcodes + +Docsy provides helpful shortcodes: + +#### Tabbed Panes +```markdown +{{}} + {{}} + Content for tab 1 + {{}} + {{}} + Content for tab 2 + {{}} +{{}} +``` + +#### Code Blocks +```markdown +{{}} +key: value +{{}} +``` + +#### Alerts +```markdown +{{}} +Important information +{{}} +``` + +#### LikeC4 Architecture Diagrams +```markdown +{{}} +``` + +Parameters: +- `view` - View ID from C4 model +- `project` - `"architecture"` or `"documentation-platform"` +- `title` - Optional custom title + +See [README-technicalWriter.md](./README-technicalWriter.md) for detailed LikeC4 workflow. + +## 🧪 Testing + +See [TESTING.md](TESTING.md) for detailed testing documentation. + +Quick reference: +- `task test` - Run all tests before committing +- `task test:quick` - Fast checks during development +- Tests run automatically on GitHub Actions for PRs + +## 🔧 Configuration + +### Hugo Configuration (`hugo.toml`) + +Main settings: +- `baseURL` - Site URL +- `title` - Site title +- `defaultContentLanguage` - Default language +- Module imports (Docsy theme) + +### Docsy Configuration + +Docsy-specific settings in `hugo.toml`: +```toml +[params] +github_repo = "your-repo" +github_branch = "main" +``` + +### Devbox Configuration (`devbox.json`) + +Defines all development tools and their versions. + +Update tools: +```bash +devbox update # Update all packages +task deps:update # Update all dependencies (devbox + npm + hugo modules) +``` + +## 🎨 Styling + +Custom styles in `assets/scss/_variables_project.scss`: +```scss +// Override Bootstrap/Docsy variables +$primary: #your-color; +``` + +Hugo will process SCSS automatically with PostCSS and Autoprefixer. + +## 🌐 Multi-Language Support + +Add new language: +1. Create `content//` directory +2. Add language config in `hugo.toml`: +```toml +[languages.] +languageName = "Language Name" +weight = 2 +``` + +## 🐛 Troubleshooting + +### "Module not found" errors +```bash +hugo mod get -u +hugo mod tidy +``` + +### PostCSS errors +```bash +npm install +``` + +### Build errors +```bash +task clean +task build +``` + +### Devbox issues +```bash +devbox update +devbox shell --refresh +``` + +## 📚 Resources + +- [Hugo Documentation](https://gohugo.io/documentation/) +- [Docsy Documentation](https://www.docsy.dev/docs/) +- [LikeC4 Documentation](https://likec4.dev/) +- [Taskfile Documentation](https://taskfile.dev/) +- [Devbox Documentation](https://www.jetify.com/devbox/docs/) + +**Project-specific guides:** +- [README-technicalWriter.md](./README-technicalWriter.md) - Content contributor guide +- [TESTING.md](./TESTING.md) - Detailed testing documentation +- [DOCUMENTOR-GUIDE.md](./DOCUMENTOR-GUIDE.md) - Quick reference for technicalWriters + +## 🤝 Contributing + +1. Create a feature branch +2. Make your changes +3. Run tests: `task test` +4. Commit with semantic messages: + - `feat(scope): add new feature` + - `fix(scope): fix bug` + - `docs(scope): update documentation` + - `test(scope): add tests` + - `chore(scope): maintenance` +5. Push and create pull request + +## 📦 Deployment + +Build for production: +```bash +task build +``` + +Output will be in `public/` directory, ready for deployment. diff --git a/doc/README-likec4.md b/doc/README-likec4.md new file mode 100644 index 0000000..c38cb99 --- /dev/null +++ b/doc/README-likec4.md @@ -0,0 +1,383 @@ +# LikeC4 Architecture Modeling + +This repository contains two distinct LikeC4 architecture projects for C4 model-based architecture visualization. + +## 📁 Project Structure + +### `resources/edp-likec4/` + +**Enterprise Developer Platform (EDP) Architecture** + +Contains architecture models for the platform itself - the systems, services, and infrastructure that make up the EDP. + +- **Purpose:** Document what we build +- **Models:** Platform components, services, deployment environments +- **Views:** System overviews, component details, deployment diagrams + +### `resources/doc-likec4/` + +**Documentation Platform Architecture** + +Contains architecture models that explain how this documentation system works - the Hugo/Docsy setup, CI/CD pipeline, and deployment process. + +- **Purpose:** Document how we document (meta-documentation) +- **Models:** Hugo, LikeC4, Taskfile, GitHub Actions, Edge deployment +- **Views:** Documentation workflow, CI/CD pipeline, testing capabilities + +## 🚀 Quick Start + +### 1. Install Dependencies + +```bash +# In the LikeC4 project directory +cd resources/edp-likec4 +# or +cd resources/doc-likec4 + +# Install dependencies (only once) +npm install +``` + +### 2. Start LikeC4 Preview + +Preview your architecture models in the browser: + +```bash +npm start +# Opens http://localhost:5173 +``` + +This launches the interactive LikeC4 viewer where you can: +- Navigate through all views +- Explore relationships +- Test changes in real-time + +### 3. Edit Models + +Edit `.c4` files in your project: + +**Example structure:** + +```text +resources/edp-likec4/ +├── models/ +│ ├── systems.c4 # System definitions +│ ├── services.c4 # Service components +│ └── infrastructure.c4 # Infrastructure elements +├── views/ +│ ├── overview.c4 # High-level views +│ ├── deployment/ # Deployment views +│ └── components/ # Component details +├── deployment/ +│ └── environments.c4 # Deployment configurations +└── likec4.config.json # LikeC4 configuration +``` + +**Example C4 model:** + +```likec4 +specification { + element system + element service + element database +} + +model { + mySystem = system 'My System' { + description 'System description' + + backend = service 'Backend API' { + description 'REST API service' + } + + db = database 'Database' { + description 'PostgreSQL database' + } + + backend -> db 'reads/writes' + } +} + +views { + view systemOverview { + title "System Overview" + + include mySystem + + autoLayout TopBottom + } +} +``` + +### 4. Generate Web Components + +After editing models, generate the web component for Hugo: + +```bash +# From repository root +task likec4:generate +``` + +This creates `static/js/likec4-webcomponent.js` (~2-3 MB) with all views. + +### 5. Embed in Hugo + +Use the `likec4-view` shortcode in Markdown: + +```markdown +{{}} +``` + +Parameters: +- `view` - View ID from your C4 model (required) +- `project` - `"architecture"` (edp-likec4) or `"documentation-platform"` (doc-likec4) +- `title` - Optional custom title + +## 🔄 Development Workflow + +### Architecture Changes Workflow + +1. **Edit Models** + - Modify `.c4` files in `models/` or `views/` + +2. **Preview Changes** + ```bash + cd resources/edp-likec4 # or doc-likec4 + npm start + ``` + Opens http://localhost:5173 for real-time preview + +3. **Validate Models** + ```bash + # From repository root + task likec4:validate + ``` + +4. **Generate Web Components** + ```bash + task likec4:generate + ``` + +5. **Test in Hugo** + ```bash + task serve + # Open http://localhost:1313 + ``` + +6. **Commit Changes** + ```bash + git add resources/edp-likec4/ + git add resources/doc-likec4/ + git add static/js/likec4-webcomponent.js + git commit -m "feat: update architecture diagrams" + ``` + +### Available Tasks + +```bash +task likec4:generate # Generate web components from all projects +task likec4:validate # Validate C4 models (ignore layout drift) +task likec4:update # Update LikeC4 to latest version +``` + +## 🔍 Finding View IDs + +To find available view IDs for embedding: + +```bash +# In the project directory +cd resources/edp-likec4 +grep -r "^view " views/ models/ --include="*.c4" + +# Or search all C4 files +grep -r "view\s\+\w" . --include="*.c4" +``` + +View IDs are defined in your C4 files: + +```likec4 +views { + view myViewId { # ← This is the view ID + title "My View" + // ... + } +} +``` + +## 📚 LikeC4 Syntax + +### Specification Block + +Define element and relationship types: + +```likec4 +specification { + element person + element system + element container + element component + + relationship async + relationship sync +} +``` + +### Model Block + +Define your architecture: + +```likec4 +model { + customer = person 'Customer' { + description 'End user' + } + + system = system 'My System' { + frontend = container 'Frontend' { + description 'React application' + } + + backend = container 'Backend' { + description 'Node.js API' + } + + frontend -> backend 'API calls' + } + + customer -> system.frontend 'uses' +} +``` + +### Views Block + +Create diagrams: + +```likec4 +views { + view overview { + title "System Overview" + + include * + + autoLayout TopBottom + } + + view systemDetail { + title "System Details" + + include system.* + + autoLayout LeftRight + } +} +``` + +## 🎯 Common View IDs + +### EDP Platform (resources/edp-likec4/) + +- `edp` - EDP overview +- `landscape` - Developer landscape +- `otc-faas` - OTC FaaS deployment +- `edpbuilderworkflow` - Builder workflow +- Component views: `keycloak`, `forgejo`, `argoCD`, etc. + +### Documentation Platform (resources/doc-likec4/) + +- `overview` - Complete system overview +- `localDevelopment` - Technical Writer workflow +- `cicdPipeline` - CI/CD pipeline +- `deploymentFlow` - Edge deployment +- `fullWorkflow` - End-to-end workflow +- `testingCapabilities` - Testing overview + +## 🛠️ Configuration + +### likec4.config.json + +Each project has a configuration file: + +```json +{ + "sources": [ + "models/**/*.c4", + "views/**/*.c4", + "deployment/**/*.c4" + ] +} +``` + +This tells LikeC4 where to find your model files. + +## 🔗 Integration with Hugo + +### How It Works + +1. **Source:** `.c4` files contain your architecture models +2. **Codegen:** `task likec4:generate` creates a self-contained web component +3. **Static Asset:** `static/js/likec4-webcomponent.js` bundled with Hugo site +4. **Custom Element:** Web Components standard enables `` tag +5. **Rendering:** Shadow DOM renders interactive diagrams + +### Web Component Registration + +The web component is automatically loaded via `layouts/partials/hooks/head-end.html`: + +```html + +``` + +This loader dynamically loads the LikeC4 web component only on pages that use it. + +### Styling + +Custom styles in `static/css/likec4-styles.css`: +- Dark mode support +- Telekom magenta color scheme +- Responsive sizing +- Loading indicators + +## 📖 Resources + +- [LikeC4 Documentation](https://likec4.dev/) +- [LikeC4 GitHub](https://github.com/likec4/likec4) +- [C4 Model](https://c4model.com/) + +## 🔧 Troubleshooting + +### Web Component Not Rendering + +1. Check that view ID exists: + ```bash + grep -r "view yourViewId" resources/ + ``` + +2. Regenerate web component: + ```bash + task likec4:generate + ``` + +3. Clear browser cache and reload + +### Layout Drift Warnings + +Layout drift warnings during validation are expected and can be ignored: + +```bash +task likec4:validate # Ignores layout drift +task likec4:validate:layout # Full validation including layout +``` + +### NPM Errors + +```bash +cd resources/edp-likec4 +rm -rf node_modules package-lock.json +npm install +``` + +## 🎓 Learn More + +For detailed usage in content creation, see: +- [README-technicalWriter.md](./README-technicalWriter.md) - Content contributor guide +- [content/en/docs/documentation/local-development.md](./content/en/docs/documentation/local-development.md) - Local development guide diff --git a/doc/README-technical-writer.md b/doc/README-technical-writer.md new file mode 100644 index 0000000..bfe248f --- /dev/null +++ b/doc/README-technical-writer.md @@ -0,0 +1,438 @@ +# Technical Writer Guide + +Welcome! This guide helps you contribute to the IPCEI-CIS Developer Framework documentation. + +## Prerequisites + +- Basic knowledge of Markdown +- Git installed +- Either **Devbox** (recommended) or manual tool installation + +## Quick Start + +### 1. Clone and Setup + +```bash +# Clone the repository +git clone +cd ipceicis-developerframework + +# Install dependencies +task deps:install + +# If using Devbox +devbox shell +``` + +### 2. Start Development Server + +```bash +task serve +``` + +Open your browser at `http://localhost:1313` - changes appear instantly! + +### 3. Create Content + +Create a new page: + +```bash +# Example: Add a new guide +vim content/en/docs/your-topic/_index.md +``` + +Add frontmatter: + +```yaml +--- +title: "Your Topic" +linkTitle: "Your Topic" +weight: 10 +description: > + Brief description of your topic. +--- + +Your content here... +``` + +### 4. Test and Commit + +```bash +# Run tests (fastest - Hugo only) +task test:hugo + +# Or run full tests (includes LikeC4 validation) +task test + +# Commit your changes +git add . +git commit -m "docs: Add guide for X" +git push +``` + +## Documentation Structure + +``` +content/en/ +├── _index.md # Homepage +├── docs/ +│ ├── architecture/ # Architecture documentation +│ │ └── highlevelarch.md +│ ├── documentation/ # Documentation guides +│ │ ├── local-development.md +│ │ ├── testing.md +│ │ └── cicd.md +│ ├── decisions/ # ADRs (Architecture Decision Records) +│ └── v1/ # Legacy documentation +└── blog/ # Blog posts + └── 20250401_review.md +``` + +## Writing Documentation + +### Markdown Basics + +```markdown +# Heading 1 +## Heading 2 +### Heading 3 + +**Bold text** +*Italic text* + +- Bullet list +- Item 2 + +1. Numbered list +2. Item 2 + +[Link text](https://example.com) + +`inline code` + +\`\`\`bash +# Code block +echo "Hello" +\`\`\` +``` + +### Using Shortcodes + +#### Alerts + +```markdown +{{< alert title="Note" >}} +Important information here +{{< /alert >}} + +{{< alert title="Warning" color="warning" >}} +Warning message +{{< /alert >}} +``` + +#### Code Tabs + +```markdown +{{< tabpane >}} +{{< tab header="Bash" >}} +\`\`\`bash +echo "Hello" +\`\`\` +{{< /tab >}} +{{< tab header="Python" >}} +\`\`\`python +print("Hello") +\`\`\` +{{< /tab >}} +{{< /tabpane >}} +``` + +## Creating Architecture Diagrams + +### 1. Edit LikeC4 Models + +Navigate to the appropriate project: +- `resources/edp-likec4/` - Platform architecture +- `resources/doc-likec4/` - Documentation platform architecture + +Create or edit `.c4` files: + +```likec4 +specification { + element person + element system +} + +model { + user = person 'User' { + description 'End user of the platform' + } + + platform = system 'Platform' { + description 'The EDP platform' + } + + user -> platform 'uses' +} + +views { + view overview { + title "System Overview" + + include user + include platform + + autoLayout TopBottom + } +} +``` + +### 2. Generate Webcomponent + +```bash +task likec4:generate +``` + +### 3. Embed in Documentation + +```markdown +{{< likec4-view view="overview" project="architecture" title="System Overview" >}} +``` + +**Parameters:** +- `view` - View ID from your `.c4` file +- `project` - `"architecture"` or `"documentation-platform"` +- `title` - Custom header text (optional) + +### 4. Find Available Views + +```bash +# List all view IDs +grep -r "^view " resources/edp-likec4/ --include="*.c4" +``` + +## Available Tasks + +View all tasks: + +```bash +task --list +``` + +### Development Tasks + +| Task | Description | +|------|-------------| +| `task serve` | Start dev server with hot reload | +| `task build` | Build production site | +| `task clean` | Remove build artifacts | +| `task test` | Run all tests (includes LikeC4) | +| `task test:hugo` | Run Hugo-only tests (fastest) | +| `task test:full` | All tests + link checking | + +### LikeC4 Tasks + +| Task | Description | +|------|-------------| +| `task likec4:generate` | Generate webcomponents from `.c4` files | +| `task likec4:validate` | Validate LikeC4 syntax | +| `task likec4:update` | Update LikeC4 to latest version | + +### Dependency Tasks + +| Task | Description | +|------|-------------| +| `task deps:install` | Install all dependencies | +| `task deps:update` | Update dependencies | + +## Testing + +### Quick Test (Recommended) + +Before committing: + +```bash +task test:quick +``` + +Validates: +- Hugo build succeeds +- Markdown syntax is correct +- LikeC4 models are valid + +### Full Test + +Includes link checking: + +```bash +task test +``` + +**Note:** Link checking can be slow. Use `test:quick` during development. + +## Best Practices + +### Writing Style + +✅ **Do:** +- Write in present tense: "The system processes..." +- Use code blocks with syntax highlighting +- Keep sections concise (3-5 paragraphs max) +- Add diagrams for complex concepts +- Use bullet points for lists +- Test locally before committing + +❌ **Don't:** +- Use future tense: "The system will process..." +- Write long paragraphs (split into sections) +- Forget to add descriptions in frontmatter +- Commit without testing + +### Frontmatter + +Always include: + +```yaml +--- +title: "Page Title" # Full title +linkTitle: "Short Title" # Used in navigation +weight: 10 # Order in menu (lower = higher) +description: > # Used in SEO and cards + Brief description of the page content. +--- +``` + +Optional: + +```yaml +--- +date: 2025-01-15 # Publication date (for blog posts) +author: "Your Name" # Author name +categories: ["Category"] # Categories +tags: ["tag1", "tag2"] # Tags +--- +``` + +### File Naming + +- Use lowercase +- Use hyphens, not underscores: `my-guide.md` not `my_guide.md` +- Main page in a section: `_index.md` +- Single page: `page-name.md` + +### Images + +Place images in the same folder as your markdown file: + +``` +docs/my-guide/ +├── _index.md +├── screenshot.png +└── diagram.svg +``` + +Reference them: + +```markdown +![Alt text](screenshot.png) +``` + +## Common Issues + +### Port 1313 already in use + +```bash +# Find and kill the process +lsof -ti:1313 | xargs kill -9 +``` + +### Build errors + +```bash +# Clean and rebuild +task clean +task build:dev +``` + +### Hugo not found (when not using Devbox) + +```bash +# Make sure you're in devbox shell +devbox shell + +# Or install Hugo manually +# See: https://gohugo.io/installation/ +``` + +### LikeC4 validation fails + +```bash +# Validate with detailed output +cd resources/edp-likec4 +npx likec4 validate --verbose + +# Ignore layout drift (common, not critical) +npx likec4 validate --ignore-layout +``` + +## Git Workflow + +### Create a Branch + +```bash +git checkout -b feature/my-new-guide +``` + +### Commit Changes + +```bash +# Stage your changes +git add content/en/docs/my-guide/ + +# Commit with clear message +git commit -m "docs: Add guide for X feature" +``` + +### Commit Message Convention + +Format: `: ` + +Types: +- `docs:` - Documentation changes +- `feat:` - New feature or content +- `fix:` - Bug fix or correction +- `chore:` - Maintenance tasks +- `style:` - CSS/styling changes + +Examples: +``` +docs: Add installation guide for Windows users +feat: Add interactive architecture diagram for OTC deployment +fix: Correct typo in API documentation +chore: Update LikeC4 to version 1.43.0 +``` + +### Push and Create PR + +```bash +# Push your branch +git push origin feature/my-new-guide + +# Create Pull Request on Forgejo/GitHub +``` + +## Getting Help + +- **Full Documentation**: See `/content/en/docs/documentation/` +- **LikeC4 Documentation**: https://likec4.dev/ +- **Hugo Documentation**: https://gohugo.io/documentation/ +- **Docsy Theme**: https://www.docsy.dev/docs/ + +## Next Steps + +1. Read the [Local Development Guide](./content/en/docs/documentation/local-development.md) +2. Explore [Architecture Documentation](./content/en/docs/architecture/) +3. Check [Testing Guide](./content/en/docs/documentation/testing.md) +4. Learn about [CI/CD Pipeline](./content/en/docs/documentation/cicd.md) + +Happy documenting! 📝✨ diff --git a/doc/RELEASE.md b/doc/RELEASE.md new file mode 100644 index 0000000..f435beb --- /dev/null +++ b/doc/RELEASE.md @@ -0,0 +1,207 @@ +# Release Process + +This document describes the release process for the IPCEI-CIS Developer Framework. + +## Overview + +The project uses **Semantic Versioning** (SemVer) for releases. Each release is triggered by a Git tag and automatically creates: + +- Multi-platform Docker images (linux/amd64, linux/arm64) +- Forgejo release with release notes +- Automatically generated changelog + +## Versioning Schema + +We follow [Semantic Versioning 2.0.0](https://semver.org/): + +- `MAJOR.MINOR.PATCH` (e.g., `v1.2.3`) +- **MAJOR**: Breaking changes (incompatible API changes) +- **MINOR**: New features (backwards compatible) +- **PATCH**: Bug fixes (backwards compatible) + +## Creating a Release + +### 1. Check Prerequisites + +Ensure that: + +- All tests are passing (`task test`) +- CI pipeline runs successfully +- All desired changes are in the `main` branch +- You have the latest version: `git pull origin main` + +### 2. Determine Version + +Determine the new version number based on the changes: + +```bash +# Show current tag +git describe --tags --abbrev=0 + +# Show commits since last release +git log $(git describe --tags --abbrev=0)..HEAD --oneline +``` + +### 3. Create Tag + +Create an annotated tag with the new version: + +```bash +# For a new patch release (e.g., v1.2.3 → v1.2.4) +git tag -a v1.2.4 -m "Release v1.2.4" + +# For a minor release (e.g., v1.2.3 → v1.3.0) +git tag -a v1.3.0 -m "Release v1.3.0" + +# For a major release (e.g., v1.2.3 → v2.0.0) +git tag -a v2.0.0 -m "Release v2.0.0" +``` + +### 4. Push Tag + +Push the tag to the repository - this triggers the release pipeline: + +```bash +git push origin v1.2.4 +``` + +### 5. Monitor Release Pipeline + +The release pipeline (`release.yaml`) starts automatically: + +1. Open the Actions tab in Forgejo +2. Monitor the `release` workflow +3. On success: Release is visible on the Releases page + +## What Happens Automatically? + +The release pipeline (`release.yaml`) performs the following steps: + +1. **Build Docker Images** + - Multi-platform build (AMD64 + ARM64) + - Images are tagged with: + - `vX.Y.Z` (exact version, e.g., `v1.2.3`) + - `vX.Y` (minor version, e.g., `v1.2`) + - `vX` (major version, e.g., `v1`) + - `latest` (latest release) + +2. **Push Images** + - To the container registry (Forgejo Packages) + +3. **Generate Changelog** + - Automatically from Git commits since last release + - Format: `- Commit Message (hash)` + +4. **Create Forgejo Release** + - With generated release notes + - Contains build versions (Node, Go, Hugo) + - Docker pull commands + - Changelog + +## Using Docker Images + +After a successful release, the images are available: + +```bash +# Specific version +docker pull /:v1.2.3 + +# Latest +docker pull /:latest + +# Major/Minor version +docker pull /:v1 +docker pull /:v1.2 +``` + +## Best Practices + +### Commit Messages + +Use meaningful commit messages, as they will appear in the changelog: + +```bash +# Good +git commit -m "fix: correct multi-platform Docker build for ARM64" +git commit -m "feat: add automatic release pipeline" +git commit -m "docs: update RELEASE.md" + +# Bad +git commit -m "fix stuff" +git commit -m "wip" +``` + +**Conventional Commits** help with categorization: + +- `feat:` - New features +- `fix:` - Bug fixes +- `docs:` - Documentation +- `chore:` - Maintenance +- `refactor:` - Code restructuring +- `test:` - Tests + +### Release Frequency + +- **Patch releases**: As needed (bug fixes) +- **Minor releases**: Regular (new features) +- **Major releases**: Rare (breaking changes) + +### Hotfixes + +For urgent bug fixes: + +1. Create branch from last release tag +2. Fix the bug +3. Create new patch release + +```bash +git checkout v1.2.3 +git checkout -b hotfix/critical-bug +# Implement fix +git commit -m "fix: critical bugfix" +git tag -a v1.2.4 -m "Release v1.2.4 - Hotfix" +git push origin v1.2.4 +``` + +## Troubleshooting + +### Release Pipeline Fails + +1. **Check Secrets**: `PACKAGES_USER`, `PACKAGES_TOKEN` must be set +2. **Check Logs**: Open the failed workflow in the Actions tab +3. **Local Test**: + + ```bash + task build:oci-image + task test:oci-image + ``` + +### Delete/Correct Tag + +**Locally:** + +```bash +git tag -d v1.2.3 +``` + +**Remote:** + +```bash +git push --delete origin v1.2.3 +``` + +⚠️ **Warning**: Releases should not be deleted after they have been published! + +### Edit Release Notes Afterwards + +Release notes can be manually edited in Forgejo: + +1. Go to Releases +2. Click on the release +3. Click "Edit" + +## Further Information + +- [Semantic Versioning](https://semver.org/) +- [Conventional Commits](https://www.conventionalcommits.org/) +- [Keep a Changelog](https://keepachangelog.com/) diff --git a/doc/TODO.md b/doc/TODO.md new file mode 100644 index 0000000..7c4bb85 --- /dev/null +++ b/doc/TODO.md @@ -0,0 +1,4 @@ +# Todos + + [] update and rework READMEs, reduce likec4 description + [] remove / consolidate doc-likec4 with edp-likec4 (as it seems that webcomponents only work for one likec4-config) diff --git a/edgeconnectdeployment.yaml b/edgeconnectdeployment.yaml new file mode 100644 index 0000000..d2af901 --- /dev/null +++ b/edgeconnectdeployment.yaml @@ -0,0 +1,23 @@ +kind: edgeconnect-deployment +metadata: + name: "edpdoc" + appVersion: "1.0.0" + organization: "edp2" +spec: + k8sApp: + manifestFile: "./k8s-deployment.yaml" + infraTemplate: + - region: "EU" + cloudletOrg: "TelekomOP" + cloudletName: "Munich" + flavorName: "EU.small" + network: + outboundConnections: + - protocol: "tcp" + portRangeMin: 80 + portRangeMax: 80 + remoteCIDR: "0.0.0.0/0" + - protocol: "tcp" + portRangeMin: 443 + portRangeMax: 443 + remoteCIDR: "0.0.0.0/0" diff --git a/go.mod b/go.mod index 625dea4..f4c0b45 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,8 @@ module github.com/me/ipceicis go 1.22.5 -require github.com/google/docsy v0.10.0 // indirect +require ( + github.com/FortAwesome/Font-Awesome v0.0.0-20241216213156-af620534bfc3 // indirect + github.com/google/docsy v0.12.0 // indirect + github.com/twbs/bootstrap v5.3.8+incompatible // indirect +) diff --git a/go.sum b/go.sum index 78bc934..6a51e65 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,7 @@ -github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= -github.com/google/docsy v0.10.0 h1:6tMDacPwAyRWNCfvsn/9qGOZDQ8b0aRzjRZvnZPY5dg= -github.com/google/docsy v0.10.0/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc= -github.com/twbs/bootstrap v5.3.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= +github.com/FortAwesome/Font-Awesome v0.0.0-20241216213156-af620534bfc3 h1:/iluJkJiyTAdnqrw3Yi9rH2HNHhrrtCmj8VJe7I6o3w= +github.com/FortAwesome/Font-Awesome v0.0.0-20241216213156-af620534bfc3/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= +github.com/google/docsy v0.12.0 h1:CddZKL39YyJzawr8GTVaakvcUTCJRAAYdz7W0qfZ2P4= +github.com/google/docsy v0.12.0/go.mod h1:1bioDqA493neyFesaTvQ9reV0V2vYy+xUAnlnz7+miM= +github.com/twbs/bootstrap v5.3.6+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= +github.com/twbs/bootstrap v5.3.8+incompatible h1:eK1fsXP7R/FWFt+sSNmmvUH9usPocf240nWVw7Dh02o= +github.com/twbs/bootstrap v5.3.8+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= diff --git a/hugo.toml b/hugo.toml index 29044f7..9b98038 100644 --- a/hugo.toml +++ b/hugo.toml @@ -112,10 +112,10 @@ url_latest_version = "https://example.com" github_branch= "main" # Google Custom Search Engine ID. Remove or comment out to disable search. -gcs_engine_id = "d72aa9b2712488cc3" +# gcs_engine_id = "d72aa9b2712488cc3" # Enable Lunr.js offline search -offlineSearch = false +offlineSearch = true # Enable syntax highlighting and copy buttons on code blocks with Prism prism_syntax_highlighting = false @@ -152,7 +152,7 @@ enable = false # workspace = "docsy.work" [module.hugoVersion] extended = true - min = "0.110.0" + min = "0.151.0" [[module.imports]] path = "github.com/google/docsy" disable = false @@ -174,4 +174,10 @@ svg_image_url = "https://www.plantuml.com/plantuml/svg/" # By default the plantuml implementation uses tags to display UML diagrams. # When svg is set to true, diagrams are displayed using tags, maintaining functionality like links e.g. # default = false -svg = true \ No newline at end of file +svg = true + +# LikeC4 interactive architecture diagrams configuration +[params.likec4] +enable = true +# The webcomponent file will be generated from resources/likec4 and placed in static/js/ +webcomponent_file = "likec4-webcomponent.js" \ No newline at end of file diff --git a/k8s-deployment.yaml b/k8s-deployment.yaml new file mode 100644 index 0000000..02166d0 --- /dev/null +++ b/k8s-deployment.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Service +metadata: + name: edpdoc + labels: + run: edpdoc +spec: + type: LoadBalancer + ports: + - name: tcp80 + protocol: TCP + port: 80 + targetPort: 80 + selector: + run: edpdoc +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: edpdoc +spec: + replicas: 1 + selector: + matchLabels: + run: edpdoc + template: + metadata: + labels: + run: edpdoc + mexDeployGen: kubernetes-basic + spec: + volumes: + containers: + - name: edpdoc + image: ###IMAGETAG### + imagePullPolicy: Always + ports: + - containerPort: 80 + protocol: TCP diff --git a/layouts/_default/_markup/render-heading.html b/layouts/_default/_markup/render-heading.html deleted file mode 100644 index 7f8e974..0000000 --- a/layouts/_default/_markup/render-heading.html +++ /dev/null @@ -1 +0,0 @@ -{{ template "_default/_markup/td-render-heading.html" . }} diff --git a/layouts/docs/single.html b/layouts/docs/single.html new file mode 100644 index 0000000..7386260 --- /dev/null +++ b/layouts/docs/single.html @@ -0,0 +1,17 @@ +{{ define "main" }} +{{ partial "legacy-banner.html" . }} +
+

{{ .Title }}

+ {{ with .Params.description }}
{{ . | markdownify }}
{{ end }} + {{ .Content }} + {{ if (and (not .Params.hide_feedback) (.Site.Params.ui.feedback.enable) (.Site.GoogleAnalytics)) }} + {{ partial "feedback.html" .Site.Params.ui.feedback }} +
+ {{ end }} + {{ if (.Site.Config.Services.Disqus.Shortname) }} +
+ {{ partial "disqus-comment.html" . }} + {{ end }} +
{{ partial "page-meta-lastmod.html" . }}
+
+{{ end }} diff --git a/layouts/partials/hooks/head-end.html b/layouts/partials/hooks/head-end.html new file mode 100644 index 0000000..6968af4 --- /dev/null +++ b/layouts/partials/hooks/head-end.html @@ -0,0 +1,10 @@ +{{ if .Site.Params.likec4.enable }} + + + + +{{ end }} + + + +{{ partial "version-info-script.html" . }} diff --git a/layouts/partials/legacy-banner.html b/layouts/partials/legacy-banner.html new file mode 100644 index 0000000..045e3e0 --- /dev/null +++ b/layouts/partials/legacy-banner.html @@ -0,0 +1,13 @@ +{{ if or (hasPrefix .RelPermalink "/docs/v1/") (hasPrefix .File.Path "docs/v1/") }} + +{{ end }} diff --git a/layouts/partials/navbar-version.html b/layouts/partials/navbar-version.html new file mode 100644 index 0000000..59a31ca --- /dev/null +++ b/layouts/partials/navbar-version.html @@ -0,0 +1,17 @@ +{{/* Header version info - compact display in navbar */}} +{{ $buildInfo := .Site.Data.build_info }} +{{ if $buildInfo }} + +{{ end }} \ No newline at end of file diff --git a/layouts/partials/version-info-script.html b/layouts/partials/version-info-script.html new file mode 100644 index 0000000..d1724af --- /dev/null +++ b/layouts/partials/version-info-script.html @@ -0,0 +1,35 @@ +{{/* Inline JavaScript to add version info to navbar */}} +{{ $buildInfo := .Site.Data.build_info }} +{{ if $buildInfo }} + +{{ end }} \ No newline at end of file diff --git a/layouts/partials/version-info.html b/layouts/partials/version-info.html new file mode 100644 index 0000000..ac3315e --- /dev/null +++ b/layouts/partials/version-info.html @@ -0,0 +1,36 @@ +{{/* Version info banner - displays git commit info and build time */}} +{{ $buildInfo := .Site.Data.build_info }} +{{ if $buildInfo }} +
+
+
+
+ + + {{ if $buildInfo.git_tag }} + {{ $buildInfo.git_tag }} + {{ if ne $buildInfo.git_tag $buildInfo.git_commit }} + (@{{ $buildInfo.git_commit_short }}) + {{ end }} + {{ else }} + {{ $buildInfo.git_branch }} + @{{ $buildInfo.git_commit_short }} + {{ end }} + {{ if $buildInfo.git_dirty }} + dirty + {{ end }} + +
+
+ + + Built {{ $buildInfo.build_time_human }} + {{ if $buildInfo.build_user }} + by {{ $buildInfo.build_user }} + {{ end }} + +
+
+
+
+{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/likec4-view.html b/layouts/shortcodes/likec4-view.html new file mode 100644 index 0000000..b57ac06 --- /dev/null +++ b/layouts/shortcodes/likec4-view.html @@ -0,0 +1,53 @@ +{{- $view := .Get "view" -}} +{{- $project := .Get "project" | default "architecture" -}} +{{- $title := .Get "title" | default (print "Architecture View: " $view) -}} +{{- $uniqueId := printf "likec4-loading-%s" (md5 $view) -}} + +
+
+ {{ $title }} +
+ +
+ Loading architecture diagram... +
+
+ + diff --git a/otc.conf b/otc.conf deleted file mode 100644 index d44f520..0000000 --- a/otc.conf +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -clusters: -- cluster: - certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lSQU5NM3Z0ZlRKWmdZVWdkZG14NC9SbjB3RFFZSktvWklodmNOQVFFTEJRQXcKRFRFTE1Ba0dBMVVFQXhNQ1kyRXdIaGNOTWpRd09UQXlNVFEwT1RNd1doY05NelF3T1RBeU1UUTBPVE13V2pBTgpNUXN3Q1FZRFZRUURFd0pqWVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWJUCjhJb0xxRGNmdmRhTUNicExDbEZEd09rMDVQQUhsdXBmbkF5bmd3OStrWmZBY21GNUd1WS95TlJtQWUxbGY2RlAKc3pWRUNRZXVFa1gyS1lRekxvclJMOE53VmM5RDBNWkRJMmRHMEdVUjZueU5RZHZaTkFLUWtwM3luT2VqbEdvYwp2SWVCREVKejJnNzErWTZoOGtwWUh0NEx1clIwZStvVEwySXhBYStIdjh6SmJCa2pPQ1lCZExRYWVGNjduSE15CitDTUV2emRRSlBCSXlqb2RtREFKTWVDWm9ac3g0YUE5T2hXL3dwczdKTzRnQ1NuUGVkMjN4blVTeWd4QnNBWVcKMWJDZEhONzlscWZxaFV6K21Wb3hrRXZkemt6S0ErWUdSZ3FSY0ZCRE9pR1dOVzREV0t5Y2hsYTBoektPZ3dFZwpvK21WaXBtV1RCbjY4REJJVWdjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0dtTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZGYVR6VEUwNTNNSy9tN0JyY3hXMDVOYXkxN0VNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFBZGtMWVpLNWZnRFNYb2xGNTNwTldYNWlxMlJDMXVaTlhOb3ArZ0drSjkzTW5tNFM5bQpZWXNiMks2ZDNUM0JkdmNHOWQ0VUhGTzMvdU9kaTkrc3AxY2h1U25hNis4V1hrZkZBY0c2anJubXVVTDNzOWUyCmFrRGhoWHdubnlSQmF2N0FVdGlQeWxTVVllbmZsZDd2dC91MmRQeDRYT2QrMmcwV3ZpdHpZWUdKenY2K1FiQ1UKS1pwVENmUkhPejFCQ2JnVDBoSU5BZjhMcFNoL3pzd1lrZjM5MHV1Z0tzVkZPVVJBNmc4dU5rSEoyUzRlUEloVApib3Zzb0swYTR6WDRZUWhrREpUYTF6MVBFUzJXWW1VYU5uZWlaTTVyTWw2TEppcWFBZ01mbUg2WTI1UnJobldlCkpTS1dlNmNxajdYUDhZemxMcVBEMUpNamh5QkVHbGpFT25hSQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== - server: https://api.edf-bootstrap.cx.fg1.ffm.osc.live - name: shoot-fs1-0-edf-bootstrap-oidc -contexts: -- context: - cluster: shoot-fs1-0-edf-bootstrap-oidc - user: shoot-fs1-0-edf-bootstrap-oidc - name: shoot-fs1-0-edf-bootstrap-oidc -current-context: shoot-fs1-0-edf-bootstrap-oidc -kind: Config -preferences: {} -users: -- name: shoot-fs1-0-edf-bootstrap-oidc - user: - exec: - apiVersion: client.authentication.k8s.io/v1beta1 - args: - - oidc-login - - get-token - - --oidc-issuer-url=https://auth.apps.fs1-0.ffm.osc.live/dex - - --oidc-client-id=oidc-user - - --oidc-client-secret=8GmH7HL4mu4iwWptpV0418iMooaz4k4F - - --oidc-extra-scope=openid - - --oidc-extra-scope=profile - - --oidc-extra-scope=email - - --oidc-extra-scope=groups - - --oidc-extra-scope=audience:server:client_id:kubernetes - - --certificate-authority-data=LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUY2ekNDQk5PZ0F3SUJBZ0lRSVFPK0xDcWpDbHRiSHc0YVJGWWptakFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ2pFTE1Ba0dBMVVFQmhNQ1JFVXhLekFwQmdOVkJBb01JbFF0VTNsemRHVnRjeUJGYm5SbGNuQnlhWE5sSUZObApjblpwWTJWeklFZHRZa2d4SHpBZEJnTlZCQXNNRmxRdFUzbHpkR1Z0Y3lCVWNuVnpkQ0JEWlc1MFpYSXhKVEFqCkJnTlZCQU1NSEZRdFZHVnNaVk5sWXlCSGJHOWlZV3hTYjI5MElFTnNZWE56SURJd0hoY05Nakl3TWpJeU1UQXcKT1RBMldoY05Nekl3TWpJeU1qTTFPVFU1V2pCZU1Rc3dDUVlEVlFRR0V3SkVSVEVuTUNVR0ExVUVDZ3dlUkdWMQpkSE5qYUdVZ1ZHVnNaV3R2YlNCVFpXTjFjbWwwZVNCSGJXSklNU1l3SkFZRFZRUUREQjFVWld4bGEyOXRJRk5sClkzVnlhWFI1SUVSV0lGSlRRU0JEUVNBeU1qQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0MKZ2dJQkFLWWhCY0psRUVSUldRanNSVTIzcWJJVjE5aUxOdUE2UTNQMnd2YzYrdVo0ZkNwajhyWklFdlNwZUMxUwp5YnZnU216UnZ0c3VUL2hBNG1Ib0FJaFdpalJHVHNodGljY0dhWHFGUSt6SFFwb1FHY2tOOGhRUjUwMWVIVldyCnR6YmYxZFp4UmtoUzgrYVNtUWtLa1Y2ZlpDRzRvVXVmOTVOcnRQUmVNc3RrMGVIRk5KRU1HOTRoSFVZczFwemcKb043MnhtZ2JRYTBiZkJoMy9nWUZxbHdLOWxHam16MGhndzNRRGxucnB4T3E0RUdhc09walVtSGs4ZVJCQlhkMwpCUWM3TTQrWVZDd0VoYUdRMTV4aDR5M3NRNXM0ejFBY1AxOHJueWNmdnpZamRtdzBDSXNCQ3NPbC9sai9Fb2ZXCk1zK2h3Z002cGRPZGJReWsxd1JnS3JSaUkvcDMzM1QrY3oyR1BYRWlTTHhFUUN5THE3N2Y1WTZZMkFlRnpaSTIKV0tqSnJwbTlGTzNCYytUZ29vbURWM2hOeUdoU3FyRFdvcEpyUTl0RUI1UzZKcU1OcDlyeEFBRnVYMFkwQ2pndQo1SmhENENwNmp0dTBvdU5Kd1ZidE1rWlBwVmNwSHRhc1JJdGl1ZDNva2VtTWlqRTJSbEdtM3lGbGFUK3BEQmZvCnZ3T1NNMElqY0U0eDdvUnBWRXJuSG1FYThpN3hqWk1PMjhOUkNUWndZWkdHNE1LV2luL3NkR2ovSmJzcGJSNVoKelBMZlpkOGZkUGZBZ2RZQUllUHkwOWVyTkdWUWpYQnhLenNCOWlUMGxobEE3ZUFlU256azEyc2pac0I2RG0yRQoxWDJPMmlUSXZCKzhmQlUvN21oYnYzaWFVTjdxUG1rT2NacERkNUVmTXNVSjByQkZBZ01CQUFHamdnRitNSUlCCmVqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZQRTlPcVpjZHYyK25LZ05EU2x6RWRFYmRXY0gKTUI4R0ExVWRJd1FZTUJhQUZMOVpJRFlBZWFDZ0ltdU0xZkpoMHJnc3k0SktNQklHQTFVZEV3RUIvd1FJTUFZQgpBZjhDQVFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUJNRkFHQTFVZEh3UkpNRWN3ClJhQkRvRUdHUDJoMGRIQTZMeTluY21Oc01pNWpjbXd1ZEdWc1pYTmxZeTVrWlM5eWJDOVVMVlJsYkdWVFpXTmYKUjJ4dlltRnNVbTl2ZEY5RGJHRnpjMTh5TG1OeWJEQ0JqUVlJS3dZQkJRVUhBUUVFZ1lBd2ZqQXVCZ2dyQmdFRgpCUWN3QVlZaWFIUjBjRG92TDJkeVkyd3lMbTlqYzNBdWRHVnNaWE5sWXk1a1pTOXZZM053Y2pCTUJnZ3JCZ0VGCkJRY3dBb1pBYUhSMGNEb3ZMMmR5WTJ3eUxtTnlkQzUwWld4bGMyVmpMbVJsTDJOeWRDOVVMVlJsYkdWVFpXTmYKUjJ4dlltRnNVbTl2ZEY5RGJHRnpjMTh5TG1OeWREQVRCZ05WSFNBRUREQUtNQWdHQm1lQkRBRUNBVEFOQmdrcQpoa2lHOXcwQkFRc0ZBQU9DQVFFQWc3U1piL0t3aVJkcWFrc2hkZmFBckpkdWxqUTBiUVRoZGtaS0lpUVNBdUtWCkd2UUcxRU5BL3NPRkpzYXlnNVBicVN6cDM0eEVjMk9KY1B4NEU0YU9FRFF5dmtDOFRxWnlKeDFROU9rQ1R5aDkKSDFlVWRSaWozMWJFWVIxd2JyTXJBR0FGdmR2VUkzc25xZnpFNzJkK05aSVJSN0ZUK2tvdVgzdksyYjNCdFFLdgprT3ZaWFlzOUZSYU5rZ05KT204dGNzbFVsYTkzMkpjcTM4OXN4cXorKzlRYjZUNlpWeGxDVXZWUFFoRW1aemhoCllCMTZYUldvVFFHZ0pLMXlPV25IRk01c2Q3ZFJUclkvd1VVTXZ5bWNzelZYUWd5Y2lTVzhJTDZCZXNCdXdFNlcKY3Z4bVV1eFNqZ2krM21zR3dmWmJPaitmcnVkUTY0QksrL2ErdnpZWEJnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRHd6Q0NBcXVnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnakVMTUFrR0ExVUVCaE1DUkVVeApLekFwQmdOVkJBb01JbFF0VTNsemRHVnRjeUJGYm5SbGNuQnlhWE5sSUZObGNuWnBZMlZ6SUVkdFlrZ3hIekFkCkJnTlZCQXNNRmxRdFUzbHpkR1Z0Y3lCVWNuVnpkQ0JEWlc1MFpYSXhKVEFqQmdOVkJBTU1IRlF0VkdWc1pWTmwKWXlCSGJHOWlZV3hTYjI5MElFTnNZWE56SURJd0hoY05NRGd4TURBeE1UQTBNREUwV2hjTk16TXhNREF4TWpNMQpPVFU1V2pDQmdqRUxNQWtHQTFVRUJoTUNSRVV4S3pBcEJnTlZCQW9NSWxRdFUzbHpkR1Z0Y3lCRmJuUmxjbkJ5CmFYTmxJRk5sY25acFkyVnpJRWR0WWtneEh6QWRCZ05WQkFzTUZsUXRVM2x6ZEdWdGN5QlVjblZ6ZENCRFpXNTAKWlhJeEpUQWpCZ05WQkFNTUhGUXRWR1ZzWlZObFl5QkhiRzlpWVd4U2IyOTBJRU5zWVhOeklESXdnZ0VpTUEwRwpDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3FYOW9iWCtoemtlWGFYUFNpNWtmbDgyaFZZQVVkCkFxU3ptMW56SG9xdk5LMzhEY0xaU0JudWFZL0pJUHdocWdjWjdiQmNyR1hIWCswQ2ZIdDhMUnZXdXJtQXdoaUMKRm9UNlpyQUl4bFFqZ2VUTnVVay85azl1TjBnb09BL0Z2dWRvY1AwNWwwM1N4NWlSVUtyRVJMTWpmVGxINlZKaQoxaEtUWHJjeGxrSUYrM2FuSHFQMXd2enBlc1ZzcVhGUDZzdDR2R0N2eDk3MDJjdStmak9sYnBTRDhEVDZJYXZxCmpuS2dQNlRlTUZ2dmhrMXFsVnREUktnUUZSemxBVmZGbVBIbUJpaVJxaURGdDFNbVVVT3lDeEdWV09IQUQzYloKd0kxOGdmTnljSjV2L2hxTzJWODF4ckp2Tkh5K1NFL2lXam5YMkoxNG5wK0dQZ05lR1l0RW90WEhBZ01CQUFHagpRakJBTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERnUVdCQlMvCldTQTJBSG1nb0NKcmpOWHlZZEs0TE11Q1NqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFNUU9pWVFzZmRPaHkKTnNadCtVMmUraUtvNFlGV3o4MjduK3Fya1JrNHI2cDhGVTN6dHFPTnBmU085a1NwcCtnaGxhMCtBR0lXaVBBQwp1dnhoSStZem16QjZhelppZTYwRUk0UllaZUxiSzRybkpWTTNZbE5mdk5vQllpbWlwaWR4NWpvaWZzRnZIWlZ3CklFb0hOTi9xL3hXQTViclhldGhiZFh3RmVpbEhma0NvTVJOM3pVQTd0RkZIZWk0UjQwY1IzcDFtMEl2VlZHYjYKZzFYcWZNSXBpUnZwYjdQTzRnV0V5UzgrZUlWaWJzbGZ3WGhqZEZqQVNCZ01tVG5ycE13YXRYbGFqUldjMkJRTgo5bm9IVjhjaWd3VXRQSnNsSmowWXM2bERmTWpJcTJTUERxTy9uQnVkTU52YTBCa3Vxanp4K3pPQWR1VE5yUmxQCkJTZU9FNkZ1d2c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== - command: kubectl - env: null - provideClusterInfo: false - diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cce7654 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4601 @@ +{ + "name": "ipceicis-developerframework", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ipceicis-developerframework", + "version": "1.0.0", + "dependencies": { + "likec4": "^1.44.0" + }, + "devDependencies": { + "autoprefixer": "^10.4.21", + "html-validate": "^10.1.2", + "markdownlint-cli": "^0.45.0", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@hpcc-js/wasm-graphviz": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.15.0.tgz", + "integrity": "sha512-z1DSfM9MKccsMl9HcpRBZSqV6rcNtD++LzwARowG8dd5aKk0WgdOlMLh8X0dDhMgWA5FfpU7kPKgh1hTuP4dUg==", + "license": "Apache-2.0" + }, + "node_modules/@html-validate/stylish": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@html-validate/stylish/-/stylish-4.3.0.tgz", + "integrity": "sha512-eUfvKpRJg5TvzSfTf2EovrQoTKjkRnPUOUnXVJ2cQ4GbC/bQw98oxN+DdSf+HxOBK00YOhsP52xWdJPV1o4n5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^4.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@likec4/core": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/@likec4/core/-/core-1.44.0.tgz", + "integrity": "sha512-gt50ZPPYBS0iyhEzrjHagI6rH4l52hL3Z68XAGqsm4oeoKvzg/6xPHfZ1463JHAPBFBi79j4aEF9gg8+8JgHJQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^4.41.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.43", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.43.tgz", + "integrity": "sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sidvind/better-ajv-errors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sidvind/better-ajv-errors/-/better-ajv-errors-4.0.0.tgz", + "integrity": "sha512-rLZQkN6IfNwG6iqZZwqFMcs7DvQX3ZrLVhsHmSO1LUA4EZAz+VZLpTBCIOFsC5Qu3xuwzVfRMZ+1rtk/mCRRZw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "kleur": "^4.1.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "ajv": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.0.tgz", + "integrity": "sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.43", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@xyflow/react": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.9.0.tgz", + "integrity": "sha512-bt37E8Wf2HQ7hHQaMSnOw4UEWQqWlNwzfgF9tjix5Fu9Pn/ph3wbexSS/wbWnTkv0vhgMVyphQLfFWIuCe59hQ==", + "license": "MIT", + "dependencies": { + "@xyflow/system": "0.0.71", + "classcat": "^5.0.3", + "zustand": "^4.4.0" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.71.tgz", + "integrity": "sha512-O2xIK84Uv1hH8qzeY94SKsj0R1n2jXHLsX6RZnM4x1Uc4oWiVbXDFucnkbFwhnQm3IIdAxkbgd2rEDp5oTRhhQ==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/autoprefixer": { + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.26", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.26.tgz", + "integrity": "sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-require": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "license": "MIT", + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/classcat": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", + "license": "MIT" + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-validate": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/html-validate/-/html-validate-10.3.1.tgz", + "integrity": "sha512-BgiuKxwvL6uuxQYCLQAU6hyldyyGsqs3ij86DJGCuZ72CLyEHyZVa0aiL/d6L+D4+U7cLe3pgIaEFFP0PLGhRw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/html-validate" + } + ], + "license": "MIT", + "dependencies": { + "@html-validate/stylish": "^4.1.0", + "@sidvind/better-ajv-errors": "4.0.0", + "ajv": "^8.0.0", + "glob": "^11.0.0", + "kleur": "^4.1.0", + "minimist": "^1.2.0", + "prompts": "^2.0.0", + "semver": "^7.0.0" + }, + "bin": { + "html-validate": "bin/html-validate.mjs" + }, + "engines": { + "node": "^20.19.0 || >= 22.12.0" + }, + "peerDependencies": { + "jest": "^28.1.3 || ^29.0.3 || ^30.0.0", + "jest-diff": "^28.1.3 || ^29.0.3 || ^30.0.0", + "jest-snapshot": "^28.1.3 || ^29.0.3 || ^30.0.0", + "vitest": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "jest": { + "optional": true + }, + "jest-diff": { + "optional": true + }, + "jest-snapshot": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/katex": { + "version": "0.16.25", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz", + "integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/likec4": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/likec4/-/likec4-1.44.0.tgz", + "integrity": "sha512-lc9g0dZrg6DMNBDxZc73tCX3mi6KQVaIo4X56EJrqsaEElPmffjidzJzdbG3hPENnc9Zo+kYlIRvUysPA3qBYA==", + "license": "MIT", + "dependencies": { + "@hpcc-js/wasm-graphviz": "1.15.0", + "@likec4/core": "1.44.0", + "@vitejs/plugin-react": "^5.1.0", + "@xyflow/react": "12.9.0", + "@xyflow/system": "0.0.71", + "boxen": "^8.0.1", + "bundle-require": "^5.1.0", + "esbuild": "0.25.11", + "fdir": "6.4.0", + "playwright": "1.56.1", + "rollup": "^4.53.2", + "std-env": "^3.9.0", + "type-fest": "^4.41.0", + "vite": "^7.2.2", + "yargs": "17.7.2" + }, + "bin": { + "likec4": "bin/likec4.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.18.0" + }, + "peerDependencies": { + "react": "^18.x || ^19.x", + "react-dom": "^18.x || ^19.x" + } + }, + "node_modules/likec4/node_modules/fdir": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", + "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdownlint": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.38.0.tgz", + "integrity": "sha512-xaSxkaU7wY/0852zGApM8LdlIfGCW8ETZ0Rr62IQtAnUMlMuifsg09vWJcNYeL4f0anvr8Vo4ZQar8jGpV0btQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark": "4.0.2", + "micromark-core-commonmark": "2.0.3", + "micromark-extension-directive": "4.0.0", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.1", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.45.0.tgz", + "integrity": "sha512-GiWr7GfJLVfcopL3t3pLumXCYs8sgWppjIA1F/Cc3zIMgD3tmkpyZ1xkm1Tej8mw53B93JsDjgA3KOftuYcfOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~13.1.0", + "glob": "~11.0.2", + "ignore": "~7.0.4", + "js-yaml": "~4.1.0", + "jsonc-parser": "~3.3.1", + "jsonpointer": "~5.0.1", + "markdown-it": "~14.1.0", + "markdownlint": "~0.38.0", + "minimatch": "~10.0.1", + "run-con": "~1.3.2", + "smol-toml": "~1.3.4" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/markdownlint-cli/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", + "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/playwright": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.56.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz", + "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^1.0.0", + "fs-extra": "^11.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "tinyglobby": "^0.2.12", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smol-toml": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz", + "integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vite": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "devOptional": true, + "license": "ISC", + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2987763 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "ipceicis-developerframework", + "version": "1.0.0", + "scripts": { + "build": "hugo --gc --minify", + "test:build": "hugo --gc --minify --logLevel info", + "test:links": "htmltest", + "test:html": "html-validate 'public/**/*.html'", + "test:markdown": "markdownlint 'content/**/*.md'", + "test": "npm run test:build && npm run test:markdown && npm run test:html && npm run test:links", + "test:quick": "npm run test:build && npm run test:markdown" + }, + "devDependencies": { + "autoprefixer": "^10.4.21", + "html-validate": "^10.1.2", + "markdownlint-cli": "^0.45.0", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1" + }, + "dependencies": { + "likec4": "^1.44.0" + } +} diff --git a/resources/LIKEC4-REGENERATION.md b/resources/LIKEC4-REGENERATION.md new file mode 100644 index 0000000..eeba200 --- /dev/null +++ b/resources/LIKEC4-REGENERATION.md @@ -0,0 +1,73 @@ +# Regenerating LikeC4 Webcomponents + +After modifying LikeC4 models (`.c4` files), you need to regenerate the webcomponents. + +## Automatic Regeneration + +Add to `Taskfile.yml`: + +```yaml + likec4:generate: + desc: Generate LikeC4 webcomponents from both projects + cmds: + - cd resources/edp-likec4 && npx likec4 codegen webcomponent --webcomponent-prefix likec4 --outfile ../../static/js/likec4-webcomponent.js + - cd resources/doc-likec4 && npx likec4 codegen webcomponent --webcomponent-prefix likec4 --outfile ../../static/js/likec4-doc-webcomponent.js +``` + +Then run: + +```bash +task likec4:generate +``` + +## Manual Regeneration + +### EDP Platform Architecture + +```bash +cd resources/edp-likec4 +npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-webcomponent.js +``` + +### Documentation Platform Architecture + +```bash +cd resources/doc-likec4 +npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-doc-webcomponent.js +``` + +## When to Regenerate + +Regenerate webcomponents when you: + +- ✅ Add new elements or relationships +- ✅ Modify existing models +- ✅ Create new views +- ✅ Change element properties (colors, shapes, etc.) + +## File Sizes + +The webcomponents are large (~6MB total): + +- `likec4-webcomponent.js` - ~3.1MB (EDP architecture) +- `likec4-doc-webcomponent.js` - ~2.9MB (Documentation platform) + +This is normal as they contain: + +- React runtime +- Complete model data +- Diagram rendering engine +- Interactive controls + +## Note + +Both webcomponents are loaded in `layouts/partials/hooks/head-end.html` as ES modules: + +```html + + +``` diff --git a/resources/_gen/assets/scss/main.scss_3f90599f3717b4a4920df16fdcadce3d.content b/resources/_gen/assets/scss/main.scss_3f90599f3717b4a4920df16fdcadce3d.content deleted file mode 100644 index e79aaa3..0000000 --- a/resources/_gen/assets/scss/main.scss_3f90599f3717b4a4920df16fdcadce3d.content +++ /dev/null @@ -1,19722 +0,0 @@ -/* - -Add styles or override variables from the theme here. - -*/ -@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i&display=swap"); -:root, -[data-bs-theme="light"] { - --td-pre-bg: var(--bs-tertiary-bg); } - -/*! - * Bootstrap v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root, -[data-bs-theme="light"] { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-black: #000; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-gray-100: #f8f9fa; - --bs-gray-200: #e9ecef; - --bs-gray-300: #dee2e6; - --bs-gray-400: #ced4da; - --bs-gray-500: #adb5bd; - --bs-gray-600: #6c757d; - --bs-gray-700: #495057; - --bs-gray-800: #343a40; - --bs-gray-900: #212529; - --bs-primary: #30638e; - --bs-secondary: #ffa630; - --bs-success: #3772ff; - --bs-info: #c0e0de; - --bs-warning: #ed6a5a; - --bs-danger: #ed6a5a; - --bs-light: #d3f3ee; - --bs-dark: #403f4c; - --bs-primary-rgb: 48, 99, 142; - --bs-secondary-rgb: 255, 166, 48; - --bs-success-rgb: 55, 114, 255; - --bs-info-rgb: 192, 224, 222; - --bs-warning-rgb: 237, 106, 90; - --bs-danger-rgb: 237, 106, 90; - --bs-light-rgb: 211, 243, 238; - --bs-dark-rgb: 64, 63, 76; - --bs-primary-text-emphasis: #132839; - --bs-secondary-text-emphasis: #664213; - --bs-success-text-emphasis: #162e66; - --bs-info-text-emphasis: #4d5a59; - --bs-warning-text-emphasis: #5f2a24; - --bs-danger-text-emphasis: #5f2a24; - --bs-light-text-emphasis: #495057; - --bs-dark-text-emphasis: #495057; - --bs-primary-bg-subtle: #d6e0e8; - --bs-secondary-bg-subtle: #ffedd6; - --bs-success-bg-subtle: #d7e3ff; - --bs-info-bg-subtle: #f2f9f8; - --bs-warning-bg-subtle: #fbe1de; - --bs-danger-bg-subtle: #fbe1de; - --bs-light-bg-subtle: #fcfcfd; - --bs-dark-bg-subtle: #ced4da; - --bs-primary-border-subtle: #acc1d2; - --bs-secondary-border-subtle: #ffdbac; - --bs-success-border-subtle: #afc7ff; - --bs-info-border-subtle: #e6f3f2; - --bs-warning-border-subtle: #f8c3bd; - --bs-danger-border-subtle: #f8c3bd; - --bs-light-border-subtle: #e9ecef; - --bs-dark-border-subtle: #adb5bd; - --bs-white-rgb: 255, 255, 255; - --bs-black-rgb: 0, 0, 0; - --bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - --bs-body-font-size: 1rem; - --bs-body-font-weight: 400; - --bs-body-line-height: 1.5; - --bs-body-color: #212529; - --bs-body-color-rgb: 33, 37, 41; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; - --bs-emphasis-color: #000; - --bs-emphasis-color-rgb: 0, 0, 0; - --bs-secondary-color: rgba(33, 37, 41, 0.75); - --bs-secondary-color-rgb: 33, 37, 41; - --bs-secondary-bg: #e9ecef; - --bs-secondary-bg-rgb: 233, 236, 239; - --bs-tertiary-color: rgba(33, 37, 41, 0.5); - --bs-tertiary-color-rgb: 33, 37, 41; - --bs-tertiary-bg: #f8f9fa; - --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-heading-color: inherit; - --bs-link-color: #0d6efd; - --bs-link-color-rgb: 13, 110, 253; - --bs-link-decoration: underline; - --bs-link-hover-color: #094db1; - --bs-link-hover-color-rgb: 9, 77, 177; - --bs-code-color: #99641d; - --bs-highlight-color: #212529; - --bs-highlight-bg: #fff3cd; - --bs-border-width: 1px; - --bs-border-style: solid; - --bs-border-color: #dee2e6; - --bs-border-color-translucent: rgba(0, 0, 0, 0.175); - --bs-border-radius: 0.375rem; - --bs-border-radius-sm: 0.25rem; - --bs-border-radius-lg: 0.5rem; - --bs-border-radius-xl: 1rem; - --bs-border-radius-xxl: 2rem; - --bs-border-radius-2xl: var(--bs-border-radius-xxl); - --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); - --bs-focus-ring-width: 0.25rem; - --bs-focus-ring-opacity: 0.25; - --bs-focus-ring-color: rgba(48, 99, 142, 0.25); - --bs-form-valid-color: #3772ff; - --bs-form-valid-border-color: #3772ff; - --bs-form-invalid-color: #ed6a5a; - --bs-form-invalid-border-color: #ed6a5a; } - -[data-bs-theme="dark"] { - color-scheme: dark; - --bs-body-color: #dee2e6; - --bs-body-color-rgb: 222, 226, 230; - --bs-body-bg: #212529; - --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #fff; - --bs-emphasis-color-rgb: 255, 255, 255; - --bs-secondary-color: rgba(222, 226, 230, 0.75); - --bs-secondary-color-rgb: 222, 226, 230; - --bs-secondary-bg: #343a40; - --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(222, 226, 230, 0.5); - --bs-tertiary-color-rgb: 222, 226, 230; - --bs-tertiary-bg: #2b3035; - --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-primary-text-emphasis: #83a1bb; - --bs-secondary-text-emphasis: #ffca83; - --bs-success-text-emphasis: #87aaff; - --bs-info-text-emphasis: #d9eceb; - --bs-warning-text-emphasis: #f4a69c; - --bs-danger-text-emphasis: #f4a69c; - --bs-light-text-emphasis: #f8f9fa; - --bs-dark-text-emphasis: #dee2e6; - --bs-primary-bg-subtle: #0a141c; - --bs-secondary-bg-subtle: #33210a; - --bs-success-bg-subtle: #0b1733; - --bs-info-bg-subtle: #262d2c; - --bs-warning-bg-subtle: #2f1512; - --bs-danger-bg-subtle: #2f1512; - --bs-light-bg-subtle: #343a40; - --bs-dark-bg-subtle: #1a1d20; - --bs-primary-border-subtle: #1d3b55; - --bs-secondary-border-subtle: #99641d; - --bs-success-border-subtle: #214499; - --bs-info-border-subtle: #738685; - --bs-warning-border-subtle: #8e4036; - --bs-danger-border-subtle: #8e4036; - --bs-light-border-subtle: #495057; - --bs-dark-border-subtle: #343a40; - --bs-heading-color: inherit; - --bs-link-color: #83a1bb; - --bs-link-hover-color: #a8bdcf; - --bs-link-color-rgb: 131, 161, 187; - --bs-link-hover-color-rgb: 168, 189, 207; - --bs-code-color: #c2a277; - --bs-highlight-color: #dee2e6; - --bs-highlight-bg: #664d03; - --bs-border-color: #495057; - --bs-border-color-translucent: rgba(255, 255, 255, 0.15); - --bs-form-valid-color: #75b798; - --bs-form-valid-border-color: #75b798; - --bs-form-invalid-color: #ea868f; - --bs-form-invalid-border-color: #ea868f; } - -*, -*::before, -*::after { - box-sizing: border-box; } - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; } } - -body { - margin: 0; - font-family: var(--bs-body-font-family); - font-size: var(--bs-body-font-size); - font-weight: var(--bs-body-font-weight); - line-height: var(--bs-body-line-height); - color: var(--bs-body-color); - text-align: var(--bs-body-text-align); - background-color: var(--bs-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - -hr { - margin: 1rem 0; - color: inherit; - border: 0; - border-top: var(--bs-border-width) solid; - opacity: 0.25; } - -h6, .h6, h5, .h5, h4, .h4, h3, .h3, .td-footer__links-item, h2, .h2, h1, .h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; - color: var(--bs-heading-color); } - -h1, .h1 { - font-size: calc(1.375rem + 1.5vw); } - @media (min-width: 1200px) { - h1, .h1 { - font-size: 2.5rem; } } -h2, .h2 { - font-size: calc(1.325rem + 0.9vw); } - @media (min-width: 1200px) { - h2, .h2 { - font-size: 2rem; } } -h3, .h3, .td-footer__links-item { - font-size: calc(1.275rem + 0.3vw); } - @media (min-width: 1200px) { - h3, .h3, .td-footer__links-item { - font-size: 1.5rem; } } -h4, .h4 { - font-size: calc(1.26rem + 0.12vw); } - @media (min-width: 1200px) { - h4, .h4 { - font-size: 1.35rem; } } -h5, .h5 { - font-size: 1.15rem; } - -h6, .h6 { - font-size: 1rem; } - -p { - margin-top: 0; - margin-bottom: 1rem; } - -abbr[title] { - text-decoration: underline dotted; - cursor: help; - text-decoration-skip-ink: none; } - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; } - -ol, -ul { - padding-left: 2rem; } - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; } - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; } - -dt { - font-weight: 700; } - -dd { - margin-bottom: .5rem; - margin-left: 0; } - -blockquote { - margin: 0 0 1rem; } - -b, -strong { - font-weight: bolder; } - -small, .small, .td-footer__center, .td-cover-block > .byline { - font-size: 0.875em; } - -mark, .mark { - padding: 0.1875em; - color: var(--bs-highlight-color); - background-color: var(--bs-highlight-bg); } - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; } - -sub { - bottom: -.25em; } - -sup { - top: -.5em; } - -a { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); - text-decoration: underline; } - a:hover { - --bs-link-color-rgb: var(--bs-link-hover-color-rgb); } - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; } - -pre, -code, -kbd, -samp { - font-family: var(--bs-font-monospace); - font-size: 1em; } - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; } - pre code { - font-size: inherit; - color: inherit; - word-break: normal; } - -code { - font-size: 0.875em; - color: var(--bs-code-color); - word-wrap: break-word; } - a > code { - color: inherit; } - -kbd { - padding: 0.1875rem 0.375rem; - font-size: 0.875em; - color: var(--bs-body-bg); - background-color: var(--bs-body-color); - border-radius: 0.25rem; } - kbd kbd { - padding: 0; - font-size: 1em; } - -figure { - margin: 0 0 1rem; } - -img, -svg { - vertical-align: middle; } - -table { - caption-side: bottom; - border-collapse: collapse; } - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-secondary-color); - text-align: left; } - -th { - text-align: inherit; - text-align: -webkit-match-parent; } - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; } - -label { - display: inline-block; } - -button { - border-radius: 0; } - -button:focus:not(:focus-visible) { - outline: 0; } - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -button, -select { - text-transform: none; } - -[role="button"] { - cursor: pointer; } - -select { - word-wrap: normal; } - select:disabled { - opacity: 1; } - -[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator { - display: none !important; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - button:not(:disabled), - [type="button"]:not(:disabled), - [type="reset"]:not(:disabled), - [type="submit"]:not(:disabled) { - cursor: pointer; } - -::-moz-focus-inner { - padding: 0; - border-style: none; } - -textarea { - resize: vertical; } - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit; } - @media (min-width: 1200px) { - legend { - font-size: 1.5rem; } } - legend + * { - clear: left; } - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field { - padding: 0; } - -::-webkit-inner-spin-button { - height: auto; } - -[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; } - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; } - -::-webkit-color-swatch-wrapper { - padding: 0; } - -::file-selector-button { - font: inherit; - -webkit-appearance: button; } - -output { - display: inline-block; } - -iframe { - border: 0; } - -summary { - display: list-item; - cursor: pointer; } - -progress { - vertical-align: baseline; } - -[hidden] { - display: none !important; } - -.lead { - font-size: 1.25rem; - font-weight: 300; } - -.display-1 { - font-size: calc(1.625rem + 4.5vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-1 { - font-size: 5rem; } } -.display-2 { - font-size: calc(1.575rem + 3.9vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-2 { - font-size: 4.5rem; } } -.display-3 { - font-size: calc(1.525rem + 3.3vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-3 { - font-size: 4rem; } } -.display-4 { - font-size: calc(1.475rem + 2.7vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-4 { - font-size: 3.5rem; } } -.display-5 { - font-size: calc(1.425rem + 2.1vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-5 { - font-size: 3rem; } } -.display-6 { - font-size: calc(1.375rem + 1.5vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-6 { - font-size: 2.5rem; } } -.list-unstyled, .td-blog-posts-list { - padding-left: 0; - list-style: none; } - -.list-inline, .td-footer__links-list { - padding-left: 0; - list-style: none; } - -.list-inline-item, .td-footer__links-item { - display: inline-block; } - .list-inline-item:not(:last-child), .td-footer__links-item:not(:last-child) { - margin-right: 1rem; } - -.initialism { - font-size: 0.875em; - text-transform: uppercase; } - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; } - .blockquote > :last-child { - margin-bottom: 0; } - -.blockquote-footer { - margin-top: -1rem; - margin-bottom: 1rem; - font-size: 0.875em; - color: #6c757d; } - .blockquote-footer::before { - content: "\2014\00A0"; } - -.img-fluid, .td-content img { - max-width: 100%; - height: auto; } - -.img-thumbnail { - padding: 0.25rem; - background-color: var(--bs-body-bg); - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - box-shadow: var(--bs-box-shadow-sm); - max-width: 100%; - height: auto; } - -.figure { - display: inline-block; } - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; } - -.figure-caption { - font-size: 0.875em; - color: var(--bs-secondary-color); } - -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-right: calc(var(--bs-gutter-x) * .5); - padding-left: calc(var(--bs-gutter-x) * .5); - margin-right: auto; - margin-left: auto; } - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; } } - -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; } } - -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; } } - -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; } } - -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; } } - -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; } - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-right: calc(-.5 * var(--bs-gutter-x)); - margin-left: calc(-.5 * var(--bs-gutter-x)); } - .row > * { - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * .5); - padding-left: calc(var(--bs-gutter-x) * .5); - margin-top: var(--bs-gutter-y); } - -.col { - flex: 1 0 0%; } - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; } - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; } - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; } - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; } - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; } - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - -.col-auto { - flex: 0 0 auto; - width: auto; } - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; } - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; } - -.col-3 { - flex: 0 0 auto; - width: 25%; } - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; } - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; } - -.col-6 { - flex: 0 0 auto; - width: 50%; } - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; } - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; } - -.col-9 { - flex: 0 0 auto; - width: 75%; } - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; } - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; } - -.col-12 { - flex: 0 0 auto; - width: 100%; } - -.offset-1 { - margin-left: 8.33333333%; } - -.offset-2 { - margin-left: 16.66666667%; } - -.offset-3 { - margin-left: 25%; } - -.offset-4 { - margin-left: 33.33333333%; } - -.offset-5 { - margin-left: 41.66666667%; } - -.offset-6 { - margin-left: 50%; } - -.offset-7 { - margin-left: 58.33333333%; } - -.offset-8 { - margin-left: 66.66666667%; } - -.offset-9 { - margin-left: 75%; } - -.offset-10 { - margin-left: 83.33333333%; } - -.offset-11 { - margin-left: 91.66666667%; } - -.g-0, -.gx-0 { - --bs-gutter-x: 0; } - -.g-0, -.gy-0 { - --bs-gutter-y: 0; } - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; } - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; } - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; } - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; } - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; } - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; } - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; } - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; } - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; } - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; } - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-sm-auto { - flex: 0 0 auto; - width: auto; } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; } - .offset-sm-0 { - margin-left: 0; } - .offset-sm-1 { - margin-left: 8.33333333%; } - .offset-sm-2 { - margin-left: 16.66666667%; } - .offset-sm-3 { - margin-left: 25%; } - .offset-sm-4 { - margin-left: 33.33333333%; } - .offset-sm-5 { - margin-left: 41.66666667%; } - .offset-sm-6 { - margin-left: 50%; } - .offset-sm-7 { - margin-left: 58.33333333%; } - .offset-sm-8 { - margin-left: 66.66666667%; } - .offset-sm-9 { - margin-left: 75%; } - .offset-sm-10 { - margin-left: 83.33333333%; } - .offset-sm-11 { - margin-left: 91.66666667%; } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-md-auto { - flex: 0 0 auto; - width: auto; } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-md-3 { - flex: 0 0 auto; - width: 25%; } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-md-6 { - flex: 0 0 auto; - width: 50%; } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-md-9 { - flex: 0 0 auto; - width: 75%; } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-md-12 { - flex: 0 0 auto; - width: 100%; } - .offset-md-0 { - margin-left: 0; } - .offset-md-1 { - margin-left: 8.33333333%; } - .offset-md-2 { - margin-left: 16.66666667%; } - .offset-md-3 { - margin-left: 25%; } - .offset-md-4 { - margin-left: 33.33333333%; } - .offset-md-5 { - margin-left: 41.66666667%; } - .offset-md-6 { - margin-left: 50%; } - .offset-md-7 { - margin-left: 58.33333333%; } - .offset-md-8 { - margin-left: 66.66666667%; } - .offset-md-9 { - margin-left: 75%; } - .offset-md-10 { - margin-left: 83.33333333%; } - .offset-md-11 { - margin-left: 91.66666667%; } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-lg-auto { - flex: 0 0 auto; - width: auto; } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; } - .offset-lg-0 { - margin-left: 0; } - .offset-lg-1 { - margin-left: 8.33333333%; } - .offset-lg-2 { - margin-left: 16.66666667%; } - .offset-lg-3 { - margin-left: 25%; } - .offset-lg-4 { - margin-left: 33.33333333%; } - .offset-lg-5 { - margin-left: 41.66666667%; } - .offset-lg-6 { - margin-left: 50%; } - .offset-lg-7 { - margin-left: 58.33333333%; } - .offset-lg-8 { - margin-left: 66.66666667%; } - .offset-lg-9 { - margin-left: 75%; } - .offset-lg-10 { - margin-left: 83.33333333%; } - .offset-lg-11 { - margin-left: 91.66666667%; } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xl-auto { - flex: 0 0 auto; - width: auto; } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; } - .offset-xl-0 { - margin-left: 0; } - .offset-xl-1 { - margin-left: 8.33333333%; } - .offset-xl-2 { - margin-left: 16.66666667%; } - .offset-xl-3 { - margin-left: 25%; } - .offset-xl-4 { - margin-left: 33.33333333%; } - .offset-xl-5 { - margin-left: 41.66666667%; } - .offset-xl-6 { - margin-left: 50%; } - .offset-xl-7 { - margin-left: 58.33333333%; } - .offset-xl-8 { - margin-left: 66.66666667%; } - .offset-xl-9 { - margin-left: 75%; } - .offset-xl-10 { - margin-left: 83.33333333%; } - .offset-xl-11 { - margin-left: 91.66666667%; } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; } - .offset-xxl-0 { - margin-left: 0; } - .offset-xxl-1 { - margin-left: 8.33333333%; } - .offset-xxl-2 { - margin-left: 16.66666667%; } - .offset-xxl-3 { - margin-left: 25%; } - .offset-xxl-4 { - margin-left: 33.33333333%; } - .offset-xxl-5 { - margin-left: 41.66666667%; } - .offset-xxl-6 { - margin-left: 50%; } - .offset-xxl-7 { - margin-left: 58.33333333%; } - .offset-xxl-8 { - margin-left: 66.66666667%; } - .offset-xxl-9 { - margin-left: 75%; } - .offset-xxl-10 { - margin-left: 83.33333333%; } - .offset-xxl-11 { - margin-left: 91.66666667%; } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; } } - -.table, .td-table:not(.td-initial), .td-content table:not(.td-initial), .td-box table:not(.td-initial) { - --bs-table-color-type: initial; - --bs-table-bg-type: initial; - --bs-table-color-state: initial; - --bs-table-bg-state: initial; - --bs-table-color: var(--bs-emphasis-color); - --bs-table-bg: var(--bs-body-bg); - --bs-table-border-color: var(--bs-border-color); - --bs-table-accent-bg: transparent; - --bs-table-striped-color: var(--bs-emphasis-color); - --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05); - --bs-table-active-color: var(--bs-emphasis-color); - --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); - --bs-table-hover-color: var(--bs-emphasis-color); - --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075); - width: 100%; - margin-bottom: 1rem; - vertical-align: top; - border-color: var(--bs-table-border-color); } - .table > :not(caption) > * > *, .td-table:not(.td-initial) > :not(caption) > * > *, .td-content table:not(.td-initial) > :not(caption) > * > *, .td-box table:not(.td-initial) > :not(caption) > * > * { - padding: 0.5rem 0.5rem; - color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))); - background-color: var(--bs-table-bg); - border-bottom-width: var(--bs-border-width); - box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); } - .table > tbody, .td-table:not(.td-initial) > tbody, .td-content table:not(.td-initial) > tbody, .td-box table:not(.td-initial) > tbody { - vertical-align: inherit; } - .table > thead, .td-table:not(.td-initial) > thead, .td-content table:not(.td-initial) > thead, .td-box table:not(.td-initial) > thead { - vertical-align: bottom; } - -.table-group-divider { - border-top: calc(var(--bs-border-width) * 2) solid currentcolor; } - -.caption-top { - caption-side: top; } - -.table-sm > :not(caption) > * > * { - padding: 0.25rem 0.25rem; } - -.table-bordered > :not(caption) > * { - border-width: var(--bs-border-width) 0; } - .table-bordered > :not(caption) > * > * { - border-width: 0 var(--bs-border-width); } - -.table-borderless > :not(caption) > * > * { - border-bottom-width: 0; } - -.table-borderless > :not(:first-child) { - border-top-width: 0; } - -.table-striped > tbody > tr:nth-of-type(odd) > *, .td-table:not(.td-initial) > tbody > tr:nth-of-type(odd) > *, .td-content table:not(.td-initial) > tbody > tr:nth-of-type(odd) > *, .td-box table:not(.td-initial) > tbody > tr:nth-of-type(odd) > * { - --bs-table-color-type: var(--bs-table-striped-color); - --bs-table-bg-type: var(--bs-table-striped-bg); } - -.table-striped-columns > :not(caption) > tr > :nth-child(even) { - --bs-table-color-type: var(--bs-table-striped-color); - --bs-table-bg-type: var(--bs-table-striped-bg); } - -.table-active { - --bs-table-color-state: var(--bs-table-active-color); - --bs-table-bg-state: var(--bs-table-active-bg); } - -.table-hover > tbody > tr:hover > * { - --bs-table-color-state: var(--bs-table-hover-color); - --bs-table-bg-state: var(--bs-table-hover-bg); } - -.table-primary { - --bs-table-color: #000; - --bs-table-bg: #d6e0e8; - --bs-table-border-color: #abb3ba; - --bs-table-striped-bg: #cbd5dc; - --bs-table-striped-color: #000; - --bs-table-active-bg: #c1cad1; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c6cfd7; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-secondary { - --bs-table-color: #000; - --bs-table-bg: #ffedd6; - --bs-table-border-color: #ccbeab; - --bs-table-striped-bg: #f2e1cb; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e6d5c1; - --bs-table-active-color: #000; - --bs-table-hover-bg: #ecdbc6; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-success { - --bs-table-color: #000; - --bs-table-bg: #d7e3ff; - --bs-table-border-color: #acb6cc; - --bs-table-striped-bg: #ccd8f2; - --bs-table-striped-color: #000; - --bs-table-active-bg: #c2cce6; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c7d2ec; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-info { - --bs-table-color: #000; - --bs-table-bg: #f2f9f8; - --bs-table-border-color: #c2c7c6; - --bs-table-striped-bg: #e6edec; - --bs-table-striped-color: #000; - --bs-table-active-bg: #dae0df; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e0e6e5; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-warning { - --bs-table-color: #000; - --bs-table-bg: #fbe1de; - --bs-table-border-color: #c9b4b2; - --bs-table-striped-bg: #eed6d3; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e2cbc8; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e8d0cd; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-danger { - --bs-table-color: #000; - --bs-table-bg: #fbe1de; - --bs-table-border-color: #c9b4b2; - --bs-table-striped-bg: #eed6d3; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e2cbc8; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e8d0cd; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-light { - --bs-table-color: #000; - --bs-table-bg: #d3f3ee; - --bs-table-border-color: #a9c2be; - --bs-table-striped-bg: #c8e7e2; - --bs-table-striped-color: #000; - --bs-table-active-bg: #bedbd6; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c3e1dc; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-dark { - --bs-table-color: #fff; - --bs-table-bg: #403f4c; - --bs-table-border-color: #666570; - --bs-table-striped-bg: #4a4955; - --bs-table-striped-color: #fff; - --bs-table-active-bg: #53525e; - --bs-table-active-color: #fff; - --bs-table-hover-bg: #4e4d59; - --bs-table-hover-color: #fff; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-responsive, .td-table:not(.td-initial), .td-content table:not(.td-initial), .td-box table:not(.td-initial) { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - -@media (max-width: 575.98px) { - .table-responsive-sm { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 767.98px) { - .table-responsive-md { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 991.98px) { - .table-responsive-lg { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 1199.98px) { - .table-responsive-xl { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 1399.98px) { - .table-responsive-xxl { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -.form-label { - margin-bottom: 0.5rem; } - -.col-form-label { - padding-top: calc(0.375rem + var(--bs-border-width)); - padding-bottom: calc(0.375rem + var(--bs-border-width)); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; } - -.col-form-label-lg { - padding-top: calc(0.5rem + var(--bs-border-width)); - padding-bottom: calc(0.5rem + var(--bs-border-width)); - font-size: 1.25rem; } - -.col-form-label-sm { - padding-top: calc(0.25rem + var(--bs-border-width)); - padding-bottom: calc(0.25rem + var(--bs-border-width)); - font-size: 0.875rem; } - -.form-text { - margin-top: 0.25rem; - font-size: 0.875em; - color: var(--bs-secondary-color); } - -.form-control { - display: block; - width: 100%; - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: var(--bs-body-color); - appearance: none; - background-color: var(--bs-body-bg); - background-clip: padding-box; - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - box-shadow: var(--bs-box-shadow-inset); - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; } } - .form-control[type="file"] { - overflow: hidden; } - .form-control[type="file"]:not(:disabled):not([readonly]) { - cursor: pointer; } - .form-control:focus { - color: var(--bs-body-color); - background-color: var(--bs-body-bg); - border-color: #98b1c7; - outline: 0; - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-control::-webkit-date-and-time-value { - min-width: 85px; - height: 1.5em; - margin: 0; } - .form-control::-webkit-datetime-edit { - display: block; - padding: 0; } - .form-control::placeholder { - color: var(--bs-secondary-color); - opacity: 1; } - .form-control:disabled { - background-color: var(--bs-secondary-bg); - opacity: 1; } - .form-control::file-selector-button { - padding: 0.375rem 0.75rem; - margin: -0.375rem -0.75rem; - margin-inline-end: 0.75rem; - color: var(--bs-body-color); - background-color: var(--bs-tertiary-bg); - background-image: var(--bs-gradient); - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width: var(--bs-border-width); - border-radius: 0; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control::file-selector-button { - transition: none; } } - .form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: var(--bs-secondary-bg); } - -.form-control-plaintext { - display: block; - width: 100%; - padding: 0.375rem 0; - margin-bottom: 0; - line-height: 1.5; - color: var(--bs-body-color); - background-color: transparent; - border: solid transparent; - border-width: var(--bs-border-width) 0; } - .form-control-plaintext:focus { - outline: 0; } - .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; } - -.form-control-sm { - min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: var(--bs-border-radius-sm); } - .form-control-sm::file-selector-button { - padding: 0.25rem 0.5rem; - margin: -0.25rem -0.5rem; - margin-inline-end: 0.5rem; } - -.form-control-lg { - min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: var(--bs-border-radius-lg); } - .form-control-lg::file-selector-button { - padding: 0.5rem 1rem; - margin: -0.5rem -1rem; - margin-inline-end: 1rem; } - -textarea.form-control { - min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); } - -textarea.form-control-sm { - min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); } - -textarea.form-control-lg { - min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); } - -.form-control-color { - width: 3rem; - height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); - padding: 0.375rem; } - .form-control-color:not(:disabled):not([readonly]) { - cursor: pointer; } - .form-control-color::-moz-color-swatch { - border: 0 !important; - border-radius: var(--bs-border-radius); } - .form-control-color::-webkit-color-swatch { - border: 0 !important; - border-radius: var(--bs-border-radius); } - .form-control-color.form-control-sm { - height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); } - .form-control-color.form-control-lg { - height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); } - -.form-select { - --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); - display: block; - width: 100%; - padding: 0.375rem 2.25rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: var(--bs-body-color); - appearance: none; - background-color: var(--bs-body-bg); - background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); - background-repeat: no-repeat; - background-position: right 0.75rem center; - background-size: 16px 12px; - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - box-shadow: var(--bs-box-shadow-inset); - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-select { - transition: none; } } - .form-select:focus { - border-color: #98b1c7; - outline: 0; - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-select[multiple], .form-select[size]:not([size="1"]) { - padding-right: 0.75rem; - background-image: none; } - .form-select:disabled { - background-color: var(--bs-secondary-bg); } - .form-select:-moz-focusring { - color: transparent; - text-shadow: 0 0 0 var(--bs-body-color); } - -.form-select-sm { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; - border-radius: var(--bs-border-radius-sm); } - -.form-select-lg { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; - border-radius: var(--bs-border-radius-lg); } - -[data-bs-theme="dark"] .form-select { - --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); } - -.form-check { - display: block; - min-height: 1.5rem; - padding-left: 1.5em; - margin-bottom: 0.125rem; } - .form-check .form-check-input { - float: left; - margin-left: -1.5em; } - -.form-check-reverse { - padding-right: 1.5em; - padding-left: 0; - text-align: right; } - .form-check-reverse .form-check-input { - float: right; - margin-right: -1.5em; - margin-left: 0; } - -.form-check-input { - --bs-form-check-bg: var(--bs-body-bg); - flex-shrink: 0; - width: 1em; - height: 1em; - margin-top: 0.25em; - vertical-align: top; - appearance: none; - background-color: var(--bs-form-check-bg); - background-image: var(--bs-form-check-bg-image); - background-repeat: no-repeat; - background-position: center; - background-size: contain; - border: var(--bs-border-width) solid var(--bs-border-color); - print-color-adjust: exact; } - .form-check-input[type="checkbox"] { - border-radius: 0.25em; } - .form-check-input[type="radio"] { - border-radius: 50%; } - .form-check-input:active { - filter: brightness(90%); } - .form-check-input:focus { - border-color: #98b1c7; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-check-input:checked { - background-color: #30638e; - border-color: #30638e; } - .form-check-input:checked[type="checkbox"] { - --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-check-input:checked[type="radio"] { - --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-check-input[type="checkbox"]:indeterminate { - background-color: #30638e; - border-color: #30638e; - --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-check-input:disabled { - pointer-events: none; - filter: none; - opacity: 0.5; } - .form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { - cursor: default; - opacity: 0.5; } - -.form-switch { - padding-left: 2.5em; } - .form-switch .form-check-input { - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); - width: 2em; - margin-left: -2.5em; - background-image: var(--bs-form-switch-bg); - background-position: left center; - border-radius: 2em; - transition: background-position 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-switch .form-check-input { - transition: none; } } - .form-switch .form-check-input:focus { - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2398b1c7'/%3e%3c/svg%3e"); } - .form-switch .form-check-input:checked { - background-position: right center; - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-switch.form-check-reverse { - padding-right: 2.5em; - padding-left: 0; } - .form-switch.form-check-reverse .form-check-input { - margin-right: -2.5em; - margin-left: 0; } - -.form-check-inline { - display: inline-block; - margin-right: 1rem; } - -.btn-check { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - .btn-check[disabled] + .btn, div.drawio .btn-check[disabled] + button, .td-blog .btn-check[disabled] + .td-rss-button, .btn-check:disabled + .btn, div.drawio .btn-check:disabled + button, .td-blog .btn-check:disabled + .td-rss-button { - pointer-events: none; - filter: none; - opacity: 0.65; } - -[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) { - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); } - -.form-range { - width: 100%; - height: 1.5rem; - padding: 0; - appearance: none; - background-color: transparent; } - .form-range:focus { - outline: 0; } - .form-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-range::-moz-focus-outer { - border: 0; } - .form-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - appearance: none; - background-color: #30638e; - background-image: var(--bs-gradient); - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-range::-webkit-slider-thumb { - transition: none; } } - .form-range::-webkit-slider-thumb:active { - background-color: #c1d0dd; - background-image: var(--bs-gradient); } - .form-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: var(--bs-secondary-bg); - border-color: transparent; - border-radius: 1rem; - box-shadow: var(--bs-box-shadow-inset); } - .form-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - appearance: none; - background-color: #30638e; - background-image: var(--bs-gradient); - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-range::-moz-range-thumb { - transition: none; } } - .form-range::-moz-range-thumb:active { - background-color: #c1d0dd; - background-image: var(--bs-gradient); } - .form-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: var(--bs-secondary-bg); - border-color: transparent; - border-radius: 1rem; - box-shadow: var(--bs-box-shadow-inset); } - .form-range:disabled { - pointer-events: none; } - .form-range:disabled::-webkit-slider-thumb { - background-color: var(--bs-secondary-color); } - .form-range:disabled::-moz-range-thumb { - background-color: var(--bs-secondary-color); } - -.form-floating { - position: relative; } - .form-floating > .form-control, - .form-floating > .form-control-plaintext, - .form-floating > .form-select { - height: calc(3.5rem + calc(var(--bs-border-width) * 2)); - min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); - line-height: 1.25; } - .form-floating > label { - position: absolute; - top: 0; - left: 0; - z-index: 2; - height: 100%; - padding: 1rem 0.75rem; - overflow: hidden; - text-align: start; - text-overflow: ellipsis; - white-space: nowrap; - pointer-events: none; - border: var(--bs-border-width) solid transparent; - transform-origin: 0 0; - transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-floating > label { - transition: none; } } - .form-floating > .form-control, - .form-floating > .form-control-plaintext { - padding: 1rem 0.75rem; } - .form-floating > .form-control::placeholder, - .form-floating > .form-control-plaintext::placeholder { - color: transparent; } - .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), - .form-floating > .form-control-plaintext:focus, - .form-floating > .form-control-plaintext:not(:placeholder-shown) { - padding-top: 1.625rem; - padding-bottom: 0.625rem; } - .form-floating > .form-control:-webkit-autofill, - .form-floating > .form-control-plaintext:-webkit-autofill { - padding-top: 1.625rem; - padding-bottom: 0.625rem; } - .form-floating > .form-select { - padding-top: 1.625rem; - padding-bottom: 0.625rem; } - .form-floating > .form-control:focus ~ label, - .form-floating > .form-control:not(:placeholder-shown) ~ label, - .form-floating > .form-control-plaintext ~ label, - .form-floating > .form-select ~ label { - color: rgba(var(--bs-body-color-rgb), 0.65); - transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } - .form-floating > .form-control:focus ~ label::after, - .form-floating > .form-control:not(:placeholder-shown) ~ label::after, - .form-floating > .form-control-plaintext ~ label::after, - .form-floating > .form-select ~ label::after { - position: absolute; - inset: 1rem 0.375rem; - z-index: -1; - height: 1.5em; - content: ""; - background-color: var(--bs-body-bg); - border-radius: var(--bs-border-radius); } - .form-floating > .form-control:-webkit-autofill ~ label { - color: rgba(var(--bs-body-color-rgb), 0.65); - transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } - .form-floating > .form-control-plaintext ~ label { - border-width: var(--bs-border-width) 0; } - .form-floating > :disabled ~ label, - .form-floating > .form-control:disabled ~ label { - color: #6c757d; } - .form-floating > :disabled ~ label::after, - .form-floating > .form-control:disabled ~ label::after { - background-color: var(--bs-secondary-bg); } - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; } - .input-group > .form-control, - .input-group > .form-select, - .input-group > .form-floating { - position: relative; - flex: 1 1 auto; - width: 1%; - min-width: 0; } - .input-group > .form-control:focus, - .input-group > .form-select:focus, - .input-group > .form-floating:focus-within { - z-index: 5; } - .input-group .btn, .input-group div.drawio button, div.drawio .input-group button, .input-group .td-blog .td-rss-button, .td-blog .input-group .td-rss-button { - position: relative; - z-index: 2; } - .input-group .btn:focus, .input-group div.drawio button:focus, div.drawio .input-group button:focus, .input-group .td-blog .td-rss-button:focus, .td-blog .input-group .td-rss-button:focus { - z-index: 5; } - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: var(--bs-body-color); - text-align: center; - white-space: nowrap; - background-color: var(--bs-tertiary-bg); - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); } - -.input-group-lg > .form-control, -.input-group-lg > .form-select, -.input-group-lg > .input-group-text, -.input-group-lg > .btn, -div.drawio .input-group-lg > button, -.td-blog .input-group-lg > .td-rss-button { - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: var(--bs-border-radius-lg); } - -.input-group-sm > .form-control, -.input-group-sm > .form-select, -.input-group-sm > .input-group-text, -.input-group-sm > .btn, -div.drawio .input-group-sm > button, -.td-blog .input-group-sm > .td-rss-button { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: var(--bs-border-radius-sm); } - -.input-group-lg > .form-select, -.input-group-sm > .form-select { - padding-right: 3rem; } - -.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), -.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n + 3), -.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, -.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group.has-validation > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), -.input-group.has-validation > .dropdown-toggle:nth-last-child(n + 4), -.input-group.has-validation > .form-floating:nth-last-child(n + 3) > .form-control, -.input-group.has-validation > .form-floating:nth-last-child(n + 3) > .form-select { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { - margin-left: calc(var(--bs-border-width) * -1); - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.input-group > .form-floating:not(:first-child) > .form-control, -.input-group > .form-floating:not(:first-child) > .form-select { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: var(--bs-form-valid-color); } - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - color: #fff; - background-color: var(--bs-success); - border-radius: var(--bs-border-radius); } - -.was-validated :valid ~ .valid-feedback, -.was-validated :valid ~ .valid-tooltip, -.is-valid ~ .valid-feedback, -.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: var(--bs-form-valid-border-color); - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233772ff' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: var(--bs-form-valid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .form-select:valid, .form-select.is-valid { - border-color: var(--bs-form-valid-border-color); } - .was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { - --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233772ff' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - padding-right: 4.125rem; - background-position: right 0.75rem center, center right 2.25rem; - background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-select:valid:focus, .form-select.is-valid:focus { - border-color: var(--bs-form-valid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } - -.was-validated .form-control-color:valid, .form-control-color.is-valid { - width: calc(3rem + calc(1.5em + 0.75rem)); } - -.was-validated .form-check-input:valid, .form-check-input.is-valid { - border-color: var(--bs-form-valid-border-color); } - .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { - background-color: var(--bs-form-valid-color); } - .was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { - box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } - .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: var(--bs-form-valid-color); } - -.form-check-inline .form-check-input ~ .valid-feedback { - margin-left: .5em; } - -.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, .was-validated .input-group > .form-select:not(:focus):valid, -.input-group > .form-select:not(:focus).is-valid, .was-validated .input-group > .form-floating:not(:focus-within):valid, -.input-group > .form-floating:not(:focus-within).is-valid { - z-index: 3; } - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: var(--bs-form-invalid-color); } - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - color: #fff; - background-color: var(--bs-danger); - border-radius: var(--bs-border-radius); } - -.was-validated :invalid ~ .invalid-feedback, -.was-validated :invalid ~ .invalid-tooltip, -.is-invalid ~ .invalid-feedback, -.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: var(--bs-form-invalid-border-color); - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed6a5a'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ed6a5a' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: var(--bs-form-invalid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .form-select:invalid, .form-select.is-invalid { - border-color: var(--bs-form-invalid-border-color); } - .was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { - --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed6a5a'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ed6a5a' stroke='none'/%3e%3c/svg%3e"); - padding-right: 4.125rem; - background-position: right 0.75rem center, center right 2.25rem; - background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { - border-color: var(--bs-form-invalid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } - -.was-validated .form-control-color:invalid, .form-control-color.is-invalid { - width: calc(3rem + calc(1.5em + 0.75rem)); } - -.was-validated .form-check-input:invalid, .form-check-input.is-invalid { - border-color: var(--bs-form-invalid-border-color); } - .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { - background-color: var(--bs-form-invalid-color); } - .was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { - box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } - .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: var(--bs-form-invalid-color); } - -.form-check-inline .form-check-input ~ .invalid-feedback { - margin-left: .5em; } - -.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, .was-validated .input-group > .form-select:not(:focus):invalid, -.input-group > .form-select:not(:focus).is-invalid, .was-validated .input-group > .form-floating:not(:focus-within):invalid, -.input-group > .form-floating:not(:focus-within).is-invalid { - z-index: 4; } - -.btn, div.drawio button, .td-blog .td-rss-button { - --bs-btn-padding-x: 0.75rem; - --bs-btn-padding-y: 0.375rem; - --bs-btn-font-family: ; - --bs-btn-font-size: 1rem; - --bs-btn-font-weight: 400; - --bs-btn-line-height: 1.5; - --bs-btn-color: var(--bs-body-color); - --bs-btn-bg: transparent; - --bs-btn-border-width: var(--bs-border-width); - --bs-btn-border-color: transparent; - --bs-btn-border-radius: var(--bs-border-radius); - --bs-btn-hover-border-color: transparent; - --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); - --bs-btn-disabled-opacity: 0.65; - --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); - display: inline-block; - padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); - font-family: var(--bs-btn-font-family); - font-size: var(--bs-btn-font-size); - font-weight: var(--bs-btn-font-weight); - line-height: var(--bs-btn-line-height); - color: var(--bs-btn-color); - text-align: center; - text-decoration: none; - vertical-align: middle; - cursor: pointer; - user-select: none; - border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); - border-radius: var(--bs-btn-border-radius); - background-color: var(--bs-btn-bg); - background-image: var(--bs-gradient); - box-shadow: var(--bs-btn-box-shadow); - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .btn, div.drawio button, .td-blog .td-rss-button { - transition: none; } } - .btn:hover, div.drawio button:hover, .td-blog .td-rss-button:hover { - color: var(--bs-btn-hover-color); - background-color: var(--bs-btn-hover-bg); - border-color: var(--bs-btn-hover-border-color); } - .btn-check + .btn:hover, div.drawio .btn-check + button:hover, .td-blog .btn-check + .td-rss-button:hover { - color: var(--bs-btn-color); - background-color: var(--bs-btn-bg); - border-color: var(--bs-btn-border-color); } - .btn:focus-visible, div.drawio button:focus-visible, .td-blog .td-rss-button:focus-visible { - color: var(--bs-btn-hover-color); - background-color: var(--bs-btn-hover-bg); - background-image: var(--bs-gradient); - border-color: var(--bs-btn-hover-border-color); - outline: 0; - box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); } - .btn-check:focus-visible + .btn, div.drawio .btn-check:focus-visible + button, .td-blog .btn-check:focus-visible + .td-rss-button { - border-color: var(--bs-btn-hover-border-color); - outline: 0; - box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); } - .btn-check:checked + .btn, div.drawio .btn-check:checked + button, .td-blog .btn-check:checked + .td-rss-button, :not(.btn-check) + .btn:active, div.drawio :not(.btn-check) + button:active, .td-blog :not(.btn-check) + .td-rss-button:active, .btn:first-child:active, div.drawio button:first-child:active, .td-blog .td-rss-button:first-child:active, .btn.active, div.drawio button.active, .td-blog .active.td-rss-button, .btn.show, div.drawio button.show, .td-blog .show.td-rss-button { - color: var(--bs-btn-active-color); - background-color: var(--bs-btn-active-bg); - background-image: none; - border-color: var(--bs-btn-active-border-color); - box-shadow: var(--bs-btn-active-shadow); } - .btn-check:checked + .btn:focus-visible, div.drawio .btn-check:checked + button:focus-visible, .td-blog .btn-check:checked + .td-rss-button:focus-visible, :not(.btn-check) + .btn:active:focus-visible, div.drawio :not(.btn-check) + button:active:focus-visible, .td-blog :not(.btn-check) + .td-rss-button:active:focus-visible, .btn:first-child:active:focus-visible, div.drawio button:first-child:active:focus-visible, .td-blog .td-rss-button:first-child:active:focus-visible, .btn.active:focus-visible, div.drawio button.active:focus-visible, .td-blog .active.td-rss-button:focus-visible, .btn.show:focus-visible, div.drawio button.show:focus-visible, .td-blog .show.td-rss-button:focus-visible { - box-shadow: var(--bs-btn-active-shadow), var(--bs-btn-focus-box-shadow); } - .btn-check:checked:focus-visible + .btn, div.drawio .btn-check:checked:focus-visible + button, .td-blog .btn-check:checked:focus-visible + .td-rss-button { - box-shadow: var(--bs-btn-active-shadow), var(--bs-btn-focus-box-shadow); } - .btn:disabled, div.drawio button:disabled, .td-blog .td-rss-button:disabled, .btn.disabled, div.drawio button.disabled, .td-blog .disabled.td-rss-button, fieldset:disabled .btn, fieldset:disabled div.drawio button, div.drawio fieldset:disabled button, fieldset:disabled .td-blog .td-rss-button, .td-blog fieldset:disabled .td-rss-button { - color: var(--bs-btn-disabled-color); - pointer-events: none; - background-color: var(--bs-btn-disabled-bg); - background-image: none; - border-color: var(--bs-btn-disabled-border-color); - opacity: var(--bs-btn-disabled-opacity); - box-shadow: none; } - -.btn-primary { - --bs-btn-color: #fff; - --bs-btn-bg: #30638e; - --bs-btn-border-color: #30638e; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #295479; - --bs-btn-hover-border-color: #264f72; - --bs-btn-focus-shadow-rgb: 79, 122, 159; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #264f72; - --bs-btn-active-border-color: #244a6b; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #fff; - --bs-btn-disabled-bg: #30638e; - --bs-btn-disabled-border-color: #30638e; } - -.btn-secondary { - --bs-btn-color: #000; - --bs-btn-bg: #ffa630; - --bs-btn-border-color: #ffa630; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ffb34f; - --bs-btn-hover-border-color: #ffaf45; - --bs-btn-focus-shadow-rgb: 217, 141, 41; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ffb859; - --bs-btn-active-border-color: #ffaf45; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #ffa630; - --bs-btn-disabled-border-color: #ffa630; } - -.btn-success { - --bs-btn-color: #000; - --bs-btn-bg: #3772ff; - --bs-btn-border-color: #3772ff; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #5587ff; - --bs-btn-hover-border-color: #4b80ff; - --bs-btn-focus-shadow-rgb: 47, 97, 217; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #5f8eff; - --bs-btn-active-border-color: #4b80ff; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #3772ff; - --bs-btn-disabled-border-color: #3772ff; } - -.btn-info, .td-blog .td-rss-button { - --bs-btn-color: #000; - --bs-btn-bg: #c0e0de; - --bs-btn-border-color: #c0e0de; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #c9e5e3; - --bs-btn-hover-border-color: #c6e3e1; - --bs-btn-focus-shadow-rgb: 163, 190, 189; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #cde6e5; - --bs-btn-active-border-color: #c6e3e1; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #c0e0de; - --bs-btn-disabled-border-color: #c0e0de; } - -.btn-warning { - --bs-btn-color: #000; - --bs-btn-bg: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #f08073; - --bs-btn-hover-border-color: #ef796b; - --bs-btn-focus-shadow-rgb: 201, 90, 77; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #f1887b; - --bs-btn-active-border-color: #ef796b; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #ed6a5a; - --bs-btn-disabled-border-color: #ed6a5a; } - -.btn-danger { - --bs-btn-color: #000; - --bs-btn-bg: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #f08073; - --bs-btn-hover-border-color: #ef796b; - --bs-btn-focus-shadow-rgb: 201, 90, 77; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #f1887b; - --bs-btn-active-border-color: #ef796b; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #ed6a5a; - --bs-btn-disabled-border-color: #ed6a5a; } - -.btn-light { - --bs-btn-color: #000; - --bs-btn-bg: #d3f3ee; - --bs-btn-border-color: #d3f3ee; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #b3cfca; - --bs-btn-hover-border-color: #a9c2be; - --bs-btn-focus-shadow-rgb: 179, 207, 202; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #a9c2be; - --bs-btn-active-border-color: #9eb6b3; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #d3f3ee; - --bs-btn-disabled-border-color: #d3f3ee; } - -.btn-dark { - --bs-btn-color: #fff; - --bs-btn-bg: #403f4c; - --bs-btn-border-color: #403f4c; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #5d5c67; - --bs-btn-hover-border-color: #53525e; - --bs-btn-focus-shadow-rgb: 93, 92, 103; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #666570; - --bs-btn-active-border-color: #53525e; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #fff; - --bs-btn-disabled-bg: #403f4c; - --bs-btn-disabled-border-color: #403f4c; } - -.btn-outline-primary, div.drawio button { - --bs-btn-color: #30638e; - --bs-btn-border-color: #30638e; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #30638e; - --bs-btn-hover-border-color: #30638e; - --bs-btn-focus-shadow-rgb: 48, 99, 142; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #30638e; - --bs-btn-active-border-color: #30638e; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #30638e; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #30638e; - --bs-gradient: none; } - -.btn-outline-secondary { - --bs-btn-color: #ffa630; - --bs-btn-border-color: #ffa630; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ffa630; - --bs-btn-hover-border-color: #ffa630; - --bs-btn-focus-shadow-rgb: 255, 166, 48; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ffa630; - --bs-btn-active-border-color: #ffa630; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #ffa630; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #ffa630; - --bs-gradient: none; } - -.btn-outline-success { - --bs-btn-color: #3772ff; - --bs-btn-border-color: #3772ff; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #3772ff; - --bs-btn-hover-border-color: #3772ff; - --bs-btn-focus-shadow-rgb: 55, 114, 255; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #3772ff; - --bs-btn-active-border-color: #3772ff; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #3772ff; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #3772ff; - --bs-gradient: none; } - -.btn-outline-info { - --bs-btn-color: #c0e0de; - --bs-btn-border-color: #c0e0de; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #c0e0de; - --bs-btn-hover-border-color: #c0e0de; - --bs-btn-focus-shadow-rgb: 192, 224, 222; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #c0e0de; - --bs-btn-active-border-color: #c0e0de; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #c0e0de; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #c0e0de; - --bs-gradient: none; } - -.btn-outline-warning { - --bs-btn-color: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ed6a5a; - --bs-btn-hover-border-color: #ed6a5a; - --bs-btn-focus-shadow-rgb: 237, 106, 90; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ed6a5a; - --bs-btn-active-border-color: #ed6a5a; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #ed6a5a; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #ed6a5a; - --bs-gradient: none; } - -.btn-outline-danger { - --bs-btn-color: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ed6a5a; - --bs-btn-hover-border-color: #ed6a5a; - --bs-btn-focus-shadow-rgb: 237, 106, 90; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ed6a5a; - --bs-btn-active-border-color: #ed6a5a; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #ed6a5a; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #ed6a5a; - --bs-gradient: none; } - -.btn-outline-light { - --bs-btn-color: #d3f3ee; - --bs-btn-border-color: #d3f3ee; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #d3f3ee; - --bs-btn-hover-border-color: #d3f3ee; - --bs-btn-focus-shadow-rgb: 211, 243, 238; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #d3f3ee; - --bs-btn-active-border-color: #d3f3ee; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #d3f3ee; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #d3f3ee; - --bs-gradient: none; } - -.btn-outline-dark { - --bs-btn-color: #403f4c; - --bs-btn-border-color: #403f4c; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #403f4c; - --bs-btn-hover-border-color: #403f4c; - --bs-btn-focus-shadow-rgb: 64, 63, 76; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #403f4c; - --bs-btn-active-border-color: #403f4c; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #403f4c; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #403f4c; - --bs-gradient: none; } - -.btn-link { - --bs-btn-font-weight: 400; - --bs-btn-color: var(--bs-link-color); - --bs-btn-bg: transparent; - --bs-btn-border-color: transparent; - --bs-btn-hover-color: var(--bs-link-hover-color); - --bs-btn-hover-border-color: transparent; - --bs-btn-active-color: var(--bs-link-hover-color); - --bs-btn-active-border-color: transparent; - --bs-btn-disabled-color: #6c757d; - --bs-btn-disabled-border-color: transparent; - --bs-btn-box-shadow: 0 0 0 #000; - --bs-btn-focus-shadow-rgb: 49, 132, 253; - text-decoration: underline; - background-image: none; } - .btn-link:focus-visible { - color: var(--bs-btn-color); } - .btn-link:hover { - color: var(--bs-btn-hover-color); } - -.btn-lg, .td-blog .td-rss-button, .btn-group-lg > .btn, div.drawio .btn-group-lg > button { - --bs-btn-padding-y: 0.5rem; - --bs-btn-padding-x: 1rem; - --bs-btn-font-size: 1.25rem; - --bs-btn-border-radius: var(--bs-border-radius-lg); } - -.btn-sm, .btn-group-sm > .btn, div.drawio .btn-group-sm > button, .td-blog .btn-group-sm > .td-rss-button { - --bs-btn-padding-y: 0.25rem; - --bs-btn-padding-x: 0.5rem; - --bs-btn-font-size: 0.875rem; - --bs-btn-border-radius: var(--bs-border-radius-sm); } - -.fade { - transition: opacity 0.15s linear; } - @media (prefers-reduced-motion: reduce) { - .fade { - transition: none; } } - .fade:not(.show) { - opacity: 0; } - -.collapse:not(.show) { - display: none; } - -.collapsing { - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; } } - .collapsing.collapse-horizontal { - width: 0; - height: auto; - transition: width 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing.collapse-horizontal { - transition: none; } } -.dropup, -.dropend, -.dropdown, -.dropstart, -.dropup-center, -.dropdown-center { - position: relative; } - -.dropdown-toggle { - white-space: nowrap; } - .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; } - .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropdown-menu { - --bs-dropdown-zindex: 1000; - --bs-dropdown-min-width: 10rem; - --bs-dropdown-padding-x: 0; - --bs-dropdown-padding-y: 0.5rem; - --bs-dropdown-spacer: 0.125rem; - --bs-dropdown-font-size: 1rem; - --bs-dropdown-color: var(--bs-body-color); - --bs-dropdown-bg: var(--bs-body-bg); - --bs-dropdown-border-color: var(--bs-border-color-translucent); - --bs-dropdown-border-radius: var(--bs-border-radius); - --bs-dropdown-border-width: var(--bs-border-width); - --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); - --bs-dropdown-divider-bg: var(--bs-border-color-translucent); - --bs-dropdown-divider-margin-y: 0.5rem; - --bs-dropdown-box-shadow: var(--bs-box-shadow); - --bs-dropdown-link-color: var(--bs-body-color); - --bs-dropdown-link-hover-color: var(--bs-body-color); - --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); - --bs-dropdown-link-active-color: #fff; - --bs-dropdown-link-active-bg: #30638e; - --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); - --bs-dropdown-item-padding-x: 1rem; - --bs-dropdown-item-padding-y: 0.25rem; - --bs-dropdown-header-color: #6c757d; - --bs-dropdown-header-padding-x: 1rem; - --bs-dropdown-header-padding-y: 0.5rem; - position: absolute; - z-index: var(--bs-dropdown-zindex); - display: none; - min-width: var(--bs-dropdown-min-width); - padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); - margin: 0; - font-size: var(--bs-dropdown-font-size); - color: var(--bs-dropdown-color); - text-align: left; - list-style: none; - background-color: var(--bs-dropdown-bg); - background-clip: padding-box; - border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); - border-radius: var(--bs-dropdown-border-radius); - box-shadow: var(--bs-dropdown-box-shadow); } - .dropdown-menu[data-bs-popper] { - top: 100%; - left: 0; - margin-top: var(--bs-dropdown-spacer); } - -.dropdown-menu-start { - --bs-position: start; } - .dropdown-menu-start[data-bs-popper] { - right: auto; - left: 0; } - -.dropdown-menu-end { - --bs-position: end; } - .dropdown-menu-end[data-bs-popper] { - right: 0; - left: auto; } - -@media (min-width: 576px) { - .dropdown-menu-sm-start { - --bs-position: start; } - .dropdown-menu-sm-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-sm-end { - --bs-position: end; } - .dropdown-menu-sm-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 768px) { - .dropdown-menu-md-start { - --bs-position: start; } - .dropdown-menu-md-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-md-end { - --bs-position: end; } - .dropdown-menu-md-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 992px) { - .dropdown-menu-lg-start { - --bs-position: start; } - .dropdown-menu-lg-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-lg-end { - --bs-position: end; } - .dropdown-menu-lg-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 1200px) { - .dropdown-menu-xl-start { - --bs-position: start; } - .dropdown-menu-xl-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-xl-end { - --bs-position: end; } - .dropdown-menu-xl-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 1400px) { - .dropdown-menu-xxl-start { - --bs-position: start; } - .dropdown-menu-xxl-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-xxl-end { - --bs-position: end; } - .dropdown-menu-xxl-end[data-bs-popper] { - right: 0; - left: auto; } } - -.dropup .dropdown-menu[data-bs-popper] { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: var(--bs-dropdown-spacer); } - -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; } - -.dropup .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropend .dropdown-menu[data-bs-popper] { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: var(--bs-dropdown-spacer); } - -.dropend .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; } - -.dropend .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropend .dropdown-toggle::after { - vertical-align: 0; } - -.dropstart .dropdown-menu[data-bs-popper] { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: var(--bs-dropdown-spacer); } - -.dropstart .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; } - -.dropstart .dropdown-toggle::after { - display: none; } - -.dropstart .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; } - -.dropstart .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropstart .dropdown-toggle::before { - vertical-align: 0; } - -.dropdown-divider { - height: 0; - margin: var(--bs-dropdown-divider-margin-y) 0; - overflow: hidden; - border-top: 1px solid var(--bs-dropdown-divider-bg); - opacity: 1; } - -.dropdown-item { - display: block; - width: 100%; - padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); - clear: both; - font-weight: 400; - color: var(--bs-dropdown-link-color); - text-align: inherit; - text-decoration: none; - white-space: nowrap; - background-color: transparent; - border: 0; - border-radius: var(--bs-dropdown-item-border-radius, 0); } - .dropdown-item:hover, .dropdown-item:focus { - color: var(--bs-dropdown-link-hover-color); - background-color: var(--bs-dropdown-link-hover-bg); - background-image: var(--bs-gradient); } - .dropdown-item.active, .dropdown-item:active { - color: var(--bs-dropdown-link-active-color); - text-decoration: none; - background-color: var(--bs-dropdown-link-active-bg); - background-image: var(--bs-gradient); } - .dropdown-item.disabled, .dropdown-item:disabled { - color: var(--bs-dropdown-link-disabled-color); - pointer-events: none; - background-color: transparent; - background-image: none; } - -.dropdown-menu.show { - display: block; } - -.dropdown-header { - display: block; - padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); - margin-bottom: 0; - font-size: 0.875rem; - color: var(--bs-dropdown-header-color); - white-space: nowrap; } - -.dropdown-item-text { - display: block; - padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); - color: var(--bs-dropdown-link-color); } - -.dropdown-menu-dark { - --bs-dropdown-color: #dee2e6; - --bs-dropdown-bg: #343a40; - --bs-dropdown-border-color: var(--bs-border-color-translucent); - --bs-dropdown-box-shadow: ; - --bs-dropdown-link-color: #dee2e6; - --bs-dropdown-link-hover-color: #fff; - --bs-dropdown-divider-bg: var(--bs-border-color-translucent); - --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); - --bs-dropdown-link-active-color: #fff; - --bs-dropdown-link-active-bg: #30638e; - --bs-dropdown-link-disabled-color: #adb5bd; - --bs-dropdown-header-color: #adb5bd; } - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, div.drawio .btn-group > button, .td-blog .btn-group > .td-rss-button, - .btn-group-vertical > .btn, - div.drawio .btn-group-vertical > button, - .td-blog .btn-group-vertical > .td-rss-button { - position: relative; - flex: 1 1 auto; } - .btn-group > .btn-check:checked + .btn, div.drawio .btn-group > .btn-check:checked + button, .td-blog .btn-group > .btn-check:checked + .td-rss-button, - .btn-group > .btn-check:focus + .btn, - div.drawio .btn-group > .btn-check:focus + button, - .td-blog .btn-group > .btn-check:focus + .td-rss-button, - .btn-group > .btn:hover, - div.drawio .btn-group > button:hover, - .td-blog .btn-group > .td-rss-button:hover, - .btn-group > .btn:focus, - div.drawio .btn-group > button:focus, - .td-blog .btn-group > .td-rss-button:focus, - .btn-group > .btn:active, - div.drawio .btn-group > button:active, - .td-blog .btn-group > .td-rss-button:active, - .btn-group > .btn.active, - div.drawio .btn-group > button.active, - .td-blog .btn-group > .active.td-rss-button, - .btn-group-vertical > .btn-check:checked + .btn, - div.drawio .btn-group-vertical > .btn-check:checked + button, - .td-blog .btn-group-vertical > .btn-check:checked + .td-rss-button, - .btn-group-vertical > .btn-check:focus + .btn, - div.drawio .btn-group-vertical > .btn-check:focus + button, - .td-blog .btn-group-vertical > .btn-check:focus + .td-rss-button, - .btn-group-vertical > .btn:hover, - div.drawio .btn-group-vertical > button:hover, - .td-blog .btn-group-vertical > .td-rss-button:hover, - .btn-group-vertical > .btn:focus, - div.drawio .btn-group-vertical > button:focus, - .td-blog .btn-group-vertical > .td-rss-button:focus, - .btn-group-vertical > .btn:active, - div.drawio .btn-group-vertical > button:active, - .td-blog .btn-group-vertical > .td-rss-button:active, - .btn-group-vertical > .btn.active, - div.drawio .btn-group-vertical > button.active, - .td-blog .btn-group-vertical > .active.td-rss-button { - z-index: 1; } - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - -.btn-group { - border-radius: var(--bs-border-radius); } - .btn-group > :not(.btn-check:first-child) + .btn, div.drawio .btn-group > :not(.btn-check:first-child) + button, .td-blog .btn-group > :not(.btn-check:first-child) + .td-rss-button, - .btn-group > .btn-group:not(:first-child) { - margin-left: calc(var(--bs-border-width) * -1); } - .btn-group > .btn:not(:last-child):not(.dropdown-toggle), div.drawio .btn-group > button:not(:last-child):not(.dropdown-toggle), .td-blog .btn-group > .td-rss-button:not(:last-child):not(.dropdown-toggle), - .btn-group > .btn.dropdown-toggle-split:first-child, - div.drawio .btn-group > button.dropdown-toggle-split:first-child, - .td-blog .btn-group > .dropdown-toggle-split.td-rss-button:first-child, - .btn-group > .btn-group:not(:last-child) > .btn, - div.drawio .btn-group > .btn-group:not(:last-child) > button, - .td-blog .btn-group > .btn-group:not(:last-child) > .td-rss-button { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .btn-group > .btn:nth-child(n + 3), div.drawio .btn-group > button:nth-child(n + 3), .td-blog .btn-group > .td-rss-button:nth-child(n + 3), - .btn-group > :not(.btn-check) + .btn, - div.drawio .btn-group > :not(.btn-check) + button, - .td-blog .btn-group > :not(.btn-check) + .td-rss-button, - .btn-group > .btn-group:not(:first-child) > .btn, - div.drawio .btn-group > .btn-group:not(:first-child) > button, - .td-blog .btn-group > .btn-group:not(:first-child) > .td-rss-button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { - margin-left: 0; } - .dropstart .dropdown-toggle-split::before { - margin-right: 0; } - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, div.drawio .btn-group-sm > button + .dropdown-toggle-split, .td-blog .btn-group-sm > .td-rss-button + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - -.btn-lg + .dropdown-toggle-split, .td-blog .td-rss-button + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, div.drawio .btn-group-lg > button + .dropdown-toggle-split, .td-blog .btn-group-lg > .td-rss-button + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - -.btn-group.show .dropdown-toggle { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } - .btn-group.show .dropdown-toggle.btn-link { - box-shadow: none; } - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; } - .btn-group-vertical > .btn, div.drawio .btn-group-vertical > button, .td-blog .btn-group-vertical > .td-rss-button, - .btn-group-vertical > .btn-group { - width: 100%; } - .btn-group-vertical > .btn:not(:first-child), div.drawio .btn-group-vertical > button:not(:first-child), .td-blog .btn-group-vertical > .td-rss-button:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) { - margin-top: calc(var(--bs-border-width) * -1); } - .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), div.drawio .btn-group-vertical > button:not(:last-child):not(.dropdown-toggle), .td-blog .btn-group-vertical > .td-rss-button:not(:last-child):not(.dropdown-toggle), - .btn-group-vertical > .btn-group:not(:last-child) > .btn, - div.drawio .btn-group-vertical > .btn-group:not(:last-child) > button, - .td-blog .btn-group-vertical > .btn-group:not(:last-child) > .td-rss-button { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .btn-group-vertical > .btn ~ .btn, div.drawio .btn-group-vertical > button ~ .btn, div.drawio .btn-group-vertical > .btn ~ button, div.drawio .btn-group-vertical > button ~ button, .td-blog .btn-group-vertical > .td-rss-button ~ .btn, .td-blog div.drawio .btn-group-vertical > .td-rss-button ~ button, div.drawio .td-blog .btn-group-vertical > .td-rss-button ~ button, .td-blog .btn-group-vertical > .btn ~ .td-rss-button, .td-blog div.drawio .btn-group-vertical > button ~ .td-rss-button, div.drawio .td-blog .btn-group-vertical > button ~ .td-rss-button, .td-blog .btn-group-vertical > .td-rss-button ~ .td-rss-button, - .btn-group-vertical > .btn-group:not(:first-child) > .btn, - div.drawio .btn-group-vertical > .btn-group:not(:first-child) > button, - .td-blog .btn-group-vertical > .btn-group:not(:first-child) > .td-rss-button { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav { - --bs-nav-link-padding-x: 1rem; - --bs-nav-link-padding-y: 0.5rem; - --bs-nav-link-font-weight: ; - --bs-nav-link-color: var(--bs-link-color); - --bs-nav-link-hover-color: var(--bs-link-hover-color); - --bs-nav-link-disabled-color: var(--bs-secondary-color); - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - -.nav-link { - display: block; - padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); - font-size: var(--bs-nav-link-font-size); - font-weight: var(--bs-nav-link-font-weight); - color: var(--bs-nav-link-color); - text-decoration: none; - background: none; - border: 0; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .nav-link { - transition: none; } } - .nav-link:hover, .nav-link:focus { - color: var(--bs-nav-link-hover-color); } - .nav-link:focus-visible { - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .nav-link.disabled, .nav-link:disabled { - color: var(--bs-nav-link-disabled-color); - pointer-events: none; - cursor: default; } - -.nav-tabs { - --bs-nav-tabs-border-width: var(--bs-border-width); - --bs-nav-tabs-border-color: var(--bs-border-color); - --bs-nav-tabs-border-radius: var(--bs-border-radius); - --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color); - --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); - --bs-nav-tabs-link-active-bg: var(--bs-body-bg); - --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); - border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); } - .nav-tabs .nav-link { - margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); - border: var(--bs-nav-tabs-border-width) solid transparent; - border-top-left-radius: var(--bs-nav-tabs-border-radius); - border-top-right-radius: var(--bs-nav-tabs-border-radius); } - .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - isolation: isolate; - border-color: var(--bs-nav-tabs-link-hover-border-color); } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: var(--bs-nav-tabs-link-active-color); - background-color: var(--bs-nav-tabs-link-active-bg); - border-color: var(--bs-nav-tabs-link-active-border-color); } - .nav-tabs .dropdown-menu { - margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav-pills { - --bs-nav-pills-border-radius: var(--bs-border-radius); - --bs-nav-pills-link-active-color: #fff; - --bs-nav-pills-link-active-bg: #30638e; } - .nav-pills .nav-link { - border-radius: var(--bs-nav-pills-border-radius); } - .nav-pills .nav-link.active, - .nav-pills .show > .nav-link { - color: var(--bs-nav-pills-link-active-color); - background-color: var(--bs-nav-pills-link-active-bg); - background-image: var(--bs-gradient); } - -.nav-underline { - --bs-nav-underline-gap: 1rem; - --bs-nav-underline-border-width: 0.125rem; - --bs-nav-underline-link-active-color: var(--bs-emphasis-color); - gap: var(--bs-nav-underline-gap); } - .nav-underline .nav-link { - padding-right: 0; - padding-left: 0; - border-bottom: var(--bs-nav-underline-border-width) solid transparent; } - .nav-underline .nav-link:hover, .nav-underline .nav-link:focus { - border-bottom-color: currentcolor; } - .nav-underline .nav-link.active, - .nav-underline .show > .nav-link { - font-weight: 700; - color: var(--bs-nav-underline-link-active-color); - border-bottom-color: currentcolor; } - -.nav-fill > .nav-link, -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; } - -.nav-justified > .nav-link, -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; } - -.nav-fill .nav-item .nav-link, -.nav-justified .nav-item .nav-link { - width: 100%; } - -.tab-content > .tab-pane { - display: none; } - -.tab-content > .active { - display: block; } - -.navbar, .td-navbar { - --bs-navbar-padding-x: 0; - --bs-navbar-padding-y: 0.5rem; - --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); - --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); - --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); - --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); - --bs-navbar-brand-padding-y: 0.3125rem; - --bs-navbar-brand-margin-end: 1rem; - --bs-navbar-brand-font-size: 1.25rem; - --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); - --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); - --bs-navbar-nav-link-padding-x: 0.5rem; - --bs-navbar-toggler-padding-y: 0.25rem; - --bs-navbar-toggler-padding-x: 0.75rem; - --bs-navbar-toggler-font-size: 1.25rem; - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); - --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); - --bs-navbar-toggler-border-radius: var(--bs-border-radius); - --bs-navbar-toggler-focus-width: 0.25rem; - --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); - background-image: var(--bs-gradient); } - .navbar > .container, .td-navbar > .container, - .navbar > .container-fluid, - .td-navbar > .container-fluid, - .navbar > .container-sm, - .td-navbar > .container-sm, - .navbar > .container-md, - .td-navbar > .container-md, - .navbar > .container-lg, - .td-navbar > .container-lg, - .navbar > .container-xl, - .td-navbar > .container-xl, - .navbar > .container-xxl, - .td-navbar > .container-xxl { - display: flex; - flex-wrap: inherit; - align-items: center; - justify-content: space-between; } - -.navbar-brand { - padding-top: var(--bs-navbar-brand-padding-y); - padding-bottom: var(--bs-navbar-brand-padding-y); - margin-right: var(--bs-navbar-brand-margin-end); - font-size: var(--bs-navbar-brand-font-size); - color: var(--bs-navbar-brand-color); - text-decoration: none; - white-space: nowrap; } - .navbar-brand:hover, .navbar-brand:focus { - color: var(--bs-navbar-brand-hover-color); } - -.navbar-nav { - --bs-nav-link-padding-x: 0; - --bs-nav-link-padding-y: 0.5rem; - --bs-nav-link-font-weight: ; - --bs-nav-link-color: var(--bs-navbar-color); - --bs-nav-link-hover-color: var(--bs-navbar-hover-color); - --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link.active, .navbar-nav .nav-link.show { - color: var(--bs-navbar-active-color); } - .navbar-nav .dropdown-menu { - position: static; } - -.navbar-text { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-navbar-color); } - .navbar-text a, - .navbar-text a:hover, - .navbar-text a:focus { - color: var(--bs-navbar-active-color); } - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; } - -.navbar-toggler { - padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); - font-size: var(--bs-navbar-toggler-font-size); - line-height: 1; - color: var(--bs-navbar-color); - background-color: transparent; - border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); - border-radius: var(--bs-navbar-toggler-border-radius); - transition: var(--bs-navbar-toggler-transition); } - @media (prefers-reduced-motion: reduce) { - .navbar-toggler { - transition: none; } } - .navbar-toggler:hover { - text-decoration: none; } - .navbar-toggler:focus { - text-decoration: none; - outline: 0; - box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); } - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - background-image: var(--bs-navbar-toggler-icon-bg); - background-repeat: no-repeat; - background-position: center; - background-size: 100%; } - -.navbar-nav-scroll { - max-height: var(--bs-scroll-height, 75vh); - overflow-y: auto; } - -@media (min-width: 576px) { - .navbar-expand-sm { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-sm .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-sm .navbar-toggler { - display: none; } - .navbar-expand-sm .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-sm .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-sm .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 768px) { - .navbar-expand-md { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-md .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-md .navbar-toggler { - display: none; } - .navbar-expand-md .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-md .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-md .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 992px) { - .navbar-expand-lg { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-lg .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-lg .navbar-toggler { - display: none; } - .navbar-expand-lg .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-lg .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-lg .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-xl .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xl .navbar-toggler { - display: none; } - .navbar-expand-xl .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-xl .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-xl .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 1400px) { - .navbar-expand-xxl { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-xxl .navbar-nav { - flex-direction: row; } - .navbar-expand-xxl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xxl .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-xxl .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-xxl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xxl .navbar-toggler { - display: none; } - .navbar-expand-xxl .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-xxl .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-xxl .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -.navbar-expand, .td-navbar { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand .navbar-nav, .td-navbar .navbar-nav { - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu, .td-navbar .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .nav-link, .td-navbar .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand .navbar-nav-scroll, .td-navbar .navbar-nav-scroll { - overflow: visible; } - .navbar-expand .navbar-collapse, .td-navbar .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand .navbar-toggler, .td-navbar .navbar-toggler { - display: none; } - .navbar-expand .offcanvas, .td-navbar .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand .offcanvas .offcanvas-header, .td-navbar .offcanvas .offcanvas-header { - display: none; } - .navbar-expand .offcanvas .offcanvas-body, .td-navbar .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } - -.navbar-dark, -.navbar[data-bs-theme="dark"], -[data-bs-theme="dark"].td-navbar { - --bs-navbar-color: rgba(255, 255, 255, 0.55); - --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); - --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); - --bs-navbar-active-color: #fff; - --bs-navbar-brand-color: #fff; - --bs-navbar-brand-hover-color: #fff; - --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } - -[data-bs-theme="dark"] .navbar-toggler-icon { - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } - -.card { - --bs-card-spacer-y: 1rem; - --bs-card-spacer-x: 1rem; - --bs-card-title-spacer-y: 0.5rem; - --bs-card-title-color: ; - --bs-card-subtitle-color: ; - --bs-card-border-width: var(--bs-border-width); - --bs-card-border-color: var(--bs-border-color-translucent); - --bs-card-border-radius: var(--bs-border-radius); - --bs-card-box-shadow: ; - --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); - --bs-card-cap-padding-y: 0.5rem; - --bs-card-cap-padding-x: 1rem; - --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); - --bs-card-cap-color: ; - --bs-card-height: ; - --bs-card-color: ; - --bs-card-bg: var(--bs-body-bg); - --bs-card-img-overlay-padding: 1rem; - --bs-card-group-margin: 0.75rem; - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - height: var(--bs-card-height); - color: var(--bs-body-color); - word-wrap: break-word; - background-color: var(--bs-card-bg); - background-clip: border-box; - border: var(--bs-card-border-width) solid var(--bs-card-border-color); - border-radius: var(--bs-card-border-radius); - box-shadow: var(--bs-card-box-shadow); } - .card > hr { - margin-right: 0; - margin-left: 0; } - .card > .list-group { - border-top: inherit; - border-bottom: inherit; } - .card > .list-group:first-child { - border-top-width: 0; - border-top-left-radius: var(--bs-card-inner-border-radius); - border-top-right-radius: var(--bs-card-inner-border-radius); } - .card > .list-group:last-child { - border-bottom-width: 0; - border-bottom-right-radius: var(--bs-card-inner-border-radius); - border-bottom-left-radius: var(--bs-card-inner-border-radius); } - .card > .card-header + .list-group, - .card > .list-group + .card-footer { - border-top: 0; } - -.card-body { - flex: 1 1 auto; - padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); - color: var(--bs-card-color); } - -.card-title { - margin-bottom: var(--bs-card-title-spacer-y); - color: var(--bs-card-title-color); } - -.card-subtitle { - margin-top: calc(-.5 * var(--bs-card-title-spacer-y)); - margin-bottom: 0; - color: var(--bs-card-subtitle-color); } - -.card-text:last-child { - margin-bottom: 0; } - -.card-link + .card-link { - margin-left: var(--bs-card-spacer-x); } - -.card-header { - padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); - margin-bottom: 0; - color: var(--bs-card-cap-color); - background-color: var(--bs-card-cap-bg); - border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); } - .card-header:first-child { - border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; } - -.card-footer { - padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); - color: var(--bs-card-cap-color); - background-color: var(--bs-card-cap-bg); - border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); } - .card-footer:last-child { - border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); } - -.card-header-tabs { - margin-right: calc(-.5 * var(--bs-card-cap-padding-x)); - margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); - margin-left: calc(-.5 * var(--bs-card-cap-padding-x)); - border-bottom: 0; } - .card-header-tabs .nav-link.active { - background-color: var(--bs-card-bg); - border-bottom-color: var(--bs-card-bg); } - -.card-header-pills { - margin-right: calc(-.5 * var(--bs-card-cap-padding-x)); - margin-left: calc(-.5 * var(--bs-card-cap-padding-x)); } - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: var(--bs-card-img-overlay-padding); - border-radius: var(--bs-card-inner-border-radius); } - -.card-img, -.card-img-top, -.card-img-bottom { - width: 100%; } - -.card-img, -.card-img-top { - border-top-left-radius: var(--bs-card-inner-border-radius); - border-top-right-radius: var(--bs-card-inner-border-radius); } - -.card-img, -.card-img-bottom { - border-bottom-right-radius: var(--bs-card-inner-border-radius); - border-bottom-left-radius: var(--bs-card-inner-border-radius); } - -.card-group > .card { - margin-bottom: var(--bs-card-group-margin); } - -@media (min-width: 576px) { - .card-group { - display: flex; - flex-flow: row wrap; } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; } } - -.accordion { - --bs-accordion-color: var(--bs-body-color); - --bs-accordion-bg: var(--bs-body-bg); - --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; - --bs-accordion-border-color: var(--bs-border-color); - --bs-accordion-border-width: var(--bs-border-width); - --bs-accordion-border-radius: var(--bs-border-radius); - --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); - --bs-accordion-btn-padding-x: 1.25rem; - --bs-accordion-btn-padding-y: 1rem; - --bs-accordion-btn-color: var(--bs-body-color); - --bs-accordion-btn-bg: var(--bs-accordion-bg); - --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); - --bs-accordion-btn-icon-width: 1.25rem; - --bs-accordion-btn-icon-transform: rotate(-180deg); - --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; - --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23132839' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); - --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); - --bs-accordion-body-padding-x: 1.25rem; - --bs-accordion-body-padding-y: 1rem; - --bs-accordion-active-color: var(--bs-primary-text-emphasis); - --bs-accordion-active-bg: var(--bs-primary-bg-subtle); } - -.accordion-button { - position: relative; - display: flex; - align-items: center; - width: 100%; - padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); - font-size: 1rem; - color: var(--bs-accordion-btn-color); - text-align: left; - background-color: var(--bs-accordion-btn-bg); - border: 0; - border-radius: 0; - overflow-anchor: none; - transition: var(--bs-accordion-transition); } - @media (prefers-reduced-motion: reduce) { - .accordion-button { - transition: none; } } - .accordion-button:not(.collapsed) { - color: var(--bs-accordion-active-color); - background-color: var(--bs-accordion-active-bg); - box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); } - .accordion-button:not(.collapsed)::after { - background-image: var(--bs-accordion-btn-active-icon); - transform: var(--bs-accordion-btn-icon-transform); } - .accordion-button::after { - flex-shrink: 0; - width: var(--bs-accordion-btn-icon-width); - height: var(--bs-accordion-btn-icon-width); - margin-left: auto; - content: ""; - background-image: var(--bs-accordion-btn-icon); - background-repeat: no-repeat; - background-size: var(--bs-accordion-btn-icon-width); - transition: var(--bs-accordion-btn-icon-transition); } - @media (prefers-reduced-motion: reduce) { - .accordion-button::after { - transition: none; } } - .accordion-button:hover { - z-index: 2; } - .accordion-button:focus { - z-index: 3; - outline: 0; - box-shadow: var(--bs-accordion-btn-focus-box-shadow); } - -.accordion-header { - margin-bottom: 0; } - -.accordion-item { - color: var(--bs-accordion-color); - background-color: var(--bs-accordion-bg); - border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); } - .accordion-item:first-of-type { - border-top-left-radius: var(--bs-accordion-border-radius); - border-top-right-radius: var(--bs-accordion-border-radius); } - .accordion-item:first-of-type > .accordion-header .accordion-button { - border-top-left-radius: var(--bs-accordion-inner-border-radius); - border-top-right-radius: var(--bs-accordion-inner-border-radius); } - .accordion-item:not(:first-of-type) { - border-top: 0; } - .accordion-item:last-of-type { - border-bottom-right-radius: var(--bs-accordion-border-radius); - border-bottom-left-radius: var(--bs-accordion-border-radius); } - .accordion-item:last-of-type > .accordion-header .accordion-button.collapsed { - border-bottom-right-radius: var(--bs-accordion-inner-border-radius); - border-bottom-left-radius: var(--bs-accordion-inner-border-radius); } - .accordion-item:last-of-type > .accordion-collapse { - border-bottom-right-radius: var(--bs-accordion-border-radius); - border-bottom-left-radius: var(--bs-accordion-border-radius); } - -.accordion-body { - padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); } - -.accordion-flush > .accordion-item { - border-right: 0; - border-left: 0; - border-radius: 0; } - .accordion-flush > .accordion-item:first-child { - border-top: 0; } - .accordion-flush > .accordion-item:last-child { - border-bottom: 0; } - .accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed { - border-radius: 0; } - .accordion-flush > .accordion-item > .accordion-collapse { - border-radius: 0; } - -[data-bs-theme="dark"] .accordion-button::after { - --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2383a1bb'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); - --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2383a1bb'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); } - -.breadcrumb { - --bs-breadcrumb-padding-x: 0; - --bs-breadcrumb-padding-y: 0; - --bs-breadcrumb-margin-bottom: 1rem; - --bs-breadcrumb-bg: ; - --bs-breadcrumb-border-radius: ; - --bs-breadcrumb-divider-color: var(--bs-secondary-color); - --bs-breadcrumb-item-padding-x: 0.5rem; - --bs-breadcrumb-item-active-color: var(--bs-secondary-color); - display: flex; - flex-wrap: wrap; - padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); - margin-bottom: var(--bs-breadcrumb-margin-bottom); - font-size: var(--bs-breadcrumb-font-size); - list-style: none; - background-color: var(--bs-breadcrumb-bg); - border-radius: var(--bs-breadcrumb-border-radius); } - -.breadcrumb-item + .breadcrumb-item { - padding-left: var(--bs-breadcrumb-item-padding-x); } - .breadcrumb-item + .breadcrumb-item::before { - float: left; - padding-right: var(--bs-breadcrumb-item-padding-x); - color: var(--bs-breadcrumb-divider-color); - content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; } - -.breadcrumb-item.active { - color: var(--bs-breadcrumb-item-active-color); } - -.pagination { - --bs-pagination-padding-x: 0.75rem; - --bs-pagination-padding-y: 0.375rem; - --bs-pagination-font-size: 1rem; - --bs-pagination-color: #6c757d; - --bs-pagination-bg: var(--bs-body-bg); - --bs-pagination-border-width: var(--bs-border-width); - --bs-pagination-border-color: var(--bs-border-color); - --bs-pagination-border-radius: var(--bs-border-radius); - --bs-pagination-hover-color: var(--bs-link-hover-color); - --bs-pagination-hover-bg: var(--bs-tertiary-bg); - --bs-pagination-hover-border-color: var(--bs-border-color); - --bs-pagination-focus-color: var(--bs-link-hover-color); - --bs-pagination-focus-bg: var(--bs-secondary-bg); - --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); - --bs-pagination-active-color: #fff; - --bs-pagination-active-bg: #30638e; - --bs-pagination-active-border-color: #30638e; - --bs-pagination-disabled-color: #dee2e6; - --bs-pagination-disabled-bg: var(--bs-secondary-bg); - --bs-pagination-disabled-border-color: var(--bs-border-color); - display: flex; - padding-left: 0; - list-style: none; } - -.page-link { - position: relative; - display: block; - padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); - font-size: var(--bs-pagination-font-size); - color: var(--bs-pagination-color); - text-decoration: none; - background-color: var(--bs-pagination-bg); - border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .page-link { - transition: none; } } - .page-link:hover { - z-index: 2; - color: var(--bs-pagination-hover-color); - background-color: var(--bs-pagination-hover-bg); - border-color: var(--bs-pagination-hover-border-color); } - .page-link:focus { - z-index: 3; - color: var(--bs-pagination-focus-color); - background-color: var(--bs-pagination-focus-bg); - outline: 0; - box-shadow: var(--bs-pagination-focus-box-shadow); } - .page-link.active, .active > .page-link { - z-index: 3; - color: var(--bs-pagination-active-color); - background-color: var(--bs-pagination-active-bg); - background-image: var(--bs-gradient); - border-color: var(--bs-pagination-active-border-color); } - .page-link.disabled, .disabled > .page-link { - color: var(--bs-pagination-disabled-color); - pointer-events: none; - background-color: var(--bs-pagination-disabled-bg); - border-color: var(--bs-pagination-disabled-border-color); } - -.page-item:not(:first-child) .page-link { - margin-left: calc(var(--bs-border-width) * -1); } - -.page-item:first-child .page-link { - border-top-left-radius: var(--bs-pagination-border-radius); - border-bottom-left-radius: var(--bs-pagination-border-radius); } - -.page-item:last-child .page-link { - border-top-right-radius: var(--bs-pagination-border-radius); - border-bottom-right-radius: var(--bs-pagination-border-radius); } - -.pagination-lg { - --bs-pagination-padding-x: 1.5rem; - --bs-pagination-padding-y: 0.75rem; - --bs-pagination-font-size: 1.25rem; - --bs-pagination-border-radius: var(--bs-border-radius-lg); } - -.pagination-sm { - --bs-pagination-padding-x: 0.5rem; - --bs-pagination-padding-y: 0.25rem; - --bs-pagination-font-size: 0.875rem; - --bs-pagination-border-radius: var(--bs-border-radius-sm); } - -.badge { - --bs-badge-padding-x: 0.65em; - --bs-badge-padding-y: 0.35em; - --bs-badge-font-size: 0.75em; - --bs-badge-font-weight: 700; - --bs-badge-color: #fff; - --bs-badge-border-radius: var(--bs-border-radius); - display: inline-block; - padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); - font-size: var(--bs-badge-font-size); - font-weight: var(--bs-badge-font-weight); - line-height: 1; - color: var(--bs-badge-color); - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: var(--bs-badge-border-radius); - background-image: var(--bs-gradient); } - .badge:empty { - display: none; } - -.btn .badge, div.drawio button .badge, .td-blog .td-rss-button .badge { - position: relative; - top: -1px; } - -.alert { - --bs-alert-bg: transparent; - --bs-alert-padding-x: 1rem; - --bs-alert-padding-y: 1rem; - --bs-alert-margin-bottom: 1rem; - --bs-alert-color: inherit; - --bs-alert-border-color: transparent; - --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); - --bs-alert-border-radius: var(--bs-border-radius); - --bs-alert-link-color: inherit; - position: relative; - padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); - margin-bottom: var(--bs-alert-margin-bottom); - color: var(--bs-alert-color); - background-color: var(--bs-alert-bg); - border: var(--bs-alert-border); - border-radius: var(--bs-alert-border-radius); } - -.alert-heading { - color: inherit; } - -.alert-link { - font-weight: 700; - color: var(--bs-alert-link-color); } - -.alert-dismissible { - padding-right: 3rem; } - .alert-dismissible .btn-close { - position: absolute; - top: 0; - right: 0; - z-index: 2; - padding: 1.25rem 1rem; } - -.alert-primary, .pageinfo-primary { - --bs-alert-color: var(--bs-primary-text-emphasis); - --bs-alert-bg: var(--bs-primary-bg-subtle); - --bs-alert-border-color: var(--bs-primary-border-subtle); - --bs-alert-link-color: var(--bs-primary-text-emphasis); } - -.alert-secondary, .pageinfo-secondary { - --bs-alert-color: var(--bs-secondary-text-emphasis); - --bs-alert-bg: var(--bs-secondary-bg-subtle); - --bs-alert-border-color: var(--bs-secondary-border-subtle); - --bs-alert-link-color: var(--bs-secondary-text-emphasis); } - -.alert-success, .pageinfo-success { - --bs-alert-color: var(--bs-success-text-emphasis); - --bs-alert-bg: var(--bs-success-bg-subtle); - --bs-alert-border-color: var(--bs-success-border-subtle); - --bs-alert-link-color: var(--bs-success-text-emphasis); } - -.alert-info, .pageinfo-info { - --bs-alert-color: var(--bs-info-text-emphasis); - --bs-alert-bg: var(--bs-info-bg-subtle); - --bs-alert-border-color: var(--bs-info-border-subtle); - --bs-alert-link-color: var(--bs-info-text-emphasis); } - -.alert-warning, .pageinfo-warning { - --bs-alert-color: var(--bs-warning-text-emphasis); - --bs-alert-bg: var(--bs-warning-bg-subtle); - --bs-alert-border-color: var(--bs-warning-border-subtle); - --bs-alert-link-color: var(--bs-warning-text-emphasis); } - -.alert-danger, .pageinfo-danger { - --bs-alert-color: var(--bs-danger-text-emphasis); - --bs-alert-bg: var(--bs-danger-bg-subtle); - --bs-alert-border-color: var(--bs-danger-border-subtle); - --bs-alert-link-color: var(--bs-danger-text-emphasis); } - -.alert-light, .pageinfo-light { - --bs-alert-color: var(--bs-light-text-emphasis); - --bs-alert-bg: var(--bs-light-bg-subtle); - --bs-alert-border-color: var(--bs-light-border-subtle); - --bs-alert-link-color: var(--bs-light-text-emphasis); } - -.alert-dark, .pageinfo-dark { - --bs-alert-color: var(--bs-dark-text-emphasis); - --bs-alert-bg: var(--bs-dark-bg-subtle); - --bs-alert-border-color: var(--bs-dark-border-subtle); - --bs-alert-link-color: var(--bs-dark-text-emphasis); } - -@keyframes progress-bar-stripes { - 0% { - background-position-x: 1rem; } } - -.progress, -.progress-stacked { - --bs-progress-height: 1rem; - --bs-progress-font-size: 0.75rem; - --bs-progress-bg: var(--bs-secondary-bg); - --bs-progress-border-radius: var(--bs-border-radius); - --bs-progress-box-shadow: var(--bs-box-shadow-inset); - --bs-progress-bar-color: #fff; - --bs-progress-bar-bg: #30638e; - --bs-progress-bar-transition: width 0.6s ease; - display: flex; - height: var(--bs-progress-height); - overflow: hidden; - font-size: var(--bs-progress-font-size); - background-color: var(--bs-progress-bg); - border-radius: var(--bs-progress-border-radius); - box-shadow: var(--bs-progress-box-shadow); } - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - overflow: hidden; - color: var(--bs-progress-bar-color); - text-align: center; - white-space: nowrap; - background-color: var(--bs-progress-bar-bg); - transition: var(--bs-progress-bar-transition); } - @media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; } } -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: var(--bs-progress-height) var(--bs-progress-height); } - -.progress-stacked > .progress { - overflow: visible; } - -.progress-stacked > .progress > .progress-bar { - width: 100%; } - -.progress-bar-animated { - animation: 1s linear infinite progress-bar-stripes; } - @media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; } } -.list-group { - --bs-list-group-color: var(--bs-body-color); - --bs-list-group-bg: var(--bs-body-bg); - --bs-list-group-border-color: var(--bs-border-color); - --bs-list-group-border-width: var(--bs-border-width); - --bs-list-group-border-radius: var(--bs-border-radius); - --bs-list-group-item-padding-x: 1rem; - --bs-list-group-item-padding-y: 0.5rem; - --bs-list-group-action-color: var(--bs-secondary-color); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); - --bs-list-group-action-active-color: var(--bs-body-color); - --bs-list-group-action-active-bg: var(--bs-secondary-bg); - --bs-list-group-disabled-color: var(--bs-secondary-color); - --bs-list-group-disabled-bg: var(--bs-body-bg); - --bs-list-group-active-color: #fff; - --bs-list-group-active-bg: #30638e; - --bs-list-group-active-border-color: #30638e; - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - border-radius: var(--bs-list-group-border-radius); } - -.list-group-numbered { - list-style-type: none; - counter-reset: section; } - .list-group-numbered > .list-group-item::before { - content: counters(section, ".") ". "; - counter-increment: section; } - -.list-group-item-action { - width: 100%; - color: var(--bs-list-group-action-color); - text-align: inherit; } - .list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: var(--bs-list-group-action-hover-color); - text-decoration: none; - background-color: var(--bs-list-group-action-hover-bg); } - .list-group-item-action:active { - color: var(--bs-list-group-action-active-color); - background-color: var(--bs-list-group-action-active-bg); } - -.list-group-item { - position: relative; - display: block; - padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); - color: var(--bs-list-group-color); - text-decoration: none; - background-color: var(--bs-list-group-bg); - border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); } - .list-group-item:first-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit; } - .list-group-item:last-child { - border-bottom-right-radius: inherit; - border-bottom-left-radius: inherit; } - .list-group-item.disabled, .list-group-item:disabled { - color: var(--bs-list-group-disabled-color); - pointer-events: none; - background-color: var(--bs-list-group-disabled-bg); } - .list-group-item.active { - z-index: 2; - color: var(--bs-list-group-active-color); - background-color: var(--bs-list-group-active-bg); - border-color: var(--bs-list-group-active-border-color); } - .list-group-item + .list-group-item { - border-top-width: 0; } - .list-group-item + .list-group-item.active { - margin-top: calc(-1 * var(--bs-list-group-border-width)); - border-top-width: var(--bs-list-group-border-width); } - -.list-group-horizontal { - flex-direction: row; } - .list-group-horizontal > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; } - .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-sm > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-sm > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-sm > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; } - .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-md > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-md > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-md > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; } - .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-lg > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-lg > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-lg > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; } - .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-xl > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-xl > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-xl > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 1400px) { - .list-group-horizontal-xxl { - flex-direction: row; } - .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-xxl > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-xxl > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -.list-group-flush { - border-radius: 0; } - .list-group-flush > .list-group-item { - border-width: 0 0 var(--bs-list-group-border-width); } - .list-group-flush > .list-group-item:last-child { - border-bottom-width: 0; } - -.list-group-item-primary { - --bs-list-group-color: var(--bs-primary-text-emphasis); - --bs-list-group-bg: var(--bs-primary-bg-subtle); - --bs-list-group-border-color: var(--bs-primary-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); - --bs-list-group-active-color: var(--bs-primary-bg-subtle); - --bs-list-group-active-bg: var(--bs-primary-text-emphasis); - --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); } - -.list-group-item-secondary { - --bs-list-group-color: var(--bs-secondary-text-emphasis); - --bs-list-group-bg: var(--bs-secondary-bg-subtle); - --bs-list-group-border-color: var(--bs-secondary-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); - --bs-list-group-active-color: var(--bs-secondary-bg-subtle); - --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); - --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); } - -.list-group-item-success { - --bs-list-group-color: var(--bs-success-text-emphasis); - --bs-list-group-bg: var(--bs-success-bg-subtle); - --bs-list-group-border-color: var(--bs-success-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-success-border-subtle); - --bs-list-group-active-color: var(--bs-success-bg-subtle); - --bs-list-group-active-bg: var(--bs-success-text-emphasis); - --bs-list-group-active-border-color: var(--bs-success-text-emphasis); } - -.list-group-item-info { - --bs-list-group-color: var(--bs-info-text-emphasis); - --bs-list-group-bg: var(--bs-info-bg-subtle); - --bs-list-group-border-color: var(--bs-info-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-info-border-subtle); - --bs-list-group-active-color: var(--bs-info-bg-subtle); - --bs-list-group-active-bg: var(--bs-info-text-emphasis); - --bs-list-group-active-border-color: var(--bs-info-text-emphasis); } - -.list-group-item-warning { - --bs-list-group-color: var(--bs-warning-text-emphasis); - --bs-list-group-bg: var(--bs-warning-bg-subtle); - --bs-list-group-border-color: var(--bs-warning-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); - --bs-list-group-active-color: var(--bs-warning-bg-subtle); - --bs-list-group-active-bg: var(--bs-warning-text-emphasis); - --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); } - -.list-group-item-danger { - --bs-list-group-color: var(--bs-danger-text-emphasis); - --bs-list-group-bg: var(--bs-danger-bg-subtle); - --bs-list-group-border-color: var(--bs-danger-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); - --bs-list-group-active-color: var(--bs-danger-bg-subtle); - --bs-list-group-active-bg: var(--bs-danger-text-emphasis); - --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); } - -.list-group-item-light { - --bs-list-group-color: var(--bs-light-text-emphasis); - --bs-list-group-bg: var(--bs-light-bg-subtle); - --bs-list-group-border-color: var(--bs-light-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-light-border-subtle); - --bs-list-group-active-color: var(--bs-light-bg-subtle); - --bs-list-group-active-bg: var(--bs-light-text-emphasis); - --bs-list-group-active-border-color: var(--bs-light-text-emphasis); } - -.list-group-item-dark { - --bs-list-group-color: var(--bs-dark-text-emphasis); - --bs-list-group-bg: var(--bs-dark-bg-subtle); - --bs-list-group-border-color: var(--bs-dark-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); - --bs-list-group-active-color: var(--bs-dark-bg-subtle); - --bs-list-group-active-bg: var(--bs-dark-text-emphasis); - --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); } - -.btn-close { - --bs-btn-close-color: #000; - --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); - --bs-btn-close-opacity: 0.5; - --bs-btn-close-hover-opacity: 0.75; - --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); - --bs-btn-close-focus-opacity: 1; - --bs-btn-close-disabled-opacity: 0.25; - --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); - box-sizing: content-box; - width: 1em; - height: 1em; - padding: 0.25em 0.25em; - color: var(--bs-btn-close-color); - background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; - border: 0; - border-radius: 0.375rem; - opacity: var(--bs-btn-close-opacity); } - .btn-close:hover { - color: var(--bs-btn-close-color); - text-decoration: none; - opacity: var(--bs-btn-close-hover-opacity); } - .btn-close:focus { - outline: 0; - box-shadow: var(--bs-btn-close-focus-shadow); - opacity: var(--bs-btn-close-focus-opacity); } - .btn-close:disabled, .btn-close.disabled { - pointer-events: none; - user-select: none; - opacity: var(--bs-btn-close-disabled-opacity); } - -.btn-close-white { - filter: var(--bs-btn-close-white-filter); } - -[data-bs-theme="dark"] .btn-close { - filter: var(--bs-btn-close-white-filter); } - -.toast { - --bs-toast-zindex: 1090; - --bs-toast-padding-x: 0.75rem; - --bs-toast-padding-y: 0.5rem; - --bs-toast-spacing: 1.5rem; - --bs-toast-max-width: 350px; - --bs-toast-font-size: 0.875rem; - --bs-toast-color: ; - --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); - --bs-toast-border-width: var(--bs-border-width); - --bs-toast-border-color: var(--bs-border-color-translucent); - --bs-toast-border-radius: var(--bs-border-radius); - --bs-toast-box-shadow: var(--bs-box-shadow); - --bs-toast-header-color: var(--bs-secondary-color); - --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); - --bs-toast-header-border-color: var(--bs-border-color-translucent); - width: var(--bs-toast-max-width); - max-width: 100%; - font-size: var(--bs-toast-font-size); - color: var(--bs-toast-color); - pointer-events: auto; - background-color: var(--bs-toast-bg); - background-clip: padding-box; - border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); - box-shadow: var(--bs-toast-box-shadow); - border-radius: var(--bs-toast-border-radius); } - .toast.showing { - opacity: 0; } - .toast:not(.show) { - display: none; } - -.toast-container { - --bs-toast-zindex: 1090; - position: absolute; - z-index: var(--bs-toast-zindex); - width: max-content; - max-width: 100%; - pointer-events: none; } - .toast-container > :not(:last-child) { - margin-bottom: var(--bs-toast-spacing); } - -.toast-header { - display: flex; - align-items: center; - padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); - color: var(--bs-toast-header-color); - background-color: var(--bs-toast-header-bg); - background-clip: padding-box; - border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); - border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); - border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); } - .toast-header .btn-close { - margin-right: calc(-.5 * var(--bs-toast-padding-x)); - margin-left: var(--bs-toast-padding-x); } - -.toast-body { - padding: var(--bs-toast-padding-x); - word-wrap: break-word; } - -.modal { - --bs-modal-zindex: 1055; - --bs-modal-width: 500px; - --bs-modal-padding: 1rem; - --bs-modal-margin: 0.5rem; - --bs-modal-color: ; - --bs-modal-bg: var(--bs-body-bg); - --bs-modal-border-color: var(--bs-border-color-translucent); - --bs-modal-border-width: var(--bs-border-width); - --bs-modal-border-radius: var(--bs-border-radius-lg); - --bs-modal-box-shadow: var(--bs-box-shadow-sm); - --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width))); - --bs-modal-header-padding-x: 1rem; - --bs-modal-header-padding-y: 1rem; - --bs-modal-header-padding: 1rem 1rem; - --bs-modal-header-border-color: var(--bs-border-color); - --bs-modal-header-border-width: var(--bs-border-width); - --bs-modal-title-line-height: 1.5; - --bs-modal-footer-gap: 0.5rem; - --bs-modal-footer-bg: ; - --bs-modal-footer-border-color: var(--bs-border-color); - --bs-modal-footer-border-width: var(--bs-border-width); - position: fixed; - top: 0; - left: 0; - z-index: var(--bs-modal-zindex); - display: none; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - outline: 0; } - -.modal-dialog { - position: relative; - width: auto; - margin: var(--bs-modal-margin); - pointer-events: none; } - .modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); } - @media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; } } - .modal.show .modal-dialog { - transform: none; } - .modal.modal-static .modal-dialog { - transform: scale(1.02); } - -.modal-dialog-scrollable { - height: calc(100% - var(--bs-modal-margin) * 2); } - .modal-dialog-scrollable .modal-content { - max-height: 100%; - overflow: hidden; } - .modal-dialog-scrollable .modal-body { - overflow-y: auto; } - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - var(--bs-modal-margin) * 2); } - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - color: var(--bs-modal-color); - pointer-events: auto; - background-color: var(--bs-modal-bg); - background-clip: padding-box; - border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); - border-radius: var(--bs-modal-border-radius); - box-shadow: var(--bs-modal-box-shadow); - outline: 0; } - -.modal-backdrop { - --bs-backdrop-zindex: 1050; - --bs-backdrop-bg: #000; - --bs-backdrop-opacity: 0.5; - position: fixed; - top: 0; - left: 0; - z-index: var(--bs-backdrop-zindex); - width: 100vw; - height: 100vh; - background-color: var(--bs-backdrop-bg); } - .modal-backdrop.fade { - opacity: 0; } - .modal-backdrop.show { - opacity: var(--bs-backdrop-opacity); } - -.modal-header { - display: flex; - flex-shrink: 0; - align-items: center; - padding: var(--bs-modal-header-padding); - border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); - border-top-left-radius: var(--bs-modal-inner-border-radius); - border-top-right-radius: var(--bs-modal-inner-border-radius); } - .modal-header .btn-close { - padding: calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5); - margin: calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto; } - -.modal-title { - margin-bottom: 0; - line-height: var(--bs-modal-title-line-height); } - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: var(--bs-modal-padding); } - -.modal-footer { - display: flex; - flex-shrink: 0; - flex-wrap: wrap; - align-items: center; - justify-content: flex-end; - padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5); - background-color: var(--bs-modal-footer-bg); - border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); - border-bottom-right-radius: var(--bs-modal-inner-border-radius); - border-bottom-left-radius: var(--bs-modal-inner-border-radius); } - .modal-footer > * { - margin: calc(var(--bs-modal-footer-gap) * .5); } - -@media (min-width: 576px) { - .modal { - --bs-modal-margin: 1.75rem; - --bs-modal-box-shadow: var(--bs-box-shadow); } - .modal-dialog { - max-width: var(--bs-modal-width); - margin-right: auto; - margin-left: auto; } - .modal-sm { - --bs-modal-width: 300px; } } - -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - --bs-modal-width: 800px; } } - -@media (min-width: 1200px) { - .modal-xl { - --bs-modal-width: 1140px; } } - -.modal-fullscreen { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen .modal-header, - .modal-fullscreen .modal-footer { - border-radius: 0; } - .modal-fullscreen .modal-body { - overflow-y: auto; } - -@media (max-width: 575.98px) { - .modal-fullscreen-sm-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-sm-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-sm-down .modal-header, - .modal-fullscreen-sm-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-sm-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 767.98px) { - .modal-fullscreen-md-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-md-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-md-down .modal-header, - .modal-fullscreen-md-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-md-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 991.98px) { - .modal-fullscreen-lg-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-lg-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-lg-down .modal-header, - .modal-fullscreen-lg-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-lg-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 1199.98px) { - .modal-fullscreen-xl-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-xl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-xl-down .modal-header, - .modal-fullscreen-xl-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-xl-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 1399.98px) { - .modal-fullscreen-xxl-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-xxl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-xxl-down .modal-header, - .modal-fullscreen-xxl-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-xxl-down .modal-body { - overflow-y: auto; } } - -.tooltip { - --bs-tooltip-zindex: 1080; - --bs-tooltip-max-width: 200px; - --bs-tooltip-padding-x: 0.5rem; - --bs-tooltip-padding-y: 0.25rem; - --bs-tooltip-margin: ; - --bs-tooltip-font-size: 0.875rem; - --bs-tooltip-color: var(--bs-body-bg); - --bs-tooltip-bg: var(--bs-emphasis-color); - --bs-tooltip-border-radius: var(--bs-border-radius); - --bs-tooltip-opacity: 0.9; - --bs-tooltip-arrow-width: 0.8rem; - --bs-tooltip-arrow-height: 0.4rem; - z-index: var(--bs-tooltip-zindex); - display: block; - margin: var(--bs-tooltip-margin); - font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - white-space: normal; - word-spacing: normal; - line-break: auto; - font-size: var(--bs-tooltip-font-size); - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: var(--bs-tooltip-opacity); } - .tooltip .tooltip-arrow { - display: block; - width: var(--bs-tooltip-arrow-width); - height: var(--bs-tooltip-arrow-height); } - .tooltip .tooltip-arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow { - bottom: calc(-1 * var(--bs-tooltip-arrow-height)); } - .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before { - top: -1px; - border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0; - border-top-color: var(--bs-tooltip-bg); } - -/* rtl:begin:ignore */ -.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow { - left: calc(-1 * var(--bs-tooltip-arrow-height)); - width: var(--bs-tooltip-arrow-height); - height: var(--bs-tooltip-arrow-width); } - .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before { - right: -1px; - border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0; - border-right-color: var(--bs-tooltip-bg); } - -/* rtl:end:ignore */ -.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow { - top: calc(-1 * var(--bs-tooltip-arrow-height)); } - .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before { - bottom: -1px; - border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height); - border-bottom-color: var(--bs-tooltip-bg); } - -/* rtl:begin:ignore */ -.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow { - right: calc(-1 * var(--bs-tooltip-arrow-height)); - width: var(--bs-tooltip-arrow-height); - height: var(--bs-tooltip-arrow-width); } - .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before { - left: -1px; - border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height); - border-left-color: var(--bs-tooltip-bg); } - -/* rtl:end:ignore */ -.tooltip-inner { - max-width: var(--bs-tooltip-max-width); - padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); - color: var(--bs-tooltip-color); - text-align: center; - background-color: var(--bs-tooltip-bg); - border-radius: var(--bs-tooltip-border-radius); } - -.popover { - --bs-popover-zindex: 1070; - --bs-popover-max-width: 276px; - --bs-popover-font-size: 0.875rem; - --bs-popover-bg: var(--bs-body-bg); - --bs-popover-border-width: var(--bs-border-width); - --bs-popover-border-color: var(--bs-border-color-translucent); - --bs-popover-border-radius: var(--bs-border-radius-lg); - --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width)); - --bs-popover-box-shadow: var(--bs-box-shadow); - --bs-popover-header-padding-x: 1rem; - --bs-popover-header-padding-y: 0.5rem; - --bs-popover-header-font-size: 1rem; - --bs-popover-header-color: inherit; - --bs-popover-header-bg: var(--bs-secondary-bg); - --bs-popover-body-padding-x: 1rem; - --bs-popover-body-padding-y: 1rem; - --bs-popover-body-color: var(--bs-body-color); - --bs-popover-arrow-width: 1rem; - --bs-popover-arrow-height: 0.5rem; - --bs-popover-arrow-border: var(--bs-popover-border-color); - z-index: var(--bs-popover-zindex); - display: block; - max-width: var(--bs-popover-max-width); - font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - white-space: normal; - word-spacing: normal; - line-break: auto; - font-size: var(--bs-popover-font-size); - word-wrap: break-word; - background-color: var(--bs-popover-bg); - background-clip: padding-box; - border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); - border-radius: var(--bs-popover-border-radius); - box-shadow: var(--bs-popover-box-shadow); } - .popover .popover-arrow { - display: block; - width: var(--bs-popover-arrow-width); - height: var(--bs-popover-arrow-height); } - .popover .popover-arrow::before, .popover .popover-arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; - border-width: 0; } - -.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow { - bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); } - .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after { - border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0; } - .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before { - bottom: 0; - border-top-color: var(--bs-popover-arrow-border); } - .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after { - bottom: var(--bs-popover-border-width); - border-top-color: var(--bs-popover-bg); } - -/* rtl:begin:ignore */ -.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow { - left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); - width: var(--bs-popover-arrow-height); - height: var(--bs-popover-arrow-width); } - .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after { - border-width: calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0; } - .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before { - left: 0; - border-right-color: var(--bs-popover-arrow-border); } - .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after { - left: var(--bs-popover-border-width); - border-right-color: var(--bs-popover-bg); } - -/* rtl:end:ignore */ -.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow { - top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); } - .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after { - border-width: 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height); } - .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before { - top: 0; - border-bottom-color: var(--bs-popover-arrow-border); } - .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after { - top: var(--bs-popover-border-width); - border-bottom-color: var(--bs-popover-bg); } - -.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: var(--bs-popover-arrow-width); - margin-left: calc(-.5 * var(--bs-popover-arrow-width)); - content: ""; - border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); } - -/* rtl:begin:ignore */ -.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow { - right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); - width: var(--bs-popover-arrow-height); - height: var(--bs-popover-arrow-width); } - .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after { - border-width: calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height); } - .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before { - right: 0; - border-left-color: var(--bs-popover-arrow-border); } - .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after { - right: var(--bs-popover-border-width); - border-left-color: var(--bs-popover-bg); } - -/* rtl:end:ignore */ -.popover-header { - padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); - margin-bottom: 0; - font-size: var(--bs-popover-header-font-size); - color: var(--bs-popover-header-color); - background-color: var(--bs-popover-header-bg); - border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); - border-top-left-radius: var(--bs-popover-inner-border-radius); - border-top-right-radius: var(--bs-popover-inner-border-radius); } - .popover-header:empty { - display: none; } - -.popover-body { - padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); - color: var(--bs-popover-body-color); } - -.carousel { - position: relative; } - -.carousel.pointer-event { - touch-action: pan-y; } - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; } - .carousel-inner::after { - display: block; - clear: both; - content: ""; } - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; } } -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; } - -.carousel-item-next:not(.carousel-item-start), -.active.carousel-item-end { - transform: translateX(100%); } - -.carousel-item-prev:not(.carousel-item-end), -.active.carousel-item-start { - transform: translateX(-100%); } - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; } - -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-start, -.carousel-fade .carousel-item-prev.carousel-item-end { - z-index: 1; - opacity: 1; } - -.carousel-fade .active.carousel-item-start, -.carousel-fade .active.carousel-item-end { - z-index: 0; - opacity: 0; - transition: opacity 0s 0.6s; } - @media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-start, - .carousel-fade .active.carousel-item-end { - transition: none; } } -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - padding: 0; - color: #fff; - text-align: center; - background: none; - border: 0; - opacity: 0.5; - transition: opacity 0.15s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; } } - .carousel-control-prev:hover, .carousel-control-prev:focus, - .carousel-control-next:hover, - .carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; } - -.carousel-control-prev { - left: 0; - background-image: linear-gradient(90deg, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.001)); } - -.carousel-control-next { - right: 0; - background-image: linear-gradient(270deg, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.001)); } - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 2rem; - height: 2rem; - background-repeat: no-repeat; - background-position: 50%; - background-size: 100% 100%; } - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")*/; } - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")*/; } - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 2; - display: flex; - justify-content: center; - padding: 0; - margin-right: 15%; - margin-bottom: 1rem; - margin-left: 15%; } - .carousel-indicators [data-bs-target] { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - padding: 0; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border: 0; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: 0.5; - transition: opacity 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-indicators [data-bs-target] { - transition: none; } } - .carousel-indicators .active { - opacity: 1; } - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 1.25rem; - left: 15%; - padding-top: 1.25rem; - padding-bottom: 1.25rem; - color: #fff; - text-align: center; } - -.carousel-dark .carousel-control-prev-icon, -.carousel-dark .carousel-control-next-icon { - filter: invert(1) grayscale(100); } - -.carousel-dark .carousel-indicators [data-bs-target] { - background-color: #000; } - -.carousel-dark .carousel-caption { - color: #000; } - -[data-bs-theme="dark"] .carousel .carousel-control-prev-icon, -[data-bs-theme="dark"] .carousel .carousel-control-next-icon, [data-bs-theme="dark"].carousel .carousel-control-prev-icon, -[data-bs-theme="dark"].carousel .carousel-control-next-icon { - filter: invert(1) grayscale(100); } - -[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target], [data-bs-theme="dark"].carousel .carousel-indicators [data-bs-target] { - background-color: #000; } - -[data-bs-theme="dark"] .carousel .carousel-caption, [data-bs-theme="dark"].carousel .carousel-caption { - color: #000; } - -.spinner-grow, -.spinner-border { - display: inline-block; - width: var(--bs-spinner-width); - height: var(--bs-spinner-height); - vertical-align: var(--bs-spinner-vertical-align); - border-radius: 50%; - animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); } - -@keyframes spinner-border { - to { - transform: rotate(360deg) /* rtl:ignore */; } } - -.spinner-border { - --bs-spinner-width: 2rem; - --bs-spinner-height: 2rem; - --bs-spinner-vertical-align: -0.125em; - --bs-spinner-border-width: 0.25em; - --bs-spinner-animation-speed: 0.75s; - --bs-spinner-animation-name: spinner-border; - border: var(--bs-spinner-border-width) solid currentcolor; - border-right-color: transparent; } - -.spinner-border-sm { - --bs-spinner-width: 1rem; - --bs-spinner-height: 1rem; - --bs-spinner-border-width: 0.2em; } - -@keyframes spinner-grow { - 0% { - transform: scale(0); } - 50% { - opacity: 1; - transform: none; } } - -.spinner-grow { - --bs-spinner-width: 2rem; - --bs-spinner-height: 2rem; - --bs-spinner-vertical-align: -0.125em; - --bs-spinner-animation-speed: 0.75s; - --bs-spinner-animation-name: spinner-grow; - background-color: currentcolor; - opacity: 0; } - -.spinner-grow-sm { - --bs-spinner-width: 1rem; - --bs-spinner-height: 1rem; } - -@media (prefers-reduced-motion: reduce) { - .spinner-border, - .spinner-grow { - --bs-spinner-animation-speed: 1.5s; } } - -.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { - --bs-offcanvas-zindex: 1045; - --bs-offcanvas-width: 400px; - --bs-offcanvas-height: 30vh; - --bs-offcanvas-padding-x: 1rem; - --bs-offcanvas-padding-y: 1rem; - --bs-offcanvas-color: var(--bs-body-color); - --bs-offcanvas-bg: var(--bs-body-bg); - --bs-offcanvas-border-width: var(--bs-border-width); - --bs-offcanvas-border-color: var(--bs-border-color-translucent); - --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm); - --bs-offcanvas-transition: transform 0.3s ease-in-out; - --bs-offcanvas-title-line-height: 1.5; } - -@media (max-width: 575.98px) { - .offcanvas-sm { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-sm { - transition: none; } } -@media (max-width: 575.98px) { - .offcanvas-sm.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-sm.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-sm.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-sm.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { - transform: none; } - .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { - visibility: visible; } } - -@media (min-width: 576px) { - .offcanvas-sm { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-sm .offcanvas-header { - display: none; } - .offcanvas-sm .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 767.98px) { - .offcanvas-md { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-md { - transition: none; } } -@media (max-width: 767.98px) { - .offcanvas-md.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-md.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-md.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-md.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { - transform: none; } - .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { - visibility: visible; } } - -@media (min-width: 768px) { - .offcanvas-md { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-md .offcanvas-header { - display: none; } - .offcanvas-md .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 991.98px) { - .offcanvas-lg { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-lg { - transition: none; } } -@media (max-width: 991.98px) { - .offcanvas-lg.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-lg.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-lg.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-lg.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { - transform: none; } - .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { - visibility: visible; } } - -@media (min-width: 992px) { - .offcanvas-lg { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-lg .offcanvas-header { - display: none; } - .offcanvas-lg .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 1199.98px) { - .offcanvas-xl { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-xl { - transition: none; } } -@media (max-width: 1199.98px) { - .offcanvas-xl.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-xl.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-xl.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-xl.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { - transform: none; } - .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { - visibility: visible; } } - -@media (min-width: 1200px) { - .offcanvas-xl { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-xl .offcanvas-header { - display: none; } - .offcanvas-xl .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 1399.98px) { - .offcanvas-xxl { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-xxl { - transition: none; } } -@media (max-width: 1399.98px) { - .offcanvas-xxl.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-xxl.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-xxl.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-xxl.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { - transform: none; } - .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { - visibility: visible; } } - -@media (min-width: 1400px) { - .offcanvas-xxl { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-xxl .offcanvas-header { - display: none; } - .offcanvas-xxl .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -.offcanvas { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } - @media (prefers-reduced-motion: reduce) { - .offcanvas { - transition: none; } } - .offcanvas.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas.showing, .offcanvas.show:not(.hiding) { - transform: none; } - .offcanvas.showing, .offcanvas.hiding, .offcanvas.show { - visibility: visible; } - -.offcanvas-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; } - .offcanvas-backdrop.fade { - opacity: 0; } - .offcanvas-backdrop.show { - opacity: 0.5; } - -.offcanvas-header { - display: flex; - align-items: center; - padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); } - .offcanvas-header .btn-close { - padding: calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5); - margin: calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto; } - -.offcanvas-title { - margin-bottom: 0; - line-height: var(--bs-offcanvas-title-line-height); } - -.offcanvas-body { - flex-grow: 1; - padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); - overflow-y: auto; } - -.placeholder { - display: inline-block; - min-height: 1em; - vertical-align: middle; - cursor: wait; - background-color: currentcolor; - opacity: 0.5; } - .placeholder.btn::before, div.drawio button.placeholder::before, .td-blog .placeholder.td-rss-button::before { - display: inline-block; - content: ""; } - -.placeholder-xs { - min-height: .6em; } - -.placeholder-sm { - min-height: .8em; } - -.placeholder-lg { - min-height: 1.2em; } - -.placeholder-glow .placeholder { - animation: placeholder-glow 2s ease-in-out infinite; } - -@keyframes placeholder-glow { - 50% { - opacity: 0.2; } } - -.placeholder-wave { - mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); - mask-size: 200% 100%; - animation: placeholder-wave 2s linear infinite; } - -@keyframes placeholder-wave { - 100% { - mask-position: -200% 0%; } } - -.clearfix::after { - display: block; - clear: both; - content: ""; } - -.text-bg-primary { - color: #fff !important; - background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-secondary { - color: #000 !important; - background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-success { - color: #000 !important; - background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-info { - color: #000 !important; - background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-warning { - color: #000 !important; - background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-danger { - color: #000 !important; - background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-light { - color: #000 !important; - background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-dark { - color: #fff !important; - background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important; } - -.link-primary { - color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-primary:hover, .link-primary:focus { - color: RGBA(34, 69, 99, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(34, 69, 99, var(--bs-link-underline-opacity, 1)) !important; } - -.link-secondary { - color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-secondary:hover, .link-secondary:focus { - color: RGBA(255, 193, 110, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(255, 193, 110, var(--bs-link-underline-opacity, 1)) !important; } - -.link-success { - color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-success:hover, .link-success:focus { - color: RGBA(115, 156, 255, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(115, 156, 255, var(--bs-link-underline-opacity, 1)) !important; } - -.link-info { - color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-info:hover, .link-info:focus { - color: RGBA(211, 233, 232, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(211, 233, 232, var(--bs-link-underline-opacity, 1)) !important; } - -.link-warning { - color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-warning:hover, .link-warning:focus { - color: RGBA(242, 151, 140, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(242, 151, 140, var(--bs-link-underline-opacity, 1)) !important; } - -.link-danger { - color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-danger:hover, .link-danger:focus { - color: RGBA(242, 151, 140, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(242, 151, 140, var(--bs-link-underline-opacity, 1)) !important; } - -.link-light { - color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-light:hover, .link-light:focus { - color: RGBA(224, 247, 243, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(224, 247, 243, var(--bs-link-underline-opacity, 1)) !important; } - -.link-dark { - color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-dark:hover, .link-dark:focus { - color: RGBA(45, 44, 53, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(45, 44, 53, var(--bs-link-underline-opacity, 1)) !important; } - -.link-body-emphasis { - color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-body-emphasis:hover, .link-body-emphasis:focus { - color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important; - text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; } - -.focus-ring:focus { - outline: 0; - box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color); } - -.icon-link { - display: inline-flex; - gap: 0.375rem; - align-items: center; - text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); - text-underline-offset: 0.25em; - backface-visibility: hidden; } - .icon-link > .bi { - flex-shrink: 0; - width: 1em; - height: 1em; - fill: currentcolor; - transition: 0.2s ease-in-out transform; } - @media (prefers-reduced-motion: reduce) { - .icon-link > .bi { - transition: none; } } -.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { - transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); } - -.ratio { - position: relative; - width: 100%; } - .ratio::before { - display: block; - padding-top: var(--bs-aspect-ratio); - content: ""; } - .ratio > * { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - -.ratio-1x1 { - --bs-aspect-ratio: 100%; } - -.ratio-4x3 { - --bs-aspect-ratio: calc(3 / 4 * 100%); } - -.ratio-16x9 { - --bs-aspect-ratio: calc(9 / 16 * 100%); } - -.ratio-21x9 { - --bs-aspect-ratio: calc(9 / 21 * 100%); } - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - -.sticky-top { - position: sticky; - top: 0; - z-index: 1020; } - -.sticky-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } - -@media (min-width: 576px) { - .sticky-sm-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-sm-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 768px) { - .sticky-md-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-md-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 992px) { - .sticky-lg-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-lg-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 1200px) { - .sticky-xl-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-xl-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 1400px) { - .sticky-xxl-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-xxl-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -.hstack { - display: flex; - flex-direction: row; - align-items: center; - align-self: stretch; } - -.vstack { - display: flex; - flex: 1 1 auto; - flex-direction: column; - align-self: stretch; } - -.visually-hidden, -.visually-hidden-focusable:not(:focus):not(:focus-within) { - width: 1px !important; - height: 1px !important; - padding: 0 !important; - margin: -1px !important; - overflow: hidden !important; - clip: rect(0, 0, 0, 0) !important; - white-space: nowrap !important; - border: 0 !important; } - .visually-hidden:not(caption), - .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { - position: absolute !important; } - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - content: ""; } - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.vr { - display: inline-block; - align-self: stretch; - width: var(--bs-border-width); - min-height: 1em; - background-color: currentcolor; - opacity: 0.25; } - -.align-baseline { - vertical-align: baseline !important; } - -.align-top { - vertical-align: top !important; } - -.align-middle { - vertical-align: middle !important; } - -.align-bottom { - vertical-align: bottom !important; } - -.align-text-bottom { - vertical-align: text-bottom !important; } - -.align-text-top { - vertical-align: text-top !important; } - -.float-start { - float: left !important; } - -.float-end { - float: right !important; } - -.float-none { - float: none !important; } - -.object-fit-contain { - object-fit: contain !important; } - -.object-fit-cover { - object-fit: cover !important; } - -.object-fit-fill { - object-fit: fill !important; } - -.object-fit-scale { - object-fit: scale-down !important; } - -.object-fit-none { - object-fit: none !important; } - -.opacity-0 { - opacity: 0 !important; } - -.opacity-25 { - opacity: 0.25 !important; } - -.opacity-50 { - opacity: 0.5 !important; } - -.opacity-75 { - opacity: 0.75 !important; } - -.opacity-100 { - opacity: 1 !important; } - -.overflow-auto { - overflow: auto !important; } - -.overflow-hidden { - overflow: hidden !important; } - -.overflow-visible { - overflow: visible !important; } - -.overflow-scroll { - overflow: scroll !important; } - -.overflow-x-auto { - overflow-x: auto !important; } - -.overflow-x-hidden { - overflow-x: hidden !important; } - -.overflow-x-visible { - overflow-x: visible !important; } - -.overflow-x-scroll { - overflow-x: scroll !important; } - -.overflow-y-auto { - overflow-y: auto !important; } - -.overflow-y-hidden { - overflow-y: hidden !important; } - -.overflow-y-visible { - overflow-y: visible !important; } - -.overflow-y-scroll { - overflow-y: scroll !important; } - -.d-inline { - display: inline !important; } - -.d-inline-block { - display: inline-block !important; } - -.d-block { - display: block !important; } - -.d-grid { - display: grid !important; } - -.d-inline-grid { - display: inline-grid !important; } - -.d-table { - display: table !important; } - -.d-table-row { - display: table-row !important; } - -.d-table-cell { - display: table-cell !important; } - -.d-flex { - display: flex !important; } - -.d-inline-flex { - display: inline-flex !important; } - -.d-none { - display: none !important; } - -.shadow { - box-shadow: var(--bs-box-shadow) !important; } - -.shadow-sm { - box-shadow: var(--bs-box-shadow-sm) !important; } - -.shadow-lg { - box-shadow: var(--bs-box-shadow-lg) !important; } - -.shadow-none { - box-shadow: none !important; } - -.focus-ring-primary { - --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-secondary { - --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-success { - --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-info { - --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-warning { - --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-danger { - --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-light { - --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-dark { - --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); } - -.position-static { - position: static !important; } - -.position-relative { - position: relative !important; } - -.position-absolute { - position: absolute !important; } - -.position-fixed { - position: fixed !important; } - -.position-sticky { - position: sticky !important; } - -.top-0 { - top: 0 !important; } - -.top-50 { - top: 50% !important; } - -.top-100 { - top: 100% !important; } - -.bottom-0 { - bottom: 0 !important; } - -.bottom-50 { - bottom: 50% !important; } - -.bottom-100 { - bottom: 100% !important; } - -.start-0 { - left: 0 !important; } - -.start-50 { - left: 50% !important; } - -.start-100 { - left: 100% !important; } - -.end-0 { - right: 0 !important; } - -.end-50 { - right: 50% !important; } - -.end-100 { - right: 100% !important; } - -.translate-middle { - transform: translate(-50%, -50%) !important; } - -.translate-middle-x { - transform: translateX(-50%) !important; } - -.translate-middle-y { - transform: translateY(-50%) !important; } - -.border { - border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-0 { - border: 0 !important; } - -.border-top, .td-page-meta__lastmod { - border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-top-0 { - border-top: 0 !important; } - -.border-end { - border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-end-0 { - border-right: 0 !important; } - -.border-bottom { - border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-bottom-0 { - border-bottom: 0 !important; } - -.border-start { - border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-start-0 { - border-left: 0 !important; } - -.border-primary { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; } - -.border-secondary { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; } - -.border-success { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; } - -.border-info { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; } - -.border-warning { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; } - -.border-danger { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; } - -.border-light { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; } - -.border-dark { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; } - -.border-black { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; } - -.border-white { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; } - -.border-primary-subtle { - border-color: var(--bs-primary-border-subtle) !important; } - -.border-secondary-subtle { - border-color: var(--bs-secondary-border-subtle) !important; } - -.border-success-subtle { - border-color: var(--bs-success-border-subtle) !important; } - -.border-info-subtle { - border-color: var(--bs-info-border-subtle) !important; } - -.border-warning-subtle { - border-color: var(--bs-warning-border-subtle) !important; } - -.border-danger-subtle { - border-color: var(--bs-danger-border-subtle) !important; } - -.border-light-subtle { - border-color: var(--bs-light-border-subtle) !important; } - -.border-dark-subtle { - border-color: var(--bs-dark-border-subtle) !important; } - -.border-1 { - border-width: 1px !important; } - -.border-2 { - border-width: 2px !important; } - -.border-3 { - border-width: 3px !important; } - -.border-4 { - border-width: 4px !important; } - -.border-5 { - border-width: 5px !important; } - -.border-opacity-10 { - --bs-border-opacity: 0.1; } - -.border-opacity-25 { - --bs-border-opacity: 0.25; } - -.border-opacity-50 { - --bs-border-opacity: 0.5; } - -.border-opacity-75 { - --bs-border-opacity: 0.75; } - -.border-opacity-100 { - --bs-border-opacity: 1; } - -.w-25 { - width: 25% !important; } - -.w-50 { - width: 50% !important; } - -.w-75 { - width: 75% !important; } - -.w-100 { - width: 100% !important; } - -.w-auto { - width: auto !important; } - -.mw-100 { - max-width: 100% !important; } - -.vw-100 { - width: 100vw !important; } - -.min-vw-100 { - min-width: 100vw !important; } - -.h-25 { - height: 25% !important; } - -.h-50 { - height: 50% !important; } - -.h-75 { - height: 75% !important; } - -.h-100 { - height: 100% !important; } - -.h-auto { - height: auto !important; } - -.mh-100 { - max-height: 100% !important; } - -.vh-100 { - height: 100vh !important; } - -.min-vh-100 { - min-height: 100vh !important; } - -.flex-fill { - flex: 1 1 auto !important; } - -.flex-row { - flex-direction: row !important; } - -.flex-column { - flex-direction: column !important; } - -.flex-row-reverse { - flex-direction: row-reverse !important; } - -.flex-column-reverse { - flex-direction: column-reverse !important; } - -.flex-grow-0 { - flex-grow: 0 !important; } - -.flex-grow-1 { - flex-grow: 1 !important; } - -.flex-shrink-0 { - flex-shrink: 0 !important; } - -.flex-shrink-1 { - flex-shrink: 1 !important; } - -.flex-wrap { - flex-wrap: wrap !important; } - -.flex-nowrap { - flex-wrap: nowrap !important; } - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; } - -.justify-content-start { - justify-content: flex-start !important; } - -.justify-content-end { - justify-content: flex-end !important; } - -.justify-content-center { - justify-content: center !important; } - -.justify-content-between { - justify-content: space-between !important; } - -.justify-content-around { - justify-content: space-around !important; } - -.justify-content-evenly { - justify-content: space-evenly !important; } - -.align-items-start { - align-items: flex-start !important; } - -.align-items-end { - align-items: flex-end !important; } - -.align-items-center { - align-items: center !important; } - -.align-items-baseline { - align-items: baseline !important; } - -.align-items-stretch { - align-items: stretch !important; } - -.align-content-start { - align-content: flex-start !important; } - -.align-content-end { - align-content: flex-end !important; } - -.align-content-center { - align-content: center !important; } - -.align-content-between { - align-content: space-between !important; } - -.align-content-around { - align-content: space-around !important; } - -.align-content-stretch { - align-content: stretch !important; } - -.align-self-auto { - align-self: auto !important; } - -.align-self-start { - align-self: flex-start !important; } - -.align-self-end { - align-self: flex-end !important; } - -.align-self-center { - align-self: center !important; } - -.align-self-baseline { - align-self: baseline !important; } - -.align-self-stretch { - align-self: stretch !important; } - -.order-first { - order: -1 !important; } - -.order-0 { - order: 0 !important; } - -.order-1 { - order: 1 !important; } - -.order-2 { - order: 2 !important; } - -.order-3 { - order: 3 !important; } - -.order-4 { - order: 4 !important; } - -.order-5 { - order: 5 !important; } - -.order-last { - order: 6 !important; } - -.m-0 { - margin: 0 !important; } - -.m-1 { - margin: 0.25rem !important; } - -.m-2 { - margin: 0.5rem !important; } - -.m-3 { - margin: 1rem !important; } - -.m-4 { - margin: 1.5rem !important; } - -.m-5 { - margin: 3rem !important; } - -.m-auto { - margin: auto !important; } - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; } - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - -.mt-0 { - margin-top: 0 !important; } - -.mt-1 { - margin-top: 0.25rem !important; } - -.mt-2 { - margin-top: 0.5rem !important; } - -.mt-3 { - margin-top: 1rem !important; } - -.mt-4 { - margin-top: 1.5rem !important; } - -.mt-5 { - margin-top: 3rem !important; } - -.mt-auto { - margin-top: auto !important; } - -.me-0 { - margin-right: 0 !important; } - -.me-1 { - margin-right: 0.25rem !important; } - -.me-2 { - margin-right: 0.5rem !important; } - -.me-3 { - margin-right: 1rem !important; } - -.me-4 { - margin-right: 1.5rem !important; } - -.me-5 { - margin-right: 3rem !important; } - -.me-auto { - margin-right: auto !important; } - -.mb-0 { - margin-bottom: 0 !important; } - -.mb-1 { - margin-bottom: 0.25rem !important; } - -.mb-2 { - margin-bottom: 0.5rem !important; } - -.mb-3 { - margin-bottom: 1rem !important; } - -.mb-4 { - margin-bottom: 1.5rem !important; } - -.mb-5 { - margin-bottom: 3rem !important; } - -.mb-auto { - margin-bottom: auto !important; } - -.ms-0 { - margin-left: 0 !important; } - -.ms-1 { - margin-left: 0.25rem !important; } - -.ms-2 { - margin-left: 0.5rem !important; } - -.ms-3 { - margin-left: 1rem !important; } - -.ms-4 { - margin-left: 1.5rem !important; } - -.ms-5 { - margin-left: 3rem !important; } - -.ms-auto { - margin-left: auto !important; } - -.p-0 { - padding: 0 !important; } - -.p-1 { - padding: 0.25rem !important; } - -.p-2 { - padding: 0.5rem !important; } - -.p-3 { - padding: 1rem !important; } - -.p-4 { - padding: 1.5rem !important; } - -.p-5 { - padding: 3rem !important; } - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - -.pt-0 { - padding-top: 0 !important; } - -.pt-1 { - padding-top: 0.25rem !important; } - -.pt-2 { - padding-top: 0.5rem !important; } - -.pt-3 { - padding-top: 1rem !important; } - -.pt-4 { - padding-top: 1.5rem !important; } - -.pt-5 { - padding-top: 3rem !important; } - -.pe-0 { - padding-right: 0 !important; } - -.pe-1 { - padding-right: 0.25rem !important; } - -.pe-2 { - padding-right: 0.5rem !important; } - -.pe-3 { - padding-right: 1rem !important; } - -.pe-4 { - padding-right: 1.5rem !important; } - -.pe-5 { - padding-right: 3rem !important; } - -.pb-0 { - padding-bottom: 0 !important; } - -.pb-1 { - padding-bottom: 0.25rem !important; } - -.pb-2 { - padding-bottom: 0.5rem !important; } - -.pb-3 { - padding-bottom: 1rem !important; } - -.pb-4 { - padding-bottom: 1.5rem !important; } - -.pb-5 { - padding-bottom: 3rem !important; } - -.ps-0 { - padding-left: 0 !important; } - -.ps-1 { - padding-left: 0.25rem !important; } - -.ps-2 { - padding-left: 0.5rem !important; } - -.ps-3 { - padding-left: 1rem !important; } - -.ps-4 { - padding-left: 1.5rem !important; } - -.ps-5 { - padding-left: 3rem !important; } - -.gap-0 { - gap: 0 !important; } - -.gap-1 { - gap: 0.25rem !important; } - -.gap-2 { - gap: 0.5rem !important; } - -.gap-3 { - gap: 1rem !important; } - -.gap-4 { - gap: 1.5rem !important; } - -.gap-5 { - gap: 3rem !important; } - -.row-gap-0 { - row-gap: 0 !important; } - -.row-gap-1 { - row-gap: 0.25rem !important; } - -.row-gap-2 { - row-gap: 0.5rem !important; } - -.row-gap-3 { - row-gap: 1rem !important; } - -.row-gap-4 { - row-gap: 1.5rem !important; } - -.row-gap-5 { - row-gap: 3rem !important; } - -.column-gap-0 { - column-gap: 0 !important; } - -.column-gap-1 { - column-gap: 0.25rem !important; } - -.column-gap-2 { - column-gap: 0.5rem !important; } - -.column-gap-3 { - column-gap: 1rem !important; } - -.column-gap-4 { - column-gap: 1.5rem !important; } - -.column-gap-5 { - column-gap: 3rem !important; } - -.font-monospace { - font-family: var(--bs-font-monospace) !important; } - -.fs-1 { - font-size: calc(1.375rem + 1.5vw) !important; } - -.fs-2 { - font-size: calc(1.325rem + 0.9vw) !important; } - -.fs-3 { - font-size: calc(1.275rem + 0.3vw) !important; } - -.fs-4 { - font-size: calc(1.26rem + 0.12vw) !important; } - -.fs-5 { - font-size: 1.15rem !important; } - -.fs-6 { - font-size: 1rem !important; } - -.fst-italic { - font-style: italic !important; } - -.fst-normal { - font-style: normal !important; } - -.fw-lighter { - font-weight: lighter !important; } - -.fw-light { - font-weight: 300 !important; } - -.fw-normal { - font-weight: 400 !important; } - -.fw-medium { - font-weight: 500 !important; } - -.fw-semibold { - font-weight: 600 !important; } - -.fw-bold { - font-weight: 700 !important; } - -.fw-bolder { - font-weight: bolder !important; } - -.lh-1 { - line-height: 1 !important; } - -.lh-sm { - line-height: 1.25 !important; } - -.lh-base { - line-height: 1.5 !important; } - -.lh-lg { - line-height: 2 !important; } - -.text-start { - text-align: left !important; } - -.text-end { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -.text-decoration-none { - text-decoration: none !important; } - -.text-decoration-underline { - text-decoration: underline !important; } - -.text-decoration-line-through { - text-decoration: line-through !important; } - -.text-lowercase { - text-transform: lowercase !important; } - -.text-uppercase { - text-transform: uppercase !important; } - -.text-capitalize { - text-transform: capitalize !important; } - -.text-wrap { - white-space: normal !important; } - -.text-nowrap { - white-space: nowrap !important; } - -/* rtl:begin:remove */ -.text-break { - word-wrap: break-word !important; - word-break: break-word !important; } - -/* rtl:end:remove */ -.text-primary { - --bs-text-opacity: 1; - color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; } - -.text-secondary { - --bs-text-opacity: 1; - color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; } - -.text-success { - --bs-text-opacity: 1; - color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; } - -.text-info { - --bs-text-opacity: 1; - color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; } - -.text-warning { - --bs-text-opacity: 1; - color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; } - -.text-danger { - --bs-text-opacity: 1; - color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; } - -.text-light { - --bs-text-opacity: 1; - color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; } - -.text-dark { - --bs-text-opacity: 1; - color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; } - -.text-black { - --bs-text-opacity: 1; - color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; } - -.text-white { - --bs-text-opacity: 1; - color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; } - -.text-body { - --bs-text-opacity: 1; - color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; } - -.text-muted { - --bs-text-opacity: 1; - color: var(--bs-secondary-color) !important; } - -.text-black-50 { - --bs-text-opacity: 1; - color: rgba(0, 0, 0, 0.5) !important; } - -.text-white-50 { - --bs-text-opacity: 1; - color: rgba(255, 255, 255, 0.5) !important; } - -.text-body-secondary, .td-page-meta__lastmod { - --bs-text-opacity: 1; - color: var(--bs-secondary-color) !important; } - -.text-body-tertiary { - --bs-text-opacity: 1; - color: var(--bs-tertiary-color) !important; } - -.text-body-emphasis { - --bs-text-opacity: 1; - color: var(--bs-emphasis-color) !important; } - -.text-reset { - --bs-text-opacity: 1; - color: inherit !important; } - -.text-opacity-25 { - --bs-text-opacity: 0.25; } - -.text-opacity-50 { - --bs-text-opacity: 0.5; } - -.text-opacity-75 { - --bs-text-opacity: 0.75; } - -.text-opacity-100 { - --bs-text-opacity: 1; } - -.text-primary-emphasis { - color: var(--bs-primary-text-emphasis) !important; } - -.text-secondary-emphasis { - color: var(--bs-secondary-text-emphasis) !important; } - -.text-success-emphasis { - color: var(--bs-success-text-emphasis) !important; } - -.text-info-emphasis { - color: var(--bs-info-text-emphasis) !important; } - -.text-warning-emphasis { - color: var(--bs-warning-text-emphasis) !important; } - -.text-danger-emphasis { - color: var(--bs-danger-text-emphasis) !important; } - -.text-light-emphasis { - color: var(--bs-light-text-emphasis) !important; } - -.text-dark-emphasis { - color: var(--bs-dark-text-emphasis) !important; } - -.link-opacity-10 { - --bs-link-opacity: 0.1; } - -.link-opacity-10-hover:hover { - --bs-link-opacity: 0.1; } - -.link-opacity-25 { - --bs-link-opacity: 0.25; } - -.link-opacity-25-hover:hover { - --bs-link-opacity: 0.25; } - -.link-opacity-50 { - --bs-link-opacity: 0.5; } - -.link-opacity-50-hover:hover { - --bs-link-opacity: 0.5; } - -.link-opacity-75 { - --bs-link-opacity: 0.75; } - -.link-opacity-75-hover:hover { - --bs-link-opacity: 0.75; } - -.link-opacity-100 { - --bs-link-opacity: 1; } - -.link-opacity-100-hover:hover { - --bs-link-opacity: 1; } - -.link-offset-1 { - text-underline-offset: 0.125em !important; } - -.link-offset-1-hover:hover { - text-underline-offset: 0.125em !important; } - -.link-offset-2 { - text-underline-offset: 0.25em !important; } - -.link-offset-2-hover:hover { - text-underline-offset: 0.25em !important; } - -.link-offset-3 { - text-underline-offset: 0.375em !important; } - -.link-offset-3-hover:hover { - text-underline-offset: 0.375em !important; } - -.link-underline-primary { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-secondary { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-success { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-info { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-warning { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-danger { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-light { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-dark { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; } - -.link-underline-opacity-0 { - --bs-link-underline-opacity: 0; } - -.link-underline-opacity-0-hover:hover { - --bs-link-underline-opacity: 0; } - -.link-underline-opacity-10 { - --bs-link-underline-opacity: 0.1; } - -.link-underline-opacity-10-hover:hover { - --bs-link-underline-opacity: 0.1; } - -.link-underline-opacity-25 { - --bs-link-underline-opacity: 0.25; } - -.link-underline-opacity-25-hover:hover { - --bs-link-underline-opacity: 0.25; } - -.link-underline-opacity-50 { - --bs-link-underline-opacity: 0.5; } - -.link-underline-opacity-50-hover:hover { - --bs-link-underline-opacity: 0.5; } - -.link-underline-opacity-75 { - --bs-link-underline-opacity: 0.75; } - -.link-underline-opacity-75-hover:hover { - --bs-link-underline-opacity: 0.75; } - -.link-underline-opacity-100 { - --bs-link-underline-opacity: 1; } - -.link-underline-opacity-100-hover:hover { - --bs-link-underline-opacity: 1; } - -.bg-primary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; } - -.bg-secondary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; } - -.bg-success { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; } - -.bg-info { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; } - -.bg-warning { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; } - -.bg-danger { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; } - -.bg-light { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; } - -.bg-dark { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; } - -.bg-black { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; } - -.bg-white { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; } - -.bg-body { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; } - -.bg-transparent { - --bs-bg-opacity: 1; - background-color: transparent !important; } - -.bg-body-secondary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important; } - -.bg-body-tertiary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; } - -.bg-opacity-10 { - --bs-bg-opacity: 0.1; } - -.bg-opacity-25 { - --bs-bg-opacity: 0.25; } - -.bg-opacity-50 { - --bs-bg-opacity: 0.5; } - -.bg-opacity-75 { - --bs-bg-opacity: 0.75; } - -.bg-opacity-100 { - --bs-bg-opacity: 1; } - -.bg-primary-subtle { - background-color: var(--bs-primary-bg-subtle) !important; } - -.bg-secondary-subtle { - background-color: var(--bs-secondary-bg-subtle) !important; } - -.bg-success-subtle { - background-color: var(--bs-success-bg-subtle) !important; } - -.bg-info-subtle { - background-color: var(--bs-info-bg-subtle) !important; } - -.bg-warning-subtle { - background-color: var(--bs-warning-bg-subtle) !important; } - -.bg-danger-subtle { - background-color: var(--bs-danger-bg-subtle) !important; } - -.bg-light-subtle { - background-color: var(--bs-light-bg-subtle) !important; } - -.bg-dark-subtle { - background-color: var(--bs-dark-bg-subtle) !important; } - -.bg-gradient { - background-image: var(--bs-gradient) !important; } - -.user-select-all { - user-select: all !important; } - -.user-select-auto { - user-select: auto !important; } - -.user-select-none { - user-select: none !important; } - -.pe-none { - pointer-events: none !important; } - -.pe-auto { - pointer-events: auto !important; } - -.rounded { - border-radius: var(--bs-border-radius) !important; } - -.rounded-0 { - border-radius: 0 !important; } - -.rounded-1 { - border-radius: var(--bs-border-radius-sm) !important; } - -.rounded-2 { - border-radius: var(--bs-border-radius) !important; } - -.rounded-3 { - border-radius: var(--bs-border-radius-lg) !important; } - -.rounded-4 { - border-radius: var(--bs-border-radius-xl) !important; } - -.rounded-5 { - border-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-circle { - border-radius: 50% !important; } - -.rounded-pill { - border-radius: var(--bs-border-radius-pill) !important; } - -.rounded-top { - border-top-left-radius: var(--bs-border-radius) !important; - border-top-right-radius: var(--bs-border-radius) !important; } - -.rounded-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; } - -.rounded-top-1 { - border-top-left-radius: var(--bs-border-radius-sm) !important; - border-top-right-radius: var(--bs-border-radius-sm) !important; } - -.rounded-top-2 { - border-top-left-radius: var(--bs-border-radius) !important; - border-top-right-radius: var(--bs-border-radius) !important; } - -.rounded-top-3 { - border-top-left-radius: var(--bs-border-radius-lg) !important; - border-top-right-radius: var(--bs-border-radius-lg) !important; } - -.rounded-top-4 { - border-top-left-radius: var(--bs-border-radius-xl) !important; - border-top-right-radius: var(--bs-border-radius-xl) !important; } - -.rounded-top-5 { - border-top-left-radius: var(--bs-border-radius-xxl) !important; - border-top-right-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-top-circle { - border-top-left-radius: 50% !important; - border-top-right-radius: 50% !important; } - -.rounded-top-pill { - border-top-left-radius: var(--bs-border-radius-pill) !important; - border-top-right-radius: var(--bs-border-radius-pill) !important; } - -.rounded-end { - border-top-right-radius: var(--bs-border-radius) !important; - border-bottom-right-radius: var(--bs-border-radius) !important; } - -.rounded-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; } - -.rounded-end-1 { - border-top-right-radius: var(--bs-border-radius-sm) !important; - border-bottom-right-radius: var(--bs-border-radius-sm) !important; } - -.rounded-end-2 { - border-top-right-radius: var(--bs-border-radius) !important; - border-bottom-right-radius: var(--bs-border-radius) !important; } - -.rounded-end-3 { - border-top-right-radius: var(--bs-border-radius-lg) !important; - border-bottom-right-radius: var(--bs-border-radius-lg) !important; } - -.rounded-end-4 { - border-top-right-radius: var(--bs-border-radius-xl) !important; - border-bottom-right-radius: var(--bs-border-radius-xl) !important; } - -.rounded-end-5 { - border-top-right-radius: var(--bs-border-radius-xxl) !important; - border-bottom-right-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-end-circle { - border-top-right-radius: 50% !important; - border-bottom-right-radius: 50% !important; } - -.rounded-end-pill { - border-top-right-radius: var(--bs-border-radius-pill) !important; - border-bottom-right-radius: var(--bs-border-radius-pill) !important; } - -.rounded-bottom { - border-bottom-right-radius: var(--bs-border-radius) !important; - border-bottom-left-radius: var(--bs-border-radius) !important; } - -.rounded-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; } - -.rounded-bottom-1 { - border-bottom-right-radius: var(--bs-border-radius-sm) !important; - border-bottom-left-radius: var(--bs-border-radius-sm) !important; } - -.rounded-bottom-2 { - border-bottom-right-radius: var(--bs-border-radius) !important; - border-bottom-left-radius: var(--bs-border-radius) !important; } - -.rounded-bottom-3 { - border-bottom-right-radius: var(--bs-border-radius-lg) !important; - border-bottom-left-radius: var(--bs-border-radius-lg) !important; } - -.rounded-bottom-4 { - border-bottom-right-radius: var(--bs-border-radius-xl) !important; - border-bottom-left-radius: var(--bs-border-radius-xl) !important; } - -.rounded-bottom-5 { - border-bottom-right-radius: var(--bs-border-radius-xxl) !important; - border-bottom-left-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-bottom-circle { - border-bottom-right-radius: 50% !important; - border-bottom-left-radius: 50% !important; } - -.rounded-bottom-pill { - border-bottom-right-radius: var(--bs-border-radius-pill) !important; - border-bottom-left-radius: var(--bs-border-radius-pill) !important; } - -.rounded-start { - border-bottom-left-radius: var(--bs-border-radius) !important; - border-top-left-radius: var(--bs-border-radius) !important; } - -.rounded-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; } - -.rounded-start-1 { - border-bottom-left-radius: var(--bs-border-radius-sm) !important; - border-top-left-radius: var(--bs-border-radius-sm) !important; } - -.rounded-start-2 { - border-bottom-left-radius: var(--bs-border-radius) !important; - border-top-left-radius: var(--bs-border-radius) !important; } - -.rounded-start-3 { - border-bottom-left-radius: var(--bs-border-radius-lg) !important; - border-top-left-radius: var(--bs-border-radius-lg) !important; } - -.rounded-start-4 { - border-bottom-left-radius: var(--bs-border-radius-xl) !important; - border-top-left-radius: var(--bs-border-radius-xl) !important; } - -.rounded-start-5 { - border-bottom-left-radius: var(--bs-border-radius-xxl) !important; - border-top-left-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-start-circle { - border-bottom-left-radius: 50% !important; - border-top-left-radius: 50% !important; } - -.rounded-start-pill { - border-bottom-left-radius: var(--bs-border-radius-pill) !important; - border-top-left-radius: var(--bs-border-radius-pill) !important; } - -.visible { - visibility: visible !important; } - -.invisible { - visibility: hidden !important; } - -.z-n1 { - z-index: -1 !important; } - -.z-0 { - z-index: 0 !important; } - -.z-1 { - z-index: 1 !important; } - -.z-2 { - z-index: 2 !important; } - -.z-3 { - z-index: 3 !important; } - -@media (min-width: 576px) { - .float-sm-start { - float: left !important; } - .float-sm-end { - float: right !important; } - .float-sm-none { - float: none !important; } - .object-fit-sm-contain { - object-fit: contain !important; } - .object-fit-sm-cover { - object-fit: cover !important; } - .object-fit-sm-fill { - object-fit: fill !important; } - .object-fit-sm-scale { - object-fit: scale-down !important; } - .object-fit-sm-none { - object-fit: none !important; } - .d-sm-inline { - display: inline !important; } - .d-sm-inline-block { - display: inline-block !important; } - .d-sm-block { - display: block !important; } - .d-sm-grid { - display: grid !important; } - .d-sm-inline-grid { - display: inline-grid !important; } - .d-sm-table { - display: table !important; } - .d-sm-table-row { - display: table-row !important; } - .d-sm-table-cell { - display: table-cell !important; } - .d-sm-flex { - display: flex !important; } - .d-sm-inline-flex { - display: inline-flex !important; } - .d-sm-none { - display: none !important; } - .flex-sm-fill { - flex: 1 1 auto !important; } - .flex-sm-row { - flex-direction: row !important; } - .flex-sm-column { - flex-direction: column !important; } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; } - .flex-sm-grow-0 { - flex-grow: 0 !important; } - .flex-sm-grow-1 { - flex-grow: 1 !important; } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; } - .flex-sm-wrap { - flex-wrap: wrap !important; } - .flex-sm-nowrap { - flex-wrap: nowrap !important; } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-sm-start { - justify-content: flex-start !important; } - .justify-content-sm-end { - justify-content: flex-end !important; } - .justify-content-sm-center { - justify-content: center !important; } - .justify-content-sm-between { - justify-content: space-between !important; } - .justify-content-sm-around { - justify-content: space-around !important; } - .justify-content-sm-evenly { - justify-content: space-evenly !important; } - .align-items-sm-start { - align-items: flex-start !important; } - .align-items-sm-end { - align-items: flex-end !important; } - .align-items-sm-center { - align-items: center !important; } - .align-items-sm-baseline { - align-items: baseline !important; } - .align-items-sm-stretch { - align-items: stretch !important; } - .align-content-sm-start { - align-content: flex-start !important; } - .align-content-sm-end { - align-content: flex-end !important; } - .align-content-sm-center { - align-content: center !important; } - .align-content-sm-between { - align-content: space-between !important; } - .align-content-sm-around { - align-content: space-around !important; } - .align-content-sm-stretch { - align-content: stretch !important; } - .align-self-sm-auto { - align-self: auto !important; } - .align-self-sm-start { - align-self: flex-start !important; } - .align-self-sm-end { - align-self: flex-end !important; } - .align-self-sm-center { - align-self: center !important; } - .align-self-sm-baseline { - align-self: baseline !important; } - .align-self-sm-stretch { - align-self: stretch !important; } - .order-sm-first { - order: -1 !important; } - .order-sm-0 { - order: 0 !important; } - .order-sm-1 { - order: 1 !important; } - .order-sm-2 { - order: 2 !important; } - .order-sm-3 { - order: 3 !important; } - .order-sm-4 { - order: 4 !important; } - .order-sm-5 { - order: 5 !important; } - .order-sm-last { - order: 6 !important; } - .m-sm-0 { - margin: 0 !important; } - .m-sm-1 { - margin: 0.25rem !important; } - .m-sm-2 { - margin: 0.5rem !important; } - .m-sm-3 { - margin: 1rem !important; } - .m-sm-4 { - margin: 1.5rem !important; } - .m-sm-5 { - margin: 3rem !important; } - .m-sm-auto { - margin: auto !important; } - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-sm-0 { - margin-top: 0 !important; } - .mt-sm-1 { - margin-top: 0.25rem !important; } - .mt-sm-2 { - margin-top: 0.5rem !important; } - .mt-sm-3 { - margin-top: 1rem !important; } - .mt-sm-4 { - margin-top: 1.5rem !important; } - .mt-sm-5 { - margin-top: 3rem !important; } - .mt-sm-auto { - margin-top: auto !important; } - .me-sm-0 { - margin-right: 0 !important; } - .me-sm-1 { - margin-right: 0.25rem !important; } - .me-sm-2 { - margin-right: 0.5rem !important; } - .me-sm-3 { - margin-right: 1rem !important; } - .me-sm-4 { - margin-right: 1.5rem !important; } - .me-sm-5 { - margin-right: 3rem !important; } - .me-sm-auto { - margin-right: auto !important; } - .mb-sm-0 { - margin-bottom: 0 !important; } - .mb-sm-1 { - margin-bottom: 0.25rem !important; } - .mb-sm-2 { - margin-bottom: 0.5rem !important; } - .mb-sm-3 { - margin-bottom: 1rem !important; } - .mb-sm-4 { - margin-bottom: 1.5rem !important; } - .mb-sm-5 { - margin-bottom: 3rem !important; } - .mb-sm-auto { - margin-bottom: auto !important; } - .ms-sm-0 { - margin-left: 0 !important; } - .ms-sm-1 { - margin-left: 0.25rem !important; } - .ms-sm-2 { - margin-left: 0.5rem !important; } - .ms-sm-3 { - margin-left: 1rem !important; } - .ms-sm-4 { - margin-left: 1.5rem !important; } - .ms-sm-5 { - margin-left: 3rem !important; } - .ms-sm-auto { - margin-left: auto !important; } - .p-sm-0 { - padding: 0 !important; } - .p-sm-1 { - padding: 0.25rem !important; } - .p-sm-2 { - padding: 0.5rem !important; } - .p-sm-3 { - padding: 1rem !important; } - .p-sm-4 { - padding: 1.5rem !important; } - .p-sm-5 { - padding: 3rem !important; } - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-sm-0 { - padding-top: 0 !important; } - .pt-sm-1 { - padding-top: 0.25rem !important; } - .pt-sm-2 { - padding-top: 0.5rem !important; } - .pt-sm-3 { - padding-top: 1rem !important; } - .pt-sm-4 { - padding-top: 1.5rem !important; } - .pt-sm-5 { - padding-top: 3rem !important; } - .pe-sm-0 { - padding-right: 0 !important; } - .pe-sm-1 { - padding-right: 0.25rem !important; } - .pe-sm-2 { - padding-right: 0.5rem !important; } - .pe-sm-3 { - padding-right: 1rem !important; } - .pe-sm-4 { - padding-right: 1.5rem !important; } - .pe-sm-5 { - padding-right: 3rem !important; } - .pb-sm-0 { - padding-bottom: 0 !important; } - .pb-sm-1 { - padding-bottom: 0.25rem !important; } - .pb-sm-2 { - padding-bottom: 0.5rem !important; } - .pb-sm-3 { - padding-bottom: 1rem !important; } - .pb-sm-4 { - padding-bottom: 1.5rem !important; } - .pb-sm-5 { - padding-bottom: 3rem !important; } - .ps-sm-0 { - padding-left: 0 !important; } - .ps-sm-1 { - padding-left: 0.25rem !important; } - .ps-sm-2 { - padding-left: 0.5rem !important; } - .ps-sm-3 { - padding-left: 1rem !important; } - .ps-sm-4 { - padding-left: 1.5rem !important; } - .ps-sm-5 { - padding-left: 3rem !important; } - .gap-sm-0 { - gap: 0 !important; } - .gap-sm-1 { - gap: 0.25rem !important; } - .gap-sm-2 { - gap: 0.5rem !important; } - .gap-sm-3 { - gap: 1rem !important; } - .gap-sm-4 { - gap: 1.5rem !important; } - .gap-sm-5 { - gap: 3rem !important; } - .row-gap-sm-0 { - row-gap: 0 !important; } - .row-gap-sm-1 { - row-gap: 0.25rem !important; } - .row-gap-sm-2 { - row-gap: 0.5rem !important; } - .row-gap-sm-3 { - row-gap: 1rem !important; } - .row-gap-sm-4 { - row-gap: 1.5rem !important; } - .row-gap-sm-5 { - row-gap: 3rem !important; } - .column-gap-sm-0 { - column-gap: 0 !important; } - .column-gap-sm-1 { - column-gap: 0.25rem !important; } - .column-gap-sm-2 { - column-gap: 0.5rem !important; } - .column-gap-sm-3 { - column-gap: 1rem !important; } - .column-gap-sm-4 { - column-gap: 1.5rem !important; } - .column-gap-sm-5 { - column-gap: 3rem !important; } - .text-sm-start { - text-align: left !important; } - .text-sm-end { - text-align: right !important; } - .text-sm-center { - text-align: center !important; } } - -@media (min-width: 768px) { - .float-md-start { - float: left !important; } - .float-md-end { - float: right !important; } - .float-md-none { - float: none !important; } - .object-fit-md-contain { - object-fit: contain !important; } - .object-fit-md-cover { - object-fit: cover !important; } - .object-fit-md-fill { - object-fit: fill !important; } - .object-fit-md-scale { - object-fit: scale-down !important; } - .object-fit-md-none { - object-fit: none !important; } - .d-md-inline { - display: inline !important; } - .d-md-inline-block { - display: inline-block !important; } - .d-md-block { - display: block !important; } - .d-md-grid { - display: grid !important; } - .d-md-inline-grid { - display: inline-grid !important; } - .d-md-table { - display: table !important; } - .d-md-table-row { - display: table-row !important; } - .d-md-table-cell { - display: table-cell !important; } - .d-md-flex { - display: flex !important; } - .d-md-inline-flex { - display: inline-flex !important; } - .d-md-none { - display: none !important; } - .flex-md-fill { - flex: 1 1 auto !important; } - .flex-md-row { - flex-direction: row !important; } - .flex-md-column { - flex-direction: column !important; } - .flex-md-row-reverse { - flex-direction: row-reverse !important; } - .flex-md-column-reverse { - flex-direction: column-reverse !important; } - .flex-md-grow-0 { - flex-grow: 0 !important; } - .flex-md-grow-1 { - flex-grow: 1 !important; } - .flex-md-shrink-0 { - flex-shrink: 0 !important; } - .flex-md-shrink-1 { - flex-shrink: 1 !important; } - .flex-md-wrap { - flex-wrap: wrap !important; } - .flex-md-nowrap { - flex-wrap: nowrap !important; } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-md-start { - justify-content: flex-start !important; } - .justify-content-md-end { - justify-content: flex-end !important; } - .justify-content-md-center { - justify-content: center !important; } - .justify-content-md-between { - justify-content: space-between !important; } - .justify-content-md-around { - justify-content: space-around !important; } - .justify-content-md-evenly { - justify-content: space-evenly !important; } - .align-items-md-start { - align-items: flex-start !important; } - .align-items-md-end { - align-items: flex-end !important; } - .align-items-md-center { - align-items: center !important; } - .align-items-md-baseline { - align-items: baseline !important; } - .align-items-md-stretch { - align-items: stretch !important; } - .align-content-md-start { - align-content: flex-start !important; } - .align-content-md-end { - align-content: flex-end !important; } - .align-content-md-center { - align-content: center !important; } - .align-content-md-between { - align-content: space-between !important; } - .align-content-md-around { - align-content: space-around !important; } - .align-content-md-stretch { - align-content: stretch !important; } - .align-self-md-auto { - align-self: auto !important; } - .align-self-md-start { - align-self: flex-start !important; } - .align-self-md-end { - align-self: flex-end !important; } - .align-self-md-center { - align-self: center !important; } - .align-self-md-baseline { - align-self: baseline !important; } - .align-self-md-stretch { - align-self: stretch !important; } - .order-md-first { - order: -1 !important; } - .order-md-0 { - order: 0 !important; } - .order-md-1 { - order: 1 !important; } - .order-md-2 { - order: 2 !important; } - .order-md-3 { - order: 3 !important; } - .order-md-4 { - order: 4 !important; } - .order-md-5 { - order: 5 !important; } - .order-md-last { - order: 6 !important; } - .m-md-0 { - margin: 0 !important; } - .m-md-1 { - margin: 0.25rem !important; } - .m-md-2 { - margin: 0.5rem !important; } - .m-md-3 { - margin: 1rem !important; } - .m-md-4 { - margin: 1.5rem !important; } - .m-md-5 { - margin: 3rem !important; } - .m-md-auto { - margin: auto !important; } - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-md-0 { - margin-top: 0 !important; } - .mt-md-1 { - margin-top: 0.25rem !important; } - .mt-md-2 { - margin-top: 0.5rem !important; } - .mt-md-3 { - margin-top: 1rem !important; } - .mt-md-4 { - margin-top: 1.5rem !important; } - .mt-md-5 { - margin-top: 3rem !important; } - .mt-md-auto { - margin-top: auto !important; } - .me-md-0 { - margin-right: 0 !important; } - .me-md-1 { - margin-right: 0.25rem !important; } - .me-md-2 { - margin-right: 0.5rem !important; } - .me-md-3 { - margin-right: 1rem !important; } - .me-md-4 { - margin-right: 1.5rem !important; } - .me-md-5 { - margin-right: 3rem !important; } - .me-md-auto { - margin-right: auto !important; } - .mb-md-0 { - margin-bottom: 0 !important; } - .mb-md-1 { - margin-bottom: 0.25rem !important; } - .mb-md-2 { - margin-bottom: 0.5rem !important; } - .mb-md-3 { - margin-bottom: 1rem !important; } - .mb-md-4 { - margin-bottom: 1.5rem !important; } - .mb-md-5 { - margin-bottom: 3rem !important; } - .mb-md-auto { - margin-bottom: auto !important; } - .ms-md-0 { - margin-left: 0 !important; } - .ms-md-1 { - margin-left: 0.25rem !important; } - .ms-md-2 { - margin-left: 0.5rem !important; } - .ms-md-3 { - margin-left: 1rem !important; } - .ms-md-4 { - margin-left: 1.5rem !important; } - .ms-md-5 { - margin-left: 3rem !important; } - .ms-md-auto { - margin-left: auto !important; } - .p-md-0 { - padding: 0 !important; } - .p-md-1 { - padding: 0.25rem !important; } - .p-md-2 { - padding: 0.5rem !important; } - .p-md-3 { - padding: 1rem !important; } - .p-md-4 { - padding: 1.5rem !important; } - .p-md-5 { - padding: 3rem !important; } - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-md-0 { - padding-top: 0 !important; } - .pt-md-1 { - padding-top: 0.25rem !important; } - .pt-md-2 { - padding-top: 0.5rem !important; } - .pt-md-3 { - padding-top: 1rem !important; } - .pt-md-4 { - padding-top: 1.5rem !important; } - .pt-md-5 { - padding-top: 3rem !important; } - .pe-md-0 { - padding-right: 0 !important; } - .pe-md-1 { - padding-right: 0.25rem !important; } - .pe-md-2 { - padding-right: 0.5rem !important; } - .pe-md-3 { - padding-right: 1rem !important; } - .pe-md-4 { - padding-right: 1.5rem !important; } - .pe-md-5 { - padding-right: 3rem !important; } - .pb-md-0 { - padding-bottom: 0 !important; } - .pb-md-1 { - padding-bottom: 0.25rem !important; } - .pb-md-2 { - padding-bottom: 0.5rem !important; } - .pb-md-3 { - padding-bottom: 1rem !important; } - .pb-md-4 { - padding-bottom: 1.5rem !important; } - .pb-md-5 { - padding-bottom: 3rem !important; } - .ps-md-0 { - padding-left: 0 !important; } - .ps-md-1 { - padding-left: 0.25rem !important; } - .ps-md-2 { - padding-left: 0.5rem !important; } - .ps-md-3 { - padding-left: 1rem !important; } - .ps-md-4 { - padding-left: 1.5rem !important; } - .ps-md-5 { - padding-left: 3rem !important; } - .gap-md-0 { - gap: 0 !important; } - .gap-md-1 { - gap: 0.25rem !important; } - .gap-md-2 { - gap: 0.5rem !important; } - .gap-md-3 { - gap: 1rem !important; } - .gap-md-4 { - gap: 1.5rem !important; } - .gap-md-5 { - gap: 3rem !important; } - .row-gap-md-0 { - row-gap: 0 !important; } - .row-gap-md-1 { - row-gap: 0.25rem !important; } - .row-gap-md-2 { - row-gap: 0.5rem !important; } - .row-gap-md-3 { - row-gap: 1rem !important; } - .row-gap-md-4 { - row-gap: 1.5rem !important; } - .row-gap-md-5 { - row-gap: 3rem !important; } - .column-gap-md-0 { - column-gap: 0 !important; } - .column-gap-md-1 { - column-gap: 0.25rem !important; } - .column-gap-md-2 { - column-gap: 0.5rem !important; } - .column-gap-md-3 { - column-gap: 1rem !important; } - .column-gap-md-4 { - column-gap: 1.5rem !important; } - .column-gap-md-5 { - column-gap: 3rem !important; } - .text-md-start { - text-align: left !important; } - .text-md-end { - text-align: right !important; } - .text-md-center { - text-align: center !important; } } - -@media (min-width: 992px) { - .float-lg-start { - float: left !important; } - .float-lg-end { - float: right !important; } - .float-lg-none { - float: none !important; } - .object-fit-lg-contain { - object-fit: contain !important; } - .object-fit-lg-cover { - object-fit: cover !important; } - .object-fit-lg-fill { - object-fit: fill !important; } - .object-fit-lg-scale { - object-fit: scale-down !important; } - .object-fit-lg-none { - object-fit: none !important; } - .d-lg-inline { - display: inline !important; } - .d-lg-inline-block { - display: inline-block !important; } - .d-lg-block, .td-blog .td-rss-button { - display: block !important; } - .d-lg-grid { - display: grid !important; } - .d-lg-inline-grid { - display: inline-grid !important; } - .d-lg-table { - display: table !important; } - .d-lg-table-row { - display: table-row !important; } - .d-lg-table-cell { - display: table-cell !important; } - .d-lg-flex { - display: flex !important; } - .d-lg-inline-flex { - display: inline-flex !important; } - .d-lg-none { - display: none !important; } - .flex-lg-fill { - flex: 1 1 auto !important; } - .flex-lg-row { - flex-direction: row !important; } - .flex-lg-column { - flex-direction: column !important; } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; } - .flex-lg-grow-0 { - flex-grow: 0 !important; } - .flex-lg-grow-1 { - flex-grow: 1 !important; } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; } - .flex-lg-wrap { - flex-wrap: wrap !important; } - .flex-lg-nowrap { - flex-wrap: nowrap !important; } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-lg-start { - justify-content: flex-start !important; } - .justify-content-lg-end { - justify-content: flex-end !important; } - .justify-content-lg-center { - justify-content: center !important; } - .justify-content-lg-between { - justify-content: space-between !important; } - .justify-content-lg-around { - justify-content: space-around !important; } - .justify-content-lg-evenly { - justify-content: space-evenly !important; } - .align-items-lg-start { - align-items: flex-start !important; } - .align-items-lg-end { - align-items: flex-end !important; } - .align-items-lg-center { - align-items: center !important; } - .align-items-lg-baseline { - align-items: baseline !important; } - .align-items-lg-stretch { - align-items: stretch !important; } - .align-content-lg-start { - align-content: flex-start !important; } - .align-content-lg-end { - align-content: flex-end !important; } - .align-content-lg-center { - align-content: center !important; } - .align-content-lg-between { - align-content: space-between !important; } - .align-content-lg-around { - align-content: space-around !important; } - .align-content-lg-stretch { - align-content: stretch !important; } - .align-self-lg-auto { - align-self: auto !important; } - .align-self-lg-start { - align-self: flex-start !important; } - .align-self-lg-end { - align-self: flex-end !important; } - .align-self-lg-center { - align-self: center !important; } - .align-self-lg-baseline { - align-self: baseline !important; } - .align-self-lg-stretch { - align-self: stretch !important; } - .order-lg-first { - order: -1 !important; } - .order-lg-0 { - order: 0 !important; } - .order-lg-1 { - order: 1 !important; } - .order-lg-2 { - order: 2 !important; } - .order-lg-3 { - order: 3 !important; } - .order-lg-4 { - order: 4 !important; } - .order-lg-5 { - order: 5 !important; } - .order-lg-last { - order: 6 !important; } - .m-lg-0 { - margin: 0 !important; } - .m-lg-1 { - margin: 0.25rem !important; } - .m-lg-2 { - margin: 0.5rem !important; } - .m-lg-3 { - margin: 1rem !important; } - .m-lg-4 { - margin: 1.5rem !important; } - .m-lg-5 { - margin: 3rem !important; } - .m-lg-auto { - margin: auto !important; } - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-lg-0 { - margin-top: 0 !important; } - .mt-lg-1 { - margin-top: 0.25rem !important; } - .mt-lg-2 { - margin-top: 0.5rem !important; } - .mt-lg-3 { - margin-top: 1rem !important; } - .mt-lg-4 { - margin-top: 1.5rem !important; } - .mt-lg-5 { - margin-top: 3rem !important; } - .mt-lg-auto { - margin-top: auto !important; } - .me-lg-0 { - margin-right: 0 !important; } - .me-lg-1 { - margin-right: 0.25rem !important; } - .me-lg-2 { - margin-right: 0.5rem !important; } - .me-lg-3 { - margin-right: 1rem !important; } - .me-lg-4 { - margin-right: 1.5rem !important; } - .me-lg-5 { - margin-right: 3rem !important; } - .me-lg-auto { - margin-right: auto !important; } - .mb-lg-0 { - margin-bottom: 0 !important; } - .mb-lg-1 { - margin-bottom: 0.25rem !important; } - .mb-lg-2 { - margin-bottom: 0.5rem !important; } - .mb-lg-3 { - margin-bottom: 1rem !important; } - .mb-lg-4 { - margin-bottom: 1.5rem !important; } - .mb-lg-5 { - margin-bottom: 3rem !important; } - .mb-lg-auto { - margin-bottom: auto !important; } - .ms-lg-0 { - margin-left: 0 !important; } - .ms-lg-1 { - margin-left: 0.25rem !important; } - .ms-lg-2 { - margin-left: 0.5rem !important; } - .ms-lg-3 { - margin-left: 1rem !important; } - .ms-lg-4 { - margin-left: 1.5rem !important; } - .ms-lg-5 { - margin-left: 3rem !important; } - .ms-lg-auto { - margin-left: auto !important; } - .p-lg-0 { - padding: 0 !important; } - .p-lg-1 { - padding: 0.25rem !important; } - .p-lg-2 { - padding: 0.5rem !important; } - .p-lg-3 { - padding: 1rem !important; } - .p-lg-4 { - padding: 1.5rem !important; } - .p-lg-5 { - padding: 3rem !important; } - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-lg-0 { - padding-top: 0 !important; } - .pt-lg-1 { - padding-top: 0.25rem !important; } - .pt-lg-2 { - padding-top: 0.5rem !important; } - .pt-lg-3 { - padding-top: 1rem !important; } - .pt-lg-4 { - padding-top: 1.5rem !important; } - .pt-lg-5 { - padding-top: 3rem !important; } - .pe-lg-0 { - padding-right: 0 !important; } - .pe-lg-1 { - padding-right: 0.25rem !important; } - .pe-lg-2 { - padding-right: 0.5rem !important; } - .pe-lg-3 { - padding-right: 1rem !important; } - .pe-lg-4 { - padding-right: 1.5rem !important; } - .pe-lg-5 { - padding-right: 3rem !important; } - .pb-lg-0 { - padding-bottom: 0 !important; } - .pb-lg-1 { - padding-bottom: 0.25rem !important; } - .pb-lg-2 { - padding-bottom: 0.5rem !important; } - .pb-lg-3 { - padding-bottom: 1rem !important; } - .pb-lg-4 { - padding-bottom: 1.5rem !important; } - .pb-lg-5 { - padding-bottom: 3rem !important; } - .ps-lg-0 { - padding-left: 0 !important; } - .ps-lg-1 { - padding-left: 0.25rem !important; } - .ps-lg-2 { - padding-left: 0.5rem !important; } - .ps-lg-3 { - padding-left: 1rem !important; } - .ps-lg-4 { - padding-left: 1.5rem !important; } - .ps-lg-5 { - padding-left: 3rem !important; } - .gap-lg-0 { - gap: 0 !important; } - .gap-lg-1 { - gap: 0.25rem !important; } - .gap-lg-2 { - gap: 0.5rem !important; } - .gap-lg-3 { - gap: 1rem !important; } - .gap-lg-4 { - gap: 1.5rem !important; } - .gap-lg-5 { - gap: 3rem !important; } - .row-gap-lg-0 { - row-gap: 0 !important; } - .row-gap-lg-1 { - row-gap: 0.25rem !important; } - .row-gap-lg-2 { - row-gap: 0.5rem !important; } - .row-gap-lg-3 { - row-gap: 1rem !important; } - .row-gap-lg-4 { - row-gap: 1.5rem !important; } - .row-gap-lg-5 { - row-gap: 3rem !important; } - .column-gap-lg-0 { - column-gap: 0 !important; } - .column-gap-lg-1 { - column-gap: 0.25rem !important; } - .column-gap-lg-2 { - column-gap: 0.5rem !important; } - .column-gap-lg-3 { - column-gap: 1rem !important; } - .column-gap-lg-4 { - column-gap: 1.5rem !important; } - .column-gap-lg-5 { - column-gap: 3rem !important; } - .text-lg-start { - text-align: left !important; } - .text-lg-end { - text-align: right !important; } - .text-lg-center { - text-align: center !important; } } - -@media (min-width: 1200px) { - .float-xl-start { - float: left !important; } - .float-xl-end { - float: right !important; } - .float-xl-none { - float: none !important; } - .object-fit-xl-contain { - object-fit: contain !important; } - .object-fit-xl-cover { - object-fit: cover !important; } - .object-fit-xl-fill { - object-fit: fill !important; } - .object-fit-xl-scale { - object-fit: scale-down !important; } - .object-fit-xl-none { - object-fit: none !important; } - .d-xl-inline { - display: inline !important; } - .d-xl-inline-block { - display: inline-block !important; } - .d-xl-block { - display: block !important; } - .d-xl-grid { - display: grid !important; } - .d-xl-inline-grid { - display: inline-grid !important; } - .d-xl-table { - display: table !important; } - .d-xl-table-row { - display: table-row !important; } - .d-xl-table-cell { - display: table-cell !important; } - .d-xl-flex { - display: flex !important; } - .d-xl-inline-flex { - display: inline-flex !important; } - .d-xl-none { - display: none !important; } - .flex-xl-fill { - flex: 1 1 auto !important; } - .flex-xl-row { - flex-direction: row !important; } - .flex-xl-column { - flex-direction: column !important; } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; } - .flex-xl-grow-0 { - flex-grow: 0 !important; } - .flex-xl-grow-1 { - flex-grow: 1 !important; } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; } - .flex-xl-wrap { - flex-wrap: wrap !important; } - .flex-xl-nowrap { - flex-wrap: nowrap !important; } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-xl-start { - justify-content: flex-start !important; } - .justify-content-xl-end { - justify-content: flex-end !important; } - .justify-content-xl-center { - justify-content: center !important; } - .justify-content-xl-between { - justify-content: space-between !important; } - .justify-content-xl-around { - justify-content: space-around !important; } - .justify-content-xl-evenly { - justify-content: space-evenly !important; } - .align-items-xl-start { - align-items: flex-start !important; } - .align-items-xl-end { - align-items: flex-end !important; } - .align-items-xl-center { - align-items: center !important; } - .align-items-xl-baseline { - align-items: baseline !important; } - .align-items-xl-stretch { - align-items: stretch !important; } - .align-content-xl-start { - align-content: flex-start !important; } - .align-content-xl-end { - align-content: flex-end !important; } - .align-content-xl-center { - align-content: center !important; } - .align-content-xl-between { - align-content: space-between !important; } - .align-content-xl-around { - align-content: space-around !important; } - .align-content-xl-stretch { - align-content: stretch !important; } - .align-self-xl-auto { - align-self: auto !important; } - .align-self-xl-start { - align-self: flex-start !important; } - .align-self-xl-end { - align-self: flex-end !important; } - .align-self-xl-center { - align-self: center !important; } - .align-self-xl-baseline { - align-self: baseline !important; } - .align-self-xl-stretch { - align-self: stretch !important; } - .order-xl-first { - order: -1 !important; } - .order-xl-0 { - order: 0 !important; } - .order-xl-1 { - order: 1 !important; } - .order-xl-2 { - order: 2 !important; } - .order-xl-3 { - order: 3 !important; } - .order-xl-4 { - order: 4 !important; } - .order-xl-5 { - order: 5 !important; } - .order-xl-last { - order: 6 !important; } - .m-xl-0 { - margin: 0 !important; } - .m-xl-1 { - margin: 0.25rem !important; } - .m-xl-2 { - margin: 0.5rem !important; } - .m-xl-3 { - margin: 1rem !important; } - .m-xl-4 { - margin: 1.5rem !important; } - .m-xl-5 { - margin: 3rem !important; } - .m-xl-auto { - margin: auto !important; } - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-xl-0 { - margin-top: 0 !important; } - .mt-xl-1 { - margin-top: 0.25rem !important; } - .mt-xl-2 { - margin-top: 0.5rem !important; } - .mt-xl-3 { - margin-top: 1rem !important; } - .mt-xl-4 { - margin-top: 1.5rem !important; } - .mt-xl-5 { - margin-top: 3rem !important; } - .mt-xl-auto { - margin-top: auto !important; } - .me-xl-0 { - margin-right: 0 !important; } - .me-xl-1 { - margin-right: 0.25rem !important; } - .me-xl-2 { - margin-right: 0.5rem !important; } - .me-xl-3 { - margin-right: 1rem !important; } - .me-xl-4 { - margin-right: 1.5rem !important; } - .me-xl-5 { - margin-right: 3rem !important; } - .me-xl-auto { - margin-right: auto !important; } - .mb-xl-0 { - margin-bottom: 0 !important; } - .mb-xl-1 { - margin-bottom: 0.25rem !important; } - .mb-xl-2 { - margin-bottom: 0.5rem !important; } - .mb-xl-3 { - margin-bottom: 1rem !important; } - .mb-xl-4 { - margin-bottom: 1.5rem !important; } - .mb-xl-5 { - margin-bottom: 3rem !important; } - .mb-xl-auto { - margin-bottom: auto !important; } - .ms-xl-0 { - margin-left: 0 !important; } - .ms-xl-1 { - margin-left: 0.25rem !important; } - .ms-xl-2 { - margin-left: 0.5rem !important; } - .ms-xl-3 { - margin-left: 1rem !important; } - .ms-xl-4 { - margin-left: 1.5rem !important; } - .ms-xl-5 { - margin-left: 3rem !important; } - .ms-xl-auto { - margin-left: auto !important; } - .p-xl-0 { - padding: 0 !important; } - .p-xl-1 { - padding: 0.25rem !important; } - .p-xl-2 { - padding: 0.5rem !important; } - .p-xl-3 { - padding: 1rem !important; } - .p-xl-4 { - padding: 1.5rem !important; } - .p-xl-5 { - padding: 3rem !important; } - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-xl-0 { - padding-top: 0 !important; } - .pt-xl-1 { - padding-top: 0.25rem !important; } - .pt-xl-2 { - padding-top: 0.5rem !important; } - .pt-xl-3 { - padding-top: 1rem !important; } - .pt-xl-4 { - padding-top: 1.5rem !important; } - .pt-xl-5 { - padding-top: 3rem !important; } - .pe-xl-0 { - padding-right: 0 !important; } - .pe-xl-1 { - padding-right: 0.25rem !important; } - .pe-xl-2 { - padding-right: 0.5rem !important; } - .pe-xl-3 { - padding-right: 1rem !important; } - .pe-xl-4 { - padding-right: 1.5rem !important; } - .pe-xl-5 { - padding-right: 3rem !important; } - .pb-xl-0 { - padding-bottom: 0 !important; } - .pb-xl-1 { - padding-bottom: 0.25rem !important; } - .pb-xl-2 { - padding-bottom: 0.5rem !important; } - .pb-xl-3 { - padding-bottom: 1rem !important; } - .pb-xl-4 { - padding-bottom: 1.5rem !important; } - .pb-xl-5 { - padding-bottom: 3rem !important; } - .ps-xl-0 { - padding-left: 0 !important; } - .ps-xl-1 { - padding-left: 0.25rem !important; } - .ps-xl-2 { - padding-left: 0.5rem !important; } - .ps-xl-3 { - padding-left: 1rem !important; } - .ps-xl-4 { - padding-left: 1.5rem !important; } - .ps-xl-5 { - padding-left: 3rem !important; } - .gap-xl-0 { - gap: 0 !important; } - .gap-xl-1 { - gap: 0.25rem !important; } - .gap-xl-2 { - gap: 0.5rem !important; } - .gap-xl-3 { - gap: 1rem !important; } - .gap-xl-4 { - gap: 1.5rem !important; } - .gap-xl-5 { - gap: 3rem !important; } - .row-gap-xl-0 { - row-gap: 0 !important; } - .row-gap-xl-1 { - row-gap: 0.25rem !important; } - .row-gap-xl-2 { - row-gap: 0.5rem !important; } - .row-gap-xl-3 { - row-gap: 1rem !important; } - .row-gap-xl-4 { - row-gap: 1.5rem !important; } - .row-gap-xl-5 { - row-gap: 3rem !important; } - .column-gap-xl-0 { - column-gap: 0 !important; } - .column-gap-xl-1 { - column-gap: 0.25rem !important; } - .column-gap-xl-2 { - column-gap: 0.5rem !important; } - .column-gap-xl-3 { - column-gap: 1rem !important; } - .column-gap-xl-4 { - column-gap: 1.5rem !important; } - .column-gap-xl-5 { - column-gap: 3rem !important; } - .text-xl-start { - text-align: left !important; } - .text-xl-end { - text-align: right !important; } - .text-xl-center { - text-align: center !important; } } - -@media (min-width: 1400px) { - .float-xxl-start { - float: left !important; } - .float-xxl-end { - float: right !important; } - .float-xxl-none { - float: none !important; } - .object-fit-xxl-contain { - object-fit: contain !important; } - .object-fit-xxl-cover { - object-fit: cover !important; } - .object-fit-xxl-fill { - object-fit: fill !important; } - .object-fit-xxl-scale { - object-fit: scale-down !important; } - .object-fit-xxl-none { - object-fit: none !important; } - .d-xxl-inline { - display: inline !important; } - .d-xxl-inline-block { - display: inline-block !important; } - .d-xxl-block { - display: block !important; } - .d-xxl-grid { - display: grid !important; } - .d-xxl-inline-grid { - display: inline-grid !important; } - .d-xxl-table { - display: table !important; } - .d-xxl-table-row { - display: table-row !important; } - .d-xxl-table-cell { - display: table-cell !important; } - .d-xxl-flex { - display: flex !important; } - .d-xxl-inline-flex { - display: inline-flex !important; } - .d-xxl-none { - display: none !important; } - .flex-xxl-fill { - flex: 1 1 auto !important; } - .flex-xxl-row { - flex-direction: row !important; } - .flex-xxl-column { - flex-direction: column !important; } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; } - .flex-xxl-grow-0 { - flex-grow: 0 !important; } - .flex-xxl-grow-1 { - flex-grow: 1 !important; } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; } - .flex-xxl-wrap { - flex-wrap: wrap !important; } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-xxl-start { - justify-content: flex-start !important; } - .justify-content-xxl-end { - justify-content: flex-end !important; } - .justify-content-xxl-center { - justify-content: center !important; } - .justify-content-xxl-between { - justify-content: space-between !important; } - .justify-content-xxl-around { - justify-content: space-around !important; } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; } - .align-items-xxl-start { - align-items: flex-start !important; } - .align-items-xxl-end { - align-items: flex-end !important; } - .align-items-xxl-center { - align-items: center !important; } - .align-items-xxl-baseline { - align-items: baseline !important; } - .align-items-xxl-stretch { - align-items: stretch !important; } - .align-content-xxl-start { - align-content: flex-start !important; } - .align-content-xxl-end { - align-content: flex-end !important; } - .align-content-xxl-center { - align-content: center !important; } - .align-content-xxl-between { - align-content: space-between !important; } - .align-content-xxl-around { - align-content: space-around !important; } - .align-content-xxl-stretch { - align-content: stretch !important; } - .align-self-xxl-auto { - align-self: auto !important; } - .align-self-xxl-start { - align-self: flex-start !important; } - .align-self-xxl-end { - align-self: flex-end !important; } - .align-self-xxl-center { - align-self: center !important; } - .align-self-xxl-baseline { - align-self: baseline !important; } - .align-self-xxl-stretch { - align-self: stretch !important; } - .order-xxl-first { - order: -1 !important; } - .order-xxl-0 { - order: 0 !important; } - .order-xxl-1 { - order: 1 !important; } - .order-xxl-2 { - order: 2 !important; } - .order-xxl-3 { - order: 3 !important; } - .order-xxl-4 { - order: 4 !important; } - .order-xxl-5 { - order: 5 !important; } - .order-xxl-last { - order: 6 !important; } - .m-xxl-0 { - margin: 0 !important; } - .m-xxl-1 { - margin: 0.25rem !important; } - .m-xxl-2 { - margin: 0.5rem !important; } - .m-xxl-3 { - margin: 1rem !important; } - .m-xxl-4 { - margin: 1.5rem !important; } - .m-xxl-5 { - margin: 3rem !important; } - .m-xxl-auto { - margin: auto !important; } - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-xxl-0 { - margin-top: 0 !important; } - .mt-xxl-1 { - margin-top: 0.25rem !important; } - .mt-xxl-2 { - margin-top: 0.5rem !important; } - .mt-xxl-3 { - margin-top: 1rem !important; } - .mt-xxl-4 { - margin-top: 1.5rem !important; } - .mt-xxl-5 { - margin-top: 3rem !important; } - .mt-xxl-auto { - margin-top: auto !important; } - .me-xxl-0 { - margin-right: 0 !important; } - .me-xxl-1 { - margin-right: 0.25rem !important; } - .me-xxl-2 { - margin-right: 0.5rem !important; } - .me-xxl-3 { - margin-right: 1rem !important; } - .me-xxl-4 { - margin-right: 1.5rem !important; } - .me-xxl-5 { - margin-right: 3rem !important; } - .me-xxl-auto { - margin-right: auto !important; } - .mb-xxl-0 { - margin-bottom: 0 !important; } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; } - .mb-xxl-3 { - margin-bottom: 1rem !important; } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; } - .mb-xxl-5 { - margin-bottom: 3rem !important; } - .mb-xxl-auto { - margin-bottom: auto !important; } - .ms-xxl-0 { - margin-left: 0 !important; } - .ms-xxl-1 { - margin-left: 0.25rem !important; } - .ms-xxl-2 { - margin-left: 0.5rem !important; } - .ms-xxl-3 { - margin-left: 1rem !important; } - .ms-xxl-4 { - margin-left: 1.5rem !important; } - .ms-xxl-5 { - margin-left: 3rem !important; } - .ms-xxl-auto { - margin-left: auto !important; } - .p-xxl-0 { - padding: 0 !important; } - .p-xxl-1 { - padding: 0.25rem !important; } - .p-xxl-2 { - padding: 0.5rem !important; } - .p-xxl-3 { - padding: 1rem !important; } - .p-xxl-4 { - padding: 1.5rem !important; } - .p-xxl-5 { - padding: 3rem !important; } - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-xxl-0 { - padding-top: 0 !important; } - .pt-xxl-1 { - padding-top: 0.25rem !important; } - .pt-xxl-2 { - padding-top: 0.5rem !important; } - .pt-xxl-3 { - padding-top: 1rem !important; } - .pt-xxl-4 { - padding-top: 1.5rem !important; } - .pt-xxl-5 { - padding-top: 3rem !important; } - .pe-xxl-0 { - padding-right: 0 !important; } - .pe-xxl-1 { - padding-right: 0.25rem !important; } - .pe-xxl-2 { - padding-right: 0.5rem !important; } - .pe-xxl-3 { - padding-right: 1rem !important; } - .pe-xxl-4 { - padding-right: 1.5rem !important; } - .pe-xxl-5 { - padding-right: 3rem !important; } - .pb-xxl-0 { - padding-bottom: 0 !important; } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; } - .pb-xxl-3 { - padding-bottom: 1rem !important; } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; } - .pb-xxl-5 { - padding-bottom: 3rem !important; } - .ps-xxl-0 { - padding-left: 0 !important; } - .ps-xxl-1 { - padding-left: 0.25rem !important; } - .ps-xxl-2 { - padding-left: 0.5rem !important; } - .ps-xxl-3 { - padding-left: 1rem !important; } - .ps-xxl-4 { - padding-left: 1.5rem !important; } - .ps-xxl-5 { - padding-left: 3rem !important; } - .gap-xxl-0 { - gap: 0 !important; } - .gap-xxl-1 { - gap: 0.25rem !important; } - .gap-xxl-2 { - gap: 0.5rem !important; } - .gap-xxl-3 { - gap: 1rem !important; } - .gap-xxl-4 { - gap: 1.5rem !important; } - .gap-xxl-5 { - gap: 3rem !important; } - .row-gap-xxl-0 { - row-gap: 0 !important; } - .row-gap-xxl-1 { - row-gap: 0.25rem !important; } - .row-gap-xxl-2 { - row-gap: 0.5rem !important; } - .row-gap-xxl-3 { - row-gap: 1rem !important; } - .row-gap-xxl-4 { - row-gap: 1.5rem !important; } - .row-gap-xxl-5 { - row-gap: 3rem !important; } - .column-gap-xxl-0 { - column-gap: 0 !important; } - .column-gap-xxl-1 { - column-gap: 0.25rem !important; } - .column-gap-xxl-2 { - column-gap: 0.5rem !important; } - .column-gap-xxl-3 { - column-gap: 1rem !important; } - .column-gap-xxl-4 { - column-gap: 1.5rem !important; } - .column-gap-xxl-5 { - column-gap: 3rem !important; } - .text-xxl-start { - text-align: left !important; } - .text-xxl-end { - text-align: right !important; } - .text-xxl-center { - text-align: center !important; } } - -@media (min-width: 1200px) { - .fs-1 { - font-size: 2.5rem !important; } - .fs-2 { - font-size: 2rem !important; } - .fs-3 { - font-size: 1.5rem !important; } - .fs-4 { - font-size: 1.35rem !important; } } - -@media print { - .d-print-inline { - display: inline !important; } - .d-print-inline-block { - display: inline-block !important; } - .d-print-block { - display: block !important; } - .d-print-grid { - display: grid !important; } - .d-print-inline-grid { - display: inline-grid !important; } - .d-print-table { - display: table !important; } - .d-print-table-row { - display: table-row !important; } - .d-print-table-cell { - display: table-cell !important; } - .d-print-flex { - display: flex !important; } - .d-print-inline-flex { - display: inline-flex !important; } - .d-print-none { - display: none !important; } } - -/*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2024 Fonticons, Inc. - */ -.fa, .td-search__icon:before { - font-family: var(--fa-style-family, "Font Awesome 6 Free"); - font-weight: var(--fa-style, 900); } - -.fa, .td-search__icon:before, -.fa-classic, -.fa-sharp, -.fas, -.td-offline-search-results__close-button:after, -.fa-solid, -.far, -.fa-regular, -.fab, -.fa-brands { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: var(--fa-display, inline-block); - font-style: normal; - font-variant: normal; - line-height: 1; - text-rendering: auto; } - -.fas, .td-offline-search-results__close-button:after, -.fa-classic, -.fa-solid, -.far, -.fa-regular { - font-family: 'Font Awesome 6 Free'; } - -.fab, -.fa-brands { - font-family: 'Font Awesome 6 Brands'; } - -.fa-1x { - font-size: 1em; } - -.fa-2x { - font-size: 2em; } - -.fa-3x { - font-size: 3em; } - -.fa-4x { - font-size: 4em; } - -.fa-5x { - font-size: 5em; } - -.fa-6x { - font-size: 6em; } - -.fa-7x { - font-size: 7em; } - -.fa-8x { - font-size: 8em; } - -.fa-9x { - font-size: 9em; } - -.fa-10x { - font-size: 10em; } - -.fa-2xs { - font-size: 0.625em; - line-height: 0.1em; - vertical-align: 0.225em; } - -.fa-xs { - font-size: 0.75em; - line-height: 0.08333333em; - vertical-align: 0.125em; } - -.fa-sm { - font-size: 0.875em; - line-height: 0.07142857em; - vertical-align: 0.05357143em; } - -.fa-lg { - font-size: 1.25em; - line-height: 0.05em; - vertical-align: -0.075em; } - -.fa-xl { - font-size: 1.5em; - line-height: 0.04166667em; - vertical-align: -0.125em; } - -.fa-2xl { - font-size: 2em; - line-height: 0.03125em; - vertical-align: -0.1875em; } - -.fa-fw { - text-align: center; - width: 1.25em; } - -.fa-ul { - list-style-type: none; - margin-left: var(--fa-li-margin, 2.5em); - padding-left: 0; } - .fa-ul > li { - position: relative; } - -.fa-li { - left: calc(var(--fa-li-width, 2em) * -1); - position: absolute; - text-align: center; - width: var(--fa-li-width, 2em); - line-height: inherit; } - -.fa-border { - border-color: var(--fa-border-color, #eee); - border-radius: var(--fa-border-radius, 0.1em); - border-style: var(--fa-border-style, solid); - border-width: var(--fa-border-width, 0.08em); - padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } - -.fa-pull-left { - float: left; - margin-right: var(--fa-pull-margin, 0.3em); } - -.fa-pull-right { - float: right; - margin-left: var(--fa-pull-margin, 0.3em); } - -.fa-beat { - animation-name: fa-beat; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } - -.fa-bounce { - animation-name: fa-bounce; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } - -.fa-fade { - animation-name: fa-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } - -.fa-beat-fade { - animation-name: fa-beat-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } - -.fa-flip { - animation-name: fa-flip; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } - -.fa-shake { - animation-name: fa-shake; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); } - -.fa-spin { - animation-name: fa-spin; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 2s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); } - -.fa-spin-reverse { - --fa-animation-direction: reverse; } - -.fa-pulse, -.fa-spin-pulse { - animation-name: fa-spin; - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, steps(8)); } - -@media (prefers-reduced-motion: reduce) { - .fa-beat, - .fa-bounce, - .fa-fade, - .fa-beat-fade, - .fa-flip, - .fa-pulse, - .fa-shake, - .fa-spin, - .fa-spin-pulse { - animation-delay: -1ms; - animation-duration: 1ms; - animation-iteration-count: 1; - transition-delay: 0s; - transition-duration: 0s; } } - -@keyframes fa-beat { - 0%, 90% { - transform: scale(1); } - 45% { - transform: scale(var(--fa-beat-scale, 1.25)); } } - -@keyframes fa-bounce { - 0% { - transform: scale(1, 1) translateY(0); } - 10% { - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } - 30% { - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } - 50% { - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } - 57% { - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } - 64% { - transform: scale(1, 1) translateY(0); } - 100% { - transform: scale(1, 1) translateY(0); } } - -@keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); } } - -@keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - transform: scale(1); } - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - -@keyframes fa-flip { - 50% { - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } - -@keyframes fa-shake { - 0% { - transform: rotate(-15deg); } - 4% { - transform: rotate(15deg); } - 8%, 24% { - transform: rotate(-18deg); } - 12%, 28% { - transform: rotate(18deg); } - 16% { - transform: rotate(-22deg); } - 20% { - transform: rotate(22deg); } - 32% { - transform: rotate(-12deg); } - 36% { - transform: rotate(12deg); } - 40%, 100% { - transform: rotate(0deg); } } - -@keyframes fa-spin { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(360deg); } } - -.fa-rotate-90 { - transform: rotate(90deg); } - -.fa-rotate-180 { - transform: rotate(180deg); } - -.fa-rotate-270 { - transform: rotate(270deg); } - -.fa-flip-horizontal { - transform: scale(-1, 1); } - -.fa-flip-vertical { - transform: scale(1, -1); } - -.fa-flip-both, -.fa-flip-horizontal.fa-flip-vertical { - transform: scale(-1, -1); } - -.fa-rotate-by { - transform: rotate(var(--fa-rotate-angle, 0)); } - -.fa-stack { - display: inline-block; - height: 2em; - line-height: 2em; - position: relative; - vertical-align: middle; - width: 2.5em; } - -.fa-stack-1x, -.fa-stack-2x { - left: 0; - position: absolute; - text-align: center; - width: 100%; - z-index: var(--fa-stack-z-index, auto); } - -.fa-stack-1x { - line-height: inherit; } - -.fa-stack-2x { - font-size: 2em; } - -.fa-inverse { - color: var(--fa-inverse, #fff); } - -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen -readers do not read off random characters that represent icons */ -.fa-0::before { - content: "\30"; } - -.fa-1::before { - content: "\31"; } - -.fa-2::before { - content: "\32"; } - -.fa-3::before { - content: "\33"; } - -.fa-4::before { - content: "\34"; } - -.fa-5::before { - content: "\35"; } - -.fa-6::before { - content: "\36"; } - -.fa-7::before { - content: "\37"; } - -.fa-8::before { - content: "\38"; } - -.fa-9::before { - content: "\39"; } - -.fa-fill-drip::before { - content: "\f576"; } - -.fa-arrows-to-circle::before { - content: "\e4bd"; } - -.fa-circle-chevron-right::before { - content: "\f138"; } - -.fa-chevron-circle-right::before { - content: "\f138"; } - -.fa-at::before { - content: "\40"; } - -.fa-trash-can::before { - content: "\f2ed"; } - -.fa-trash-alt::before { - content: "\f2ed"; } - -.fa-text-height::before { - content: "\f034"; } - -.fa-user-xmark::before { - content: "\f235"; } - -.fa-user-times::before { - content: "\f235"; } - -.fa-stethoscope::before { - content: "\f0f1"; } - -.fa-message::before { - content: "\f27a"; } - -.fa-comment-alt::before { - content: "\f27a"; } - -.fa-info::before { - content: "\f129"; } - -.fa-down-left-and-up-right-to-center::before { - content: "\f422"; } - -.fa-compress-alt::before { - content: "\f422"; } - -.fa-explosion::before { - content: "\e4e9"; } - -.fa-file-lines::before { - content: "\f15c"; } - -.fa-file-alt::before { - content: "\f15c"; } - -.fa-file-text::before { - content: "\f15c"; } - -.fa-wave-square::before { - content: "\f83e"; } - -.fa-ring::before { - content: "\f70b"; } - -.fa-building-un::before { - content: "\e4d9"; } - -.fa-dice-three::before { - content: "\f527"; } - -.fa-calendar-days::before { - content: "\f073"; } - -.fa-calendar-alt::before { - content: "\f073"; } - -.fa-anchor-circle-check::before { - content: "\e4aa"; } - -.fa-building-circle-arrow-right::before { - content: "\e4d1"; } - -.fa-volleyball::before { - content: "\f45f"; } - -.fa-volleyball-ball::before { - content: "\f45f"; } - -.fa-arrows-up-to-line::before { - content: "\e4c2"; } - -.fa-sort-down::before { - content: "\f0dd"; } - -.fa-sort-desc::before { - content: "\f0dd"; } - -.fa-circle-minus::before { - content: "\f056"; } - -.fa-minus-circle::before { - content: "\f056"; } - -.fa-door-open::before { - content: "\f52b"; } - -.fa-right-from-bracket::before { - content: "\f2f5"; } - -.fa-sign-out-alt::before { - content: "\f2f5"; } - -.fa-atom::before { - content: "\f5d2"; } - -.fa-soap::before { - content: "\e06e"; } - -.fa-icons::before { - content: "\f86d"; } - -.fa-heart-music-camera-bolt::before { - content: "\f86d"; } - -.fa-microphone-lines-slash::before { - content: "\f539"; } - -.fa-microphone-alt-slash::before { - content: "\f539"; } - -.fa-bridge-circle-check::before { - content: "\e4c9"; } - -.fa-pump-medical::before { - content: "\e06a"; } - -.fa-fingerprint::before { - content: "\f577"; } - -.fa-hand-point-right::before { - content: "\f0a4"; } - -.fa-magnifying-glass-location::before { - content: "\f689"; } - -.fa-search-location::before { - content: "\f689"; } - -.fa-forward-step::before { - content: "\f051"; } - -.fa-step-forward::before { - content: "\f051"; } - -.fa-face-smile-beam::before { - content: "\f5b8"; } - -.fa-smile-beam::before { - content: "\f5b8"; } - -.fa-flag-checkered::before { - content: "\f11e"; } - -.fa-football::before { - content: "\f44e"; } - -.fa-football-ball::before { - content: "\f44e"; } - -.fa-school-circle-exclamation::before { - content: "\e56c"; } - -.fa-crop::before { - content: "\f125"; } - -.fa-angles-down::before { - content: "\f103"; } - -.fa-angle-double-down::before { - content: "\f103"; } - -.fa-users-rectangle::before { - content: "\e594"; } - -.fa-people-roof::before { - content: "\e537"; } - -.fa-people-line::before { - content: "\e534"; } - -.fa-beer-mug-empty::before { - content: "\f0fc"; } - -.fa-beer::before { - content: "\f0fc"; } - -.fa-diagram-predecessor::before { - content: "\e477"; } - -.fa-arrow-up-long::before { - content: "\f176"; } - -.fa-long-arrow-up::before { - content: "\f176"; } - -.fa-fire-flame-simple::before { - content: "\f46a"; } - -.fa-burn::before { - content: "\f46a"; } - -.fa-person::before { - content: "\f183"; } - -.fa-male::before { - content: "\f183"; } - -.fa-laptop::before { - content: "\f109"; } - -.fa-file-csv::before { - content: "\f6dd"; } - -.fa-menorah::before { - content: "\f676"; } - -.fa-truck-plane::before { - content: "\e58f"; } - -.fa-record-vinyl::before { - content: "\f8d9"; } - -.fa-face-grin-stars::before { - content: "\f587"; } - -.fa-grin-stars::before { - content: "\f587"; } - -.fa-bong::before { - content: "\f55c"; } - -.fa-spaghetti-monster-flying::before { - content: "\f67b"; } - -.fa-pastafarianism::before { - content: "\f67b"; } - -.fa-arrow-down-up-across-line::before { - content: "\e4af"; } - -.fa-spoon::before { - content: "\f2e5"; } - -.fa-utensil-spoon::before { - content: "\f2e5"; } - -.fa-jar-wheat::before { - content: "\e517"; } - -.fa-envelopes-bulk::before { - content: "\f674"; } - -.fa-mail-bulk::before { - content: "\f674"; } - -.fa-file-circle-exclamation::before { - content: "\e4eb"; } - -.fa-circle-h::before { - content: "\f47e"; } - -.fa-hospital-symbol::before { - content: "\f47e"; } - -.fa-pager::before { - content: "\f815"; } - -.fa-address-book::before { - content: "\f2b9"; } - -.fa-contact-book::before { - content: "\f2b9"; } - -.fa-strikethrough::before { - content: "\f0cc"; } - -.fa-k::before { - content: "\4b"; } - -.fa-landmark-flag::before { - content: "\e51c"; } - -.fa-pencil::before { - content: "\f303"; } - -.fa-pencil-alt::before { - content: "\f303"; } - -.fa-backward::before { - content: "\f04a"; } - -.fa-caret-right::before { - content: "\f0da"; } - -.fa-comments::before { - content: "\f086"; } - -.fa-paste::before { - content: "\f0ea"; } - -.fa-file-clipboard::before { - content: "\f0ea"; } - -.fa-code-pull-request::before { - content: "\e13c"; } - -.fa-clipboard-list::before { - content: "\f46d"; } - -.fa-truck-ramp-box::before { - content: "\f4de"; } - -.fa-truck-loading::before { - content: "\f4de"; } - -.fa-user-check::before { - content: "\f4fc"; } - -.fa-vial-virus::before { - content: "\e597"; } - -.fa-sheet-plastic::before { - content: "\e571"; } - -.fa-blog::before { - content: "\f781"; } - -.fa-user-ninja::before { - content: "\f504"; } - -.fa-person-arrow-up-from-line::before { - content: "\e539"; } - -.fa-scroll-torah::before { - content: "\f6a0"; } - -.fa-torah::before { - content: "\f6a0"; } - -.fa-broom-ball::before { - content: "\f458"; } - -.fa-quidditch::before { - content: "\f458"; } - -.fa-quidditch-broom-ball::before { - content: "\f458"; } - -.fa-toggle-off::before { - content: "\f204"; } - -.fa-box-archive::before { - content: "\f187"; } - -.fa-archive::before { - content: "\f187"; } - -.fa-person-drowning::before { - content: "\e545"; } - -.fa-arrow-down-9-1::before { - content: "\f886"; } - -.fa-sort-numeric-desc::before { - content: "\f886"; } - -.fa-sort-numeric-down-alt::before { - content: "\f886"; } - -.fa-face-grin-tongue-squint::before { - content: "\f58a"; } - -.fa-grin-tongue-squint::before { - content: "\f58a"; } - -.fa-spray-can::before { - content: "\f5bd"; } - -.fa-truck-monster::before { - content: "\f63b"; } - -.fa-w::before { - content: "\57"; } - -.fa-earth-africa::before { - content: "\f57c"; } - -.fa-globe-africa::before { - content: "\f57c"; } - -.fa-rainbow::before { - content: "\f75b"; } - -.fa-circle-notch::before { - content: "\f1ce"; } - -.fa-tablet-screen-button::before { - content: "\f3fa"; } - -.fa-tablet-alt::before { - content: "\f3fa"; } - -.fa-paw::before { - content: "\f1b0"; } - -.fa-cloud::before { - content: "\f0c2"; } - -.fa-trowel-bricks::before { - content: "\e58a"; } - -.fa-face-flushed::before { - content: "\f579"; } - -.fa-flushed::before { - content: "\f579"; } - -.fa-hospital-user::before { - content: "\f80d"; } - -.fa-tent-arrow-left-right::before { - content: "\e57f"; } - -.fa-gavel::before { - content: "\f0e3"; } - -.fa-legal::before { - content: "\f0e3"; } - -.fa-binoculars::before { - content: "\f1e5"; } - -.fa-microphone-slash::before { - content: "\f131"; } - -.fa-box-tissue::before { - content: "\e05b"; } - -.fa-motorcycle::before { - content: "\f21c"; } - -.fa-bell-concierge::before { - content: "\f562"; } - -.fa-concierge-bell::before { - content: "\f562"; } - -.fa-pen-ruler::before { - content: "\f5ae"; } - -.fa-pencil-ruler::before { - content: "\f5ae"; } - -.fa-people-arrows::before { - content: "\e068"; } - -.fa-people-arrows-left-right::before { - content: "\e068"; } - -.fa-mars-and-venus-burst::before { - content: "\e523"; } - -.fa-square-caret-right::before { - content: "\f152"; } - -.fa-caret-square-right::before { - content: "\f152"; } - -.fa-scissors::before { - content: "\f0c4"; } - -.fa-cut::before { - content: "\f0c4"; } - -.fa-sun-plant-wilt::before { - content: "\e57a"; } - -.fa-toilets-portable::before { - content: "\e584"; } - -.fa-hockey-puck::before { - content: "\f453"; } - -.fa-table::before { - content: "\f0ce"; } - -.fa-magnifying-glass-arrow-right::before { - content: "\e521"; } - -.fa-tachograph-digital::before { - content: "\f566"; } - -.fa-digital-tachograph::before { - content: "\f566"; } - -.fa-users-slash::before { - content: "\e073"; } - -.fa-clover::before { - content: "\e139"; } - -.fa-reply::before { - content: "\f3e5"; } - -.fa-mail-reply::before { - content: "\f3e5"; } - -.fa-star-and-crescent::before { - content: "\f699"; } - -.fa-house-fire::before { - content: "\e50c"; } - -.fa-square-minus::before { - content: "\f146"; } - -.fa-minus-square::before { - content: "\f146"; } - -.fa-helicopter::before { - content: "\f533"; } - -.fa-compass::before { - content: "\f14e"; } - -.fa-square-caret-down::before { - content: "\f150"; } - -.fa-caret-square-down::before { - content: "\f150"; } - -.fa-file-circle-question::before { - content: "\e4ef"; } - -.fa-laptop-code::before { - content: "\f5fc"; } - -.fa-swatchbook::before { - content: "\f5c3"; } - -.fa-prescription-bottle::before { - content: "\f485"; } - -.fa-bars::before { - content: "\f0c9"; } - -.fa-navicon::before { - content: "\f0c9"; } - -.fa-people-group::before { - content: "\e533"; } - -.fa-hourglass-end::before { - content: "\f253"; } - -.fa-hourglass-3::before { - content: "\f253"; } - -.fa-heart-crack::before { - content: "\f7a9"; } - -.fa-heart-broken::before { - content: "\f7a9"; } - -.fa-square-up-right::before { - content: "\f360"; } - -.fa-external-link-square-alt::before { - content: "\f360"; } - -.fa-face-kiss-beam::before { - content: "\f597"; } - -.fa-kiss-beam::before { - content: "\f597"; } - -.fa-film::before { - content: "\f008"; } - -.fa-ruler-horizontal::before { - content: "\f547"; } - -.fa-people-robbery::before { - content: "\e536"; } - -.fa-lightbulb::before { - content: "\f0eb"; } - -.fa-caret-left::before { - content: "\f0d9"; } - -.fa-circle-exclamation::before { - content: "\f06a"; } - -.fa-exclamation-circle::before { - content: "\f06a"; } - -.fa-school-circle-xmark::before { - content: "\e56d"; } - -.fa-arrow-right-from-bracket::before { - content: "\f08b"; } - -.fa-sign-out::before { - content: "\f08b"; } - -.fa-circle-chevron-down::before { - content: "\f13a"; } - -.fa-chevron-circle-down::before { - content: "\f13a"; } - -.fa-unlock-keyhole::before { - content: "\f13e"; } - -.fa-unlock-alt::before { - content: "\f13e"; } - -.fa-cloud-showers-heavy::before { - content: "\f740"; } - -.fa-headphones-simple::before { - content: "\f58f"; } - -.fa-headphones-alt::before { - content: "\f58f"; } - -.fa-sitemap::before { - content: "\f0e8"; } - -.fa-circle-dollar-to-slot::before { - content: "\f4b9"; } - -.fa-donate::before { - content: "\f4b9"; } - -.fa-memory::before { - content: "\f538"; } - -.fa-road-spikes::before { - content: "\e568"; } - -.fa-fire-burner::before { - content: "\e4f1"; } - -.fa-flag::before { - content: "\f024"; } - -.fa-hanukiah::before { - content: "\f6e6"; } - -.fa-feather::before { - content: "\f52d"; } - -.fa-volume-low::before { - content: "\f027"; } - -.fa-volume-down::before { - content: "\f027"; } - -.fa-comment-slash::before { - content: "\f4b3"; } - -.fa-cloud-sun-rain::before { - content: "\f743"; } - -.fa-compress::before { - content: "\f066"; } - -.fa-wheat-awn::before { - content: "\e2cd"; } - -.fa-wheat-alt::before { - content: "\e2cd"; } - -.fa-ankh::before { - content: "\f644"; } - -.fa-hands-holding-child::before { - content: "\e4fa"; } - -.fa-asterisk::before { - content: "\2a"; } - -.fa-square-check::before { - content: "\f14a"; } - -.fa-check-square::before { - content: "\f14a"; } - -.fa-peseta-sign::before { - content: "\e221"; } - -.fa-heading::before { - content: "\f1dc"; } - -.fa-header::before { - content: "\f1dc"; } - -.fa-ghost::before { - content: "\f6e2"; } - -.fa-list::before { - content: "\f03a"; } - -.fa-list-squares::before { - content: "\f03a"; } - -.fa-square-phone-flip::before { - content: "\f87b"; } - -.fa-phone-square-alt::before { - content: "\f87b"; } - -.fa-cart-plus::before { - content: "\f217"; } - -.fa-gamepad::before { - content: "\f11b"; } - -.fa-circle-dot::before { - content: "\f192"; } - -.fa-dot-circle::before { - content: "\f192"; } - -.fa-face-dizzy::before { - content: "\f567"; } - -.fa-dizzy::before { - content: "\f567"; } - -.fa-egg::before { - content: "\f7fb"; } - -.fa-house-medical-circle-xmark::before { - content: "\e513"; } - -.fa-campground::before { - content: "\f6bb"; } - -.fa-folder-plus::before { - content: "\f65e"; } - -.fa-futbol::before { - content: "\f1e3"; } - -.fa-futbol-ball::before { - content: "\f1e3"; } - -.fa-soccer-ball::before { - content: "\f1e3"; } - -.fa-paintbrush::before { - content: "\f1fc"; } - -.fa-paint-brush::before { - content: "\f1fc"; } - -.fa-lock::before { - content: "\f023"; } - -.fa-gas-pump::before { - content: "\f52f"; } - -.fa-hot-tub-person::before { - content: "\f593"; } - -.fa-hot-tub::before { - content: "\f593"; } - -.fa-map-location::before { - content: "\f59f"; } - -.fa-map-marked::before { - content: "\f59f"; } - -.fa-house-flood-water::before { - content: "\e50e"; } - -.fa-tree::before { - content: "\f1bb"; } - -.fa-bridge-lock::before { - content: "\e4cc"; } - -.fa-sack-dollar::before { - content: "\f81d"; } - -.fa-pen-to-square::before { - content: "\f044"; } - -.fa-edit::before { - content: "\f044"; } - -.fa-car-side::before { - content: "\f5e4"; } - -.fa-share-nodes::before { - content: "\f1e0"; } - -.fa-share-alt::before { - content: "\f1e0"; } - -.fa-heart-circle-minus::before { - content: "\e4ff"; } - -.fa-hourglass-half::before { - content: "\f252"; } - -.fa-hourglass-2::before { - content: "\f252"; } - -.fa-microscope::before { - content: "\f610"; } - -.fa-sink::before { - content: "\e06d"; } - -.fa-bag-shopping::before { - content: "\f290"; } - -.fa-shopping-bag::before { - content: "\f290"; } - -.fa-arrow-down-z-a::before { - content: "\f881"; } - -.fa-sort-alpha-desc::before { - content: "\f881"; } - -.fa-sort-alpha-down-alt::before { - content: "\f881"; } - -.fa-mitten::before { - content: "\f7b5"; } - -.fa-person-rays::before { - content: "\e54d"; } - -.fa-users::before { - content: "\f0c0"; } - -.fa-eye-slash::before { - content: "\f070"; } - -.fa-flask-vial::before { - content: "\e4f3"; } - -.fa-hand::before { - content: "\f256"; } - -.fa-hand-paper::before { - content: "\f256"; } - -.fa-om::before { - content: "\f679"; } - -.fa-worm::before { - content: "\e599"; } - -.fa-house-circle-xmark::before { - content: "\e50b"; } - -.fa-plug::before { - content: "\f1e6"; } - -.fa-chevron-up::before { - content: "\f077"; } - -.fa-hand-spock::before { - content: "\f259"; } - -.fa-stopwatch::before { - content: "\f2f2"; } - -.fa-face-kiss::before { - content: "\f596"; } - -.fa-kiss::before { - content: "\f596"; } - -.fa-bridge-circle-xmark::before { - content: "\e4cb"; } - -.fa-face-grin-tongue::before { - content: "\f589"; } - -.fa-grin-tongue::before { - content: "\f589"; } - -.fa-chess-bishop::before { - content: "\f43a"; } - -.fa-face-grin-wink::before { - content: "\f58c"; } - -.fa-grin-wink::before { - content: "\f58c"; } - -.fa-ear-deaf::before { - content: "\f2a4"; } - -.fa-deaf::before { - content: "\f2a4"; } - -.fa-deafness::before { - content: "\f2a4"; } - -.fa-hard-of-hearing::before { - content: "\f2a4"; } - -.fa-road-circle-check::before { - content: "\e564"; } - -.fa-dice-five::before { - content: "\f523"; } - -.fa-square-rss::before { - content: "\f143"; } - -.fa-rss-square::before { - content: "\f143"; } - -.fa-land-mine-on::before { - content: "\e51b"; } - -.fa-i-cursor::before { - content: "\f246"; } - -.fa-stamp::before { - content: "\f5bf"; } - -.fa-stairs::before { - content: "\e289"; } - -.fa-i::before { - content: "\49"; } - -.fa-hryvnia-sign::before { - content: "\f6f2"; } - -.fa-hryvnia::before { - content: "\f6f2"; } - -.fa-pills::before { - content: "\f484"; } - -.fa-face-grin-wide::before { - content: "\f581"; } - -.fa-grin-alt::before { - content: "\f581"; } - -.fa-tooth::before { - content: "\f5c9"; } - -.fa-v::before { - content: "\56"; } - -.fa-bangladeshi-taka-sign::before { - content: "\e2e6"; } - -.fa-bicycle::before { - content: "\f206"; } - -.fa-staff-snake::before { - content: "\e579"; } - -.fa-rod-asclepius::before { - content: "\e579"; } - -.fa-rod-snake::before { - content: "\e579"; } - -.fa-staff-aesculapius::before { - content: "\e579"; } - -.fa-head-side-cough-slash::before { - content: "\e062"; } - -.fa-truck-medical::before { - content: "\f0f9"; } - -.fa-ambulance::before { - content: "\f0f9"; } - -.fa-wheat-awn-circle-exclamation::before { - content: "\e598"; } - -.fa-snowman::before { - content: "\f7d0"; } - -.fa-mortar-pestle::before { - content: "\f5a7"; } - -.fa-road-barrier::before { - content: "\e562"; } - -.fa-school::before { - content: "\f549"; } - -.fa-igloo::before { - content: "\f7ae"; } - -.fa-joint::before { - content: "\f595"; } - -.fa-angle-right::before { - content: "\f105"; } - -.fa-horse::before { - content: "\f6f0"; } - -.fa-q::before { - content: "\51"; } - -.fa-g::before { - content: "\47"; } - -.fa-notes-medical::before { - content: "\f481"; } - -.fa-temperature-half::before { - content: "\f2c9"; } - -.fa-temperature-2::before { - content: "\f2c9"; } - -.fa-thermometer-2::before { - content: "\f2c9"; } - -.fa-thermometer-half::before { - content: "\f2c9"; } - -.fa-dong-sign::before { - content: "\e169"; } - -.fa-capsules::before { - content: "\f46b"; } - -.fa-poo-storm::before { - content: "\f75a"; } - -.fa-poo-bolt::before { - content: "\f75a"; } - -.fa-face-frown-open::before { - content: "\f57a"; } - -.fa-frown-open::before { - content: "\f57a"; } - -.fa-hand-point-up::before { - content: "\f0a6"; } - -.fa-money-bill::before { - content: "\f0d6"; } - -.fa-bookmark::before { - content: "\f02e"; } - -.fa-align-justify::before { - content: "\f039"; } - -.fa-umbrella-beach::before { - content: "\f5ca"; } - -.fa-helmet-un::before { - content: "\e503"; } - -.fa-bullseye::before { - content: "\f140"; } - -.fa-bacon::before { - content: "\f7e5"; } - -.fa-hand-point-down::before { - content: "\f0a7"; } - -.fa-arrow-up-from-bracket::before { - content: "\e09a"; } - -.fa-folder::before { - content: "\f07b"; } - -.fa-folder-blank::before { - content: "\f07b"; } - -.fa-file-waveform::before { - content: "\f478"; } - -.fa-file-medical-alt::before { - content: "\f478"; } - -.fa-radiation::before { - content: "\f7b9"; } - -.fa-chart-simple::before { - content: "\e473"; } - -.fa-mars-stroke::before { - content: "\f229"; } - -.fa-vial::before { - content: "\f492"; } - -.fa-gauge::before { - content: "\f624"; } - -.fa-dashboard::before { - content: "\f624"; } - -.fa-gauge-med::before { - content: "\f624"; } - -.fa-tachometer-alt-average::before { - content: "\f624"; } - -.fa-wand-magic-sparkles::before { - content: "\e2ca"; } - -.fa-magic-wand-sparkles::before { - content: "\e2ca"; } - -.fa-e::before { - content: "\45"; } - -.fa-pen-clip::before { - content: "\f305"; } - -.fa-pen-alt::before { - content: "\f305"; } - -.fa-bridge-circle-exclamation::before { - content: "\e4ca"; } - -.fa-user::before { - content: "\f007"; } - -.fa-school-circle-check::before { - content: "\e56b"; } - -.fa-dumpster::before { - content: "\f793"; } - -.fa-van-shuttle::before { - content: "\f5b6"; } - -.fa-shuttle-van::before { - content: "\f5b6"; } - -.fa-building-user::before { - content: "\e4da"; } - -.fa-square-caret-left::before { - content: "\f191"; } - -.fa-caret-square-left::before { - content: "\f191"; } - -.fa-highlighter::before { - content: "\f591"; } - -.fa-key::before { - content: "\f084"; } - -.fa-bullhorn::before { - content: "\f0a1"; } - -.fa-globe::before { - content: "\f0ac"; } - -.fa-synagogue::before { - content: "\f69b"; } - -.fa-person-half-dress::before { - content: "\e548"; } - -.fa-road-bridge::before { - content: "\e563"; } - -.fa-location-arrow::before { - content: "\f124"; } - -.fa-c::before { - content: "\43"; } - -.fa-tablet-button::before { - content: "\f10a"; } - -.fa-building-lock::before { - content: "\e4d6"; } - -.fa-pizza-slice::before { - content: "\f818"; } - -.fa-money-bill-wave::before { - content: "\f53a"; } - -.fa-chart-area::before { - content: "\f1fe"; } - -.fa-area-chart::before { - content: "\f1fe"; } - -.fa-house-flag::before { - content: "\e50d"; } - -.fa-person-circle-minus::before { - content: "\e540"; } - -.fa-ban::before { - content: "\f05e"; } - -.fa-cancel::before { - content: "\f05e"; } - -.fa-camera-rotate::before { - content: "\e0d8"; } - -.fa-spray-can-sparkles::before { - content: "\f5d0"; } - -.fa-air-freshener::before { - content: "\f5d0"; } - -.fa-star::before { - content: "\f005"; } - -.fa-repeat::before { - content: "\f363"; } - -.fa-cross::before { - content: "\f654"; } - -.fa-box::before { - content: "\f466"; } - -.fa-venus-mars::before { - content: "\f228"; } - -.fa-arrow-pointer::before { - content: "\f245"; } - -.fa-mouse-pointer::before { - content: "\f245"; } - -.fa-maximize::before { - content: "\f31e"; } - -.fa-expand-arrows-alt::before { - content: "\f31e"; } - -.fa-charging-station::before { - content: "\f5e7"; } - -.fa-shapes::before { - content: "\f61f"; } - -.fa-triangle-circle-square::before { - content: "\f61f"; } - -.fa-shuffle::before { - content: "\f074"; } - -.fa-random::before { - content: "\f074"; } - -.fa-person-running::before { - content: "\f70c"; } - -.fa-running::before { - content: "\f70c"; } - -.fa-mobile-retro::before { - content: "\e527"; } - -.fa-grip-lines-vertical::before { - content: "\f7a5"; } - -.fa-spider::before { - content: "\f717"; } - -.fa-hands-bound::before { - content: "\e4f9"; } - -.fa-file-invoice-dollar::before { - content: "\f571"; } - -.fa-plane-circle-exclamation::before { - content: "\e556"; } - -.fa-x-ray::before { - content: "\f497"; } - -.fa-spell-check::before { - content: "\f891"; } - -.fa-slash::before { - content: "\f715"; } - -.fa-computer-mouse::before { - content: "\f8cc"; } - -.fa-mouse::before { - content: "\f8cc"; } - -.fa-arrow-right-to-bracket::before { - content: "\f090"; } - -.fa-sign-in::before { - content: "\f090"; } - -.fa-shop-slash::before { - content: "\e070"; } - -.fa-store-alt-slash::before { - content: "\e070"; } - -.fa-server::before { - content: "\f233"; } - -.fa-virus-covid-slash::before { - content: "\e4a9"; } - -.fa-shop-lock::before { - content: "\e4a5"; } - -.fa-hourglass-start::before { - content: "\f251"; } - -.fa-hourglass-1::before { - content: "\f251"; } - -.fa-blender-phone::before { - content: "\f6b6"; } - -.fa-building-wheat::before { - content: "\e4db"; } - -.fa-person-breastfeeding::before { - content: "\e53a"; } - -.fa-right-to-bracket::before { - content: "\f2f6"; } - -.fa-sign-in-alt::before { - content: "\f2f6"; } - -.fa-venus::before { - content: "\f221"; } - -.fa-passport::before { - content: "\f5ab"; } - -.fa-heart-pulse::before { - content: "\f21e"; } - -.fa-heartbeat::before { - content: "\f21e"; } - -.fa-people-carry-box::before { - content: "\f4ce"; } - -.fa-people-carry::before { - content: "\f4ce"; } - -.fa-temperature-high::before { - content: "\f769"; } - -.fa-microchip::before { - content: "\f2db"; } - -.fa-crown::before { - content: "\f521"; } - -.fa-weight-hanging::before { - content: "\f5cd"; } - -.fa-xmarks-lines::before { - content: "\e59a"; } - -.fa-file-prescription::before { - content: "\f572"; } - -.fa-weight-scale::before { - content: "\f496"; } - -.fa-weight::before { - content: "\f496"; } - -.fa-user-group::before { - content: "\f500"; } - -.fa-user-friends::before { - content: "\f500"; } - -.fa-arrow-up-a-z::before { - content: "\f15e"; } - -.fa-sort-alpha-up::before { - content: "\f15e"; } - -.fa-chess-knight::before { - content: "\f441"; } - -.fa-face-laugh-squint::before { - content: "\f59b"; } - -.fa-laugh-squint::before { - content: "\f59b"; } - -.fa-wheelchair::before { - content: "\f193"; } - -.fa-circle-arrow-up::before { - content: "\f0aa"; } - -.fa-arrow-circle-up::before { - content: "\f0aa"; } - -.fa-toggle-on::before { - content: "\f205"; } - -.fa-person-walking::before { - content: "\f554"; } - -.fa-walking::before { - content: "\f554"; } - -.fa-l::before { - content: "\4c"; } - -.fa-fire::before { - content: "\f06d"; } - -.fa-bed-pulse::before { - content: "\f487"; } - -.fa-procedures::before { - content: "\f487"; } - -.fa-shuttle-space::before { - content: "\f197"; } - -.fa-space-shuttle::before { - content: "\f197"; } - -.fa-face-laugh::before { - content: "\f599"; } - -.fa-laugh::before { - content: "\f599"; } - -.fa-folder-open::before { - content: "\f07c"; } - -.fa-heart-circle-plus::before { - content: "\e500"; } - -.fa-code-fork::before { - content: "\e13b"; } - -.fa-city::before { - content: "\f64f"; } - -.fa-microphone-lines::before { - content: "\f3c9"; } - -.fa-microphone-alt::before { - content: "\f3c9"; } - -.fa-pepper-hot::before { - content: "\f816"; } - -.fa-unlock::before { - content: "\f09c"; } - -.fa-colon-sign::before { - content: "\e140"; } - -.fa-headset::before { - content: "\f590"; } - -.fa-store-slash::before { - content: "\e071"; } - -.fa-road-circle-xmark::before { - content: "\e566"; } - -.fa-user-minus::before { - content: "\f503"; } - -.fa-mars-stroke-up::before { - content: "\f22a"; } - -.fa-mars-stroke-v::before { - content: "\f22a"; } - -.fa-champagne-glasses::before { - content: "\f79f"; } - -.fa-glass-cheers::before { - content: "\f79f"; } - -.fa-clipboard::before { - content: "\f328"; } - -.fa-house-circle-exclamation::before { - content: "\e50a"; } - -.fa-file-arrow-up::before { - content: "\f574"; } - -.fa-file-upload::before { - content: "\f574"; } - -.fa-wifi::before { - content: "\f1eb"; } - -.fa-wifi-3::before { - content: "\f1eb"; } - -.fa-wifi-strong::before { - content: "\f1eb"; } - -.fa-bath::before { - content: "\f2cd"; } - -.fa-bathtub::before { - content: "\f2cd"; } - -.fa-underline::before { - content: "\f0cd"; } - -.fa-user-pen::before { - content: "\f4ff"; } - -.fa-user-edit::before { - content: "\f4ff"; } - -.fa-signature::before { - content: "\f5b7"; } - -.fa-stroopwafel::before { - content: "\f551"; } - -.fa-bold::before { - content: "\f032"; } - -.fa-anchor-lock::before { - content: "\e4ad"; } - -.fa-building-ngo::before { - content: "\e4d7"; } - -.fa-manat-sign::before { - content: "\e1d5"; } - -.fa-not-equal::before { - content: "\f53e"; } - -.fa-border-top-left::before { - content: "\f853"; } - -.fa-border-style::before { - content: "\f853"; } - -.fa-map-location-dot::before { - content: "\f5a0"; } - -.fa-map-marked-alt::before { - content: "\f5a0"; } - -.fa-jedi::before { - content: "\f669"; } - -.fa-square-poll-vertical::before { - content: "\f681"; } - -.fa-poll::before { - content: "\f681"; } - -.fa-mug-hot::before { - content: "\f7b6"; } - -.fa-car-battery::before { - content: "\f5df"; } - -.fa-battery-car::before { - content: "\f5df"; } - -.fa-gift::before { - content: "\f06b"; } - -.fa-dice-two::before { - content: "\f528"; } - -.fa-chess-queen::before { - content: "\f445"; } - -.fa-glasses::before { - content: "\f530"; } - -.fa-chess-board::before { - content: "\f43c"; } - -.fa-building-circle-check::before { - content: "\e4d2"; } - -.fa-person-chalkboard::before { - content: "\e53d"; } - -.fa-mars-stroke-right::before { - content: "\f22b"; } - -.fa-mars-stroke-h::before { - content: "\f22b"; } - -.fa-hand-back-fist::before { - content: "\f255"; } - -.fa-hand-rock::before { - content: "\f255"; } - -.fa-square-caret-up::before { - content: "\f151"; } - -.fa-caret-square-up::before { - content: "\f151"; } - -.fa-cloud-showers-water::before { - content: "\e4e4"; } - -.fa-chart-bar::before { - content: "\f080"; } - -.fa-bar-chart::before { - content: "\f080"; } - -.fa-hands-bubbles::before { - content: "\e05e"; } - -.fa-hands-wash::before { - content: "\e05e"; } - -.fa-less-than-equal::before { - content: "\f537"; } - -.fa-train::before { - content: "\f238"; } - -.fa-eye-low-vision::before { - content: "\f2a8"; } - -.fa-low-vision::before { - content: "\f2a8"; } - -.fa-crow::before { - content: "\f520"; } - -.fa-sailboat::before { - content: "\e445"; } - -.fa-window-restore::before { - content: "\f2d2"; } - -.fa-square-plus::before { - content: "\f0fe"; } - -.fa-plus-square::before { - content: "\f0fe"; } - -.fa-torii-gate::before { - content: "\f6a1"; } - -.fa-frog::before { - content: "\f52e"; } - -.fa-bucket::before { - content: "\e4cf"; } - -.fa-image::before { - content: "\f03e"; } - -.fa-microphone::before { - content: "\f130"; } - -.fa-cow::before { - content: "\f6c8"; } - -.fa-caret-up::before { - content: "\f0d8"; } - -.fa-screwdriver::before { - content: "\f54a"; } - -.fa-folder-closed::before { - content: "\e185"; } - -.fa-house-tsunami::before { - content: "\e515"; } - -.fa-square-nfi::before { - content: "\e576"; } - -.fa-arrow-up-from-ground-water::before { - content: "\e4b5"; } - -.fa-martini-glass::before { - content: "\f57b"; } - -.fa-glass-martini-alt::before { - content: "\f57b"; } - -.fa-rotate-left::before { - content: "\f2ea"; } - -.fa-rotate-back::before { - content: "\f2ea"; } - -.fa-rotate-backward::before { - content: "\f2ea"; } - -.fa-undo-alt::before { - content: "\f2ea"; } - -.fa-table-columns::before { - content: "\f0db"; } - -.fa-columns::before { - content: "\f0db"; } - -.fa-lemon::before { - content: "\f094"; } - -.fa-head-side-mask::before { - content: "\e063"; } - -.fa-handshake::before { - content: "\f2b5"; } - -.fa-gem::before { - content: "\f3a5"; } - -.fa-dolly::before { - content: "\f472"; } - -.fa-dolly-box::before { - content: "\f472"; } - -.fa-smoking::before { - content: "\f48d"; } - -.fa-minimize::before { - content: "\f78c"; } - -.fa-compress-arrows-alt::before { - content: "\f78c"; } - -.fa-monument::before { - content: "\f5a6"; } - -.fa-snowplow::before { - content: "\f7d2"; } - -.fa-angles-right::before { - content: "\f101"; } - -.fa-angle-double-right::before { - content: "\f101"; } - -.fa-cannabis::before { - content: "\f55f"; } - -.fa-circle-play::before { - content: "\f144"; } - -.fa-play-circle::before { - content: "\f144"; } - -.fa-tablets::before { - content: "\f490"; } - -.fa-ethernet::before { - content: "\f796"; } - -.fa-euro-sign::before { - content: "\f153"; } - -.fa-eur::before { - content: "\f153"; } - -.fa-euro::before { - content: "\f153"; } - -.fa-chair::before { - content: "\f6c0"; } - -.fa-circle-check::before { - content: "\f058"; } - -.fa-check-circle::before { - content: "\f058"; } - -.fa-circle-stop::before { - content: "\f28d"; } - -.fa-stop-circle::before { - content: "\f28d"; } - -.fa-compass-drafting::before { - content: "\f568"; } - -.fa-drafting-compass::before { - content: "\f568"; } - -.fa-plate-wheat::before { - content: "\e55a"; } - -.fa-icicles::before { - content: "\f7ad"; } - -.fa-person-shelter::before { - content: "\e54f"; } - -.fa-neuter::before { - content: "\f22c"; } - -.fa-id-badge::before { - content: "\f2c1"; } - -.fa-marker::before { - content: "\f5a1"; } - -.fa-face-laugh-beam::before { - content: "\f59a"; } - -.fa-laugh-beam::before { - content: "\f59a"; } - -.fa-helicopter-symbol::before { - content: "\e502"; } - -.fa-universal-access::before { - content: "\f29a"; } - -.fa-circle-chevron-up::before { - content: "\f139"; } - -.fa-chevron-circle-up::before { - content: "\f139"; } - -.fa-lari-sign::before { - content: "\e1c8"; } - -.fa-volcano::before { - content: "\f770"; } - -.fa-person-walking-dashed-line-arrow-right::before { - content: "\e553"; } - -.fa-sterling-sign::before { - content: "\f154"; } - -.fa-gbp::before { - content: "\f154"; } - -.fa-pound-sign::before { - content: "\f154"; } - -.fa-viruses::before { - content: "\e076"; } - -.fa-square-person-confined::before { - content: "\e577"; } - -.fa-user-tie::before { - content: "\f508"; } - -.fa-arrow-down-long::before { - content: "\f175"; } - -.fa-long-arrow-down::before { - content: "\f175"; } - -.fa-tent-arrow-down-to-line::before { - content: "\e57e"; } - -.fa-certificate::before { - content: "\f0a3"; } - -.fa-reply-all::before { - content: "\f122"; } - -.fa-mail-reply-all::before { - content: "\f122"; } - -.fa-suitcase::before { - content: "\f0f2"; } - -.fa-person-skating::before { - content: "\f7c5"; } - -.fa-skating::before { - content: "\f7c5"; } - -.fa-filter-circle-dollar::before { - content: "\f662"; } - -.fa-funnel-dollar::before { - content: "\f662"; } - -.fa-camera-retro::before { - content: "\f083"; } - -.fa-circle-arrow-down::before { - content: "\f0ab"; } - -.fa-arrow-circle-down::before { - content: "\f0ab"; } - -.fa-file-import::before { - content: "\f56f"; } - -.fa-arrow-right-to-file::before { - content: "\f56f"; } - -.fa-square-arrow-up-right::before { - content: "\f14c"; } - -.fa-external-link-square::before { - content: "\f14c"; } - -.fa-box-open::before { - content: "\f49e"; } - -.fa-scroll::before { - content: "\f70e"; } - -.fa-spa::before { - content: "\f5bb"; } - -.fa-location-pin-lock::before { - content: "\e51f"; } - -.fa-pause::before { - content: "\f04c"; } - -.fa-hill-avalanche::before { - content: "\e507"; } - -.fa-temperature-empty::before { - content: "\f2cb"; } - -.fa-temperature-0::before { - content: "\f2cb"; } - -.fa-thermometer-0::before { - content: "\f2cb"; } - -.fa-thermometer-empty::before { - content: "\f2cb"; } - -.fa-bomb::before { - content: "\f1e2"; } - -.fa-registered::before { - content: "\f25d"; } - -.fa-address-card::before { - content: "\f2bb"; } - -.fa-contact-card::before { - content: "\f2bb"; } - -.fa-vcard::before { - content: "\f2bb"; } - -.fa-scale-unbalanced-flip::before { - content: "\f516"; } - -.fa-balance-scale-right::before { - content: "\f516"; } - -.fa-subscript::before { - content: "\f12c"; } - -.fa-diamond-turn-right::before { - content: "\f5eb"; } - -.fa-directions::before { - content: "\f5eb"; } - -.fa-burst::before { - content: "\e4dc"; } - -.fa-house-laptop::before { - content: "\e066"; } - -.fa-laptop-house::before { - content: "\e066"; } - -.fa-face-tired::before { - content: "\f5c8"; } - -.fa-tired::before { - content: "\f5c8"; } - -.fa-money-bills::before { - content: "\e1f3"; } - -.fa-smog::before { - content: "\f75f"; } - -.fa-crutch::before { - content: "\f7f7"; } - -.fa-cloud-arrow-up::before { - content: "\f0ee"; } - -.fa-cloud-upload::before { - content: "\f0ee"; } - -.fa-cloud-upload-alt::before { - content: "\f0ee"; } - -.fa-palette::before { - content: "\f53f"; } - -.fa-arrows-turn-right::before { - content: "\e4c0"; } - -.fa-vest::before { - content: "\e085"; } - -.fa-ferry::before { - content: "\e4ea"; } - -.fa-arrows-down-to-people::before { - content: "\e4b9"; } - -.fa-seedling::before { - content: "\f4d8"; } - -.fa-sprout::before { - content: "\f4d8"; } - -.fa-left-right::before { - content: "\f337"; } - -.fa-arrows-alt-h::before { - content: "\f337"; } - -.fa-boxes-packing::before { - content: "\e4c7"; } - -.fa-circle-arrow-left::before { - content: "\f0a8"; } - -.fa-arrow-circle-left::before { - content: "\f0a8"; } - -.fa-group-arrows-rotate::before { - content: "\e4f6"; } - -.fa-bowl-food::before { - content: "\e4c6"; } - -.fa-candy-cane::before { - content: "\f786"; } - -.fa-arrow-down-wide-short::before { - content: "\f160"; } - -.fa-sort-amount-asc::before { - content: "\f160"; } - -.fa-sort-amount-down::before { - content: "\f160"; } - -.fa-cloud-bolt::before { - content: "\f76c"; } - -.fa-thunderstorm::before { - content: "\f76c"; } - -.fa-text-slash::before { - content: "\f87d"; } - -.fa-remove-format::before { - content: "\f87d"; } - -.fa-face-smile-wink::before { - content: "\f4da"; } - -.fa-smile-wink::before { - content: "\f4da"; } - -.fa-file-word::before { - content: "\f1c2"; } - -.fa-file-powerpoint::before { - content: "\f1c4"; } - -.fa-arrows-left-right::before { - content: "\f07e"; } - -.fa-arrows-h::before { - content: "\f07e"; } - -.fa-house-lock::before { - content: "\e510"; } - -.fa-cloud-arrow-down::before { - content: "\f0ed"; } - -.fa-cloud-download::before { - content: "\f0ed"; } - -.fa-cloud-download-alt::before { - content: "\f0ed"; } - -.fa-children::before { - content: "\e4e1"; } - -.fa-chalkboard::before { - content: "\f51b"; } - -.fa-blackboard::before { - content: "\f51b"; } - -.fa-user-large-slash::before { - content: "\f4fa"; } - -.fa-user-alt-slash::before { - content: "\f4fa"; } - -.fa-envelope-open::before { - content: "\f2b6"; } - -.fa-handshake-simple-slash::before { - content: "\e05f"; } - -.fa-handshake-alt-slash::before { - content: "\e05f"; } - -.fa-mattress-pillow::before { - content: "\e525"; } - -.fa-guarani-sign::before { - content: "\e19a"; } - -.fa-arrows-rotate::before { - content: "\f021"; } - -.fa-refresh::before { - content: "\f021"; } - -.fa-sync::before { - content: "\f021"; } - -.fa-fire-extinguisher::before { - content: "\f134"; } - -.fa-cruzeiro-sign::before { - content: "\e152"; } - -.fa-greater-than-equal::before { - content: "\f532"; } - -.fa-shield-halved::before { - content: "\f3ed"; } - -.fa-shield-alt::before { - content: "\f3ed"; } - -.fa-book-atlas::before { - content: "\f558"; } - -.fa-atlas::before { - content: "\f558"; } - -.fa-virus::before { - content: "\e074"; } - -.fa-envelope-circle-check::before { - content: "\e4e8"; } - -.fa-layer-group::before { - content: "\f5fd"; } - -.fa-arrows-to-dot::before { - content: "\e4be"; } - -.fa-archway::before { - content: "\f557"; } - -.fa-heart-circle-check::before { - content: "\e4fd"; } - -.fa-house-chimney-crack::before { - content: "\f6f1"; } - -.fa-house-damage::before { - content: "\f6f1"; } - -.fa-file-zipper::before { - content: "\f1c6"; } - -.fa-file-archive::before { - content: "\f1c6"; } - -.fa-square::before { - content: "\f0c8"; } - -.fa-martini-glass-empty::before { - content: "\f000"; } - -.fa-glass-martini::before { - content: "\f000"; } - -.fa-couch::before { - content: "\f4b8"; } - -.fa-cedi-sign::before { - content: "\e0df"; } - -.fa-italic::before { - content: "\f033"; } - -.fa-table-cells-column-lock::before { - content: "\e678"; } - -.fa-church::before { - content: "\f51d"; } - -.fa-comments-dollar::before { - content: "\f653"; } - -.fa-democrat::before { - content: "\f747"; } - -.fa-z::before { - content: "\5a"; } - -.fa-person-skiing::before { - content: "\f7c9"; } - -.fa-skiing::before { - content: "\f7c9"; } - -.fa-road-lock::before { - content: "\e567"; } - -.fa-a::before { - content: "\41"; } - -.fa-temperature-arrow-down::before { - content: "\e03f"; } - -.fa-temperature-down::before { - content: "\e03f"; } - -.fa-feather-pointed::before { - content: "\f56b"; } - -.fa-feather-alt::before { - content: "\f56b"; } - -.fa-p::before { - content: "\50"; } - -.fa-snowflake::before { - content: "\f2dc"; } - -.fa-newspaper::before { - content: "\f1ea"; } - -.fa-rectangle-ad::before { - content: "\f641"; } - -.fa-ad::before { - content: "\f641"; } - -.fa-circle-arrow-right::before { - content: "\f0a9"; } - -.fa-arrow-circle-right::before { - content: "\f0a9"; } - -.fa-filter-circle-xmark::before { - content: "\e17b"; } - -.fa-locust::before { - content: "\e520"; } - -.fa-sort::before { - content: "\f0dc"; } - -.fa-unsorted::before { - content: "\f0dc"; } - -.fa-list-ol::before { - content: "\f0cb"; } - -.fa-list-1-2::before { - content: "\f0cb"; } - -.fa-list-numeric::before { - content: "\f0cb"; } - -.fa-person-dress-burst::before { - content: "\e544"; } - -.fa-money-check-dollar::before { - content: "\f53d"; } - -.fa-money-check-alt::before { - content: "\f53d"; } - -.fa-vector-square::before { - content: "\f5cb"; } - -.fa-bread-slice::before { - content: "\f7ec"; } - -.fa-language::before { - content: "\f1ab"; } - -.fa-face-kiss-wink-heart::before { - content: "\f598"; } - -.fa-kiss-wink-heart::before { - content: "\f598"; } - -.fa-filter::before { - content: "\f0b0"; } - -.fa-question::before { - content: "\3f"; } - -.fa-file-signature::before { - content: "\f573"; } - -.fa-up-down-left-right::before { - content: "\f0b2"; } - -.fa-arrows-alt::before { - content: "\f0b2"; } - -.fa-house-chimney-user::before { - content: "\e065"; } - -.fa-hand-holding-heart::before { - content: "\f4be"; } - -.fa-puzzle-piece::before { - content: "\f12e"; } - -.fa-money-check::before { - content: "\f53c"; } - -.fa-star-half-stroke::before { - content: "\f5c0"; } - -.fa-star-half-alt::before { - content: "\f5c0"; } - -.fa-code::before { - content: "\f121"; } - -.fa-whiskey-glass::before { - content: "\f7a0"; } - -.fa-glass-whiskey::before { - content: "\f7a0"; } - -.fa-building-circle-exclamation::before { - content: "\e4d3"; } - -.fa-magnifying-glass-chart::before { - content: "\e522"; } - -.fa-arrow-up-right-from-square::before { - content: "\f08e"; } - -.fa-external-link::before { - content: "\f08e"; } - -.fa-cubes-stacked::before { - content: "\e4e6"; } - -.fa-won-sign::before { - content: "\f159"; } - -.fa-krw::before { - content: "\f159"; } - -.fa-won::before { - content: "\f159"; } - -.fa-virus-covid::before { - content: "\e4a8"; } - -.fa-austral-sign::before { - content: "\e0a9"; } - -.fa-f::before { - content: "\46"; } - -.fa-leaf::before { - content: "\f06c"; } - -.fa-road::before { - content: "\f018"; } - -.fa-taxi::before { - content: "\f1ba"; } - -.fa-cab::before { - content: "\f1ba"; } - -.fa-person-circle-plus::before { - content: "\e541"; } - -.fa-chart-pie::before { - content: "\f200"; } - -.fa-pie-chart::before { - content: "\f200"; } - -.fa-bolt-lightning::before { - content: "\e0b7"; } - -.fa-sack-xmark::before { - content: "\e56a"; } - -.fa-file-excel::before { - content: "\f1c3"; } - -.fa-file-contract::before { - content: "\f56c"; } - -.fa-fish-fins::before { - content: "\e4f2"; } - -.fa-building-flag::before { - content: "\e4d5"; } - -.fa-face-grin-beam::before { - content: "\f582"; } - -.fa-grin-beam::before { - content: "\f582"; } - -.fa-object-ungroup::before { - content: "\f248"; } - -.fa-poop::before { - content: "\f619"; } - -.fa-location-pin::before { - content: "\f041"; } - -.fa-map-marker::before { - content: "\f041"; } - -.fa-kaaba::before { - content: "\f66b"; } - -.fa-toilet-paper::before { - content: "\f71e"; } - -.fa-helmet-safety::before { - content: "\f807"; } - -.fa-hard-hat::before { - content: "\f807"; } - -.fa-hat-hard::before { - content: "\f807"; } - -.fa-eject::before { - content: "\f052"; } - -.fa-circle-right::before { - content: "\f35a"; } - -.fa-arrow-alt-circle-right::before { - content: "\f35a"; } - -.fa-plane-circle-check::before { - content: "\e555"; } - -.fa-face-rolling-eyes::before { - content: "\f5a5"; } - -.fa-meh-rolling-eyes::before { - content: "\f5a5"; } - -.fa-object-group::before { - content: "\f247"; } - -.fa-chart-line::before { - content: "\f201"; } - -.fa-line-chart::before { - content: "\f201"; } - -.fa-mask-ventilator::before { - content: "\e524"; } - -.fa-arrow-right::before { - content: "\f061"; } - -.fa-signs-post::before { - content: "\f277"; } - -.fa-map-signs::before { - content: "\f277"; } - -.fa-cash-register::before { - content: "\f788"; } - -.fa-person-circle-question::before { - content: "\e542"; } - -.fa-h::before { - content: "\48"; } - -.fa-tarp::before { - content: "\e57b"; } - -.fa-screwdriver-wrench::before { - content: "\f7d9"; } - -.fa-tools::before { - content: "\f7d9"; } - -.fa-arrows-to-eye::before { - content: "\e4bf"; } - -.fa-plug-circle-bolt::before { - content: "\e55b"; } - -.fa-heart::before { - content: "\f004"; } - -.fa-mars-and-venus::before { - content: "\f224"; } - -.fa-house-user::before { - content: "\e1b0"; } - -.fa-home-user::before { - content: "\e1b0"; } - -.fa-dumpster-fire::before { - content: "\f794"; } - -.fa-house-crack::before { - content: "\e3b1"; } - -.fa-martini-glass-citrus::before { - content: "\f561"; } - -.fa-cocktail::before { - content: "\f561"; } - -.fa-face-surprise::before { - content: "\f5c2"; } - -.fa-surprise::before { - content: "\f5c2"; } - -.fa-bottle-water::before { - content: "\e4c5"; } - -.fa-circle-pause::before { - content: "\f28b"; } - -.fa-pause-circle::before { - content: "\f28b"; } - -.fa-toilet-paper-slash::before { - content: "\e072"; } - -.fa-apple-whole::before { - content: "\f5d1"; } - -.fa-apple-alt::before { - content: "\f5d1"; } - -.fa-kitchen-set::before { - content: "\e51a"; } - -.fa-r::before { - content: "\52"; } - -.fa-temperature-quarter::before { - content: "\f2ca"; } - -.fa-temperature-1::before { - content: "\f2ca"; } - -.fa-thermometer-1::before { - content: "\f2ca"; } - -.fa-thermometer-quarter::before { - content: "\f2ca"; } - -.fa-cube::before { - content: "\f1b2"; } - -.fa-bitcoin-sign::before { - content: "\e0b4"; } - -.fa-shield-dog::before { - content: "\e573"; } - -.fa-solar-panel::before { - content: "\f5ba"; } - -.fa-lock-open::before { - content: "\f3c1"; } - -.fa-elevator::before { - content: "\e16d"; } - -.fa-money-bill-transfer::before { - content: "\e528"; } - -.fa-money-bill-trend-up::before { - content: "\e529"; } - -.fa-house-flood-water-circle-arrow-right::before { - content: "\e50f"; } - -.fa-square-poll-horizontal::before { - content: "\f682"; } - -.fa-poll-h::before { - content: "\f682"; } - -.fa-circle::before { - content: "\f111"; } - -.fa-backward-fast::before { - content: "\f049"; } - -.fa-fast-backward::before { - content: "\f049"; } - -.fa-recycle::before { - content: "\f1b8"; } - -.fa-user-astronaut::before { - content: "\f4fb"; } - -.fa-plane-slash::before { - content: "\e069"; } - -.fa-trademark::before { - content: "\f25c"; } - -.fa-basketball::before { - content: "\f434"; } - -.fa-basketball-ball::before { - content: "\f434"; } - -.fa-satellite-dish::before { - content: "\f7c0"; } - -.fa-circle-up::before { - content: "\f35b"; } - -.fa-arrow-alt-circle-up::before { - content: "\f35b"; } - -.fa-mobile-screen-button::before { - content: "\f3cd"; } - -.fa-mobile-alt::before { - content: "\f3cd"; } - -.fa-volume-high::before { - content: "\f028"; } - -.fa-volume-up::before { - content: "\f028"; } - -.fa-users-rays::before { - content: "\e593"; } - -.fa-wallet::before { - content: "\f555"; } - -.fa-clipboard-check::before { - content: "\f46c"; } - -.fa-file-audio::before { - content: "\f1c7"; } - -.fa-burger::before { - content: "\f805"; } - -.fa-hamburger::before { - content: "\f805"; } - -.fa-wrench::before { - content: "\f0ad"; } - -.fa-bugs::before { - content: "\e4d0"; } - -.fa-rupee-sign::before { - content: "\f156"; } - -.fa-rupee::before { - content: "\f156"; } - -.fa-file-image::before { - content: "\f1c5"; } - -.fa-circle-question::before { - content: "\f059"; } - -.fa-question-circle::before { - content: "\f059"; } - -.fa-plane-departure::before { - content: "\f5b0"; } - -.fa-handshake-slash::before { - content: "\e060"; } - -.fa-book-bookmark::before { - content: "\e0bb"; } - -.fa-code-branch::before { - content: "\f126"; } - -.fa-hat-cowboy::before { - content: "\f8c0"; } - -.fa-bridge::before { - content: "\e4c8"; } - -.fa-phone-flip::before { - content: "\f879"; } - -.fa-phone-alt::before { - content: "\f879"; } - -.fa-truck-front::before { - content: "\e2b7"; } - -.fa-cat::before { - content: "\f6be"; } - -.fa-anchor-circle-exclamation::before { - content: "\e4ab"; } - -.fa-truck-field::before { - content: "\e58d"; } - -.fa-route::before { - content: "\f4d7"; } - -.fa-clipboard-question::before { - content: "\e4e3"; } - -.fa-panorama::before { - content: "\e209"; } - -.fa-comment-medical::before { - content: "\f7f5"; } - -.fa-teeth-open::before { - content: "\f62f"; } - -.fa-file-circle-minus::before { - content: "\e4ed"; } - -.fa-tags::before { - content: "\f02c"; } - -.fa-wine-glass::before { - content: "\f4e3"; } - -.fa-forward-fast::before { - content: "\f050"; } - -.fa-fast-forward::before { - content: "\f050"; } - -.fa-face-meh-blank::before { - content: "\f5a4"; } - -.fa-meh-blank::before { - content: "\f5a4"; } - -.fa-square-parking::before { - content: "\f540"; } - -.fa-parking::before { - content: "\f540"; } - -.fa-house-signal::before { - content: "\e012"; } - -.fa-bars-progress::before { - content: "\f828"; } - -.fa-tasks-alt::before { - content: "\f828"; } - -.fa-faucet-drip::before { - content: "\e006"; } - -.fa-cart-flatbed::before { - content: "\f474"; } - -.fa-dolly-flatbed::before { - content: "\f474"; } - -.fa-ban-smoking::before { - content: "\f54d"; } - -.fa-smoking-ban::before { - content: "\f54d"; } - -.fa-terminal::before { - content: "\f120"; } - -.fa-mobile-button::before { - content: "\f10b"; } - -.fa-house-medical-flag::before { - content: "\e514"; } - -.fa-basket-shopping::before { - content: "\f291"; } - -.fa-shopping-basket::before { - content: "\f291"; } - -.fa-tape::before { - content: "\f4db"; } - -.fa-bus-simple::before { - content: "\f55e"; } - -.fa-bus-alt::before { - content: "\f55e"; } - -.fa-eye::before { - content: "\f06e"; } - -.fa-face-sad-cry::before { - content: "\f5b3"; } - -.fa-sad-cry::before { - content: "\f5b3"; } - -.fa-audio-description::before { - content: "\f29e"; } - -.fa-person-military-to-person::before { - content: "\e54c"; } - -.fa-file-shield::before { - content: "\e4f0"; } - -.fa-user-slash::before { - content: "\f506"; } - -.fa-pen::before { - content: "\f304"; } - -.fa-tower-observation::before { - content: "\e586"; } - -.fa-file-code::before { - content: "\f1c9"; } - -.fa-signal::before { - content: "\f012"; } - -.fa-signal-5::before { - content: "\f012"; } - -.fa-signal-perfect::before { - content: "\f012"; } - -.fa-bus::before { - content: "\f207"; } - -.fa-heart-circle-xmark::before { - content: "\e501"; } - -.fa-house-chimney::before { - content: "\e3af"; } - -.fa-home-lg::before { - content: "\e3af"; } - -.fa-window-maximize::before { - content: "\f2d0"; } - -.fa-face-frown::before { - content: "\f119"; } - -.fa-frown::before { - content: "\f119"; } - -.fa-prescription::before { - content: "\f5b1"; } - -.fa-shop::before { - content: "\f54f"; } - -.fa-store-alt::before { - content: "\f54f"; } - -.fa-floppy-disk::before { - content: "\f0c7"; } - -.fa-save::before { - content: "\f0c7"; } - -.fa-vihara::before { - content: "\f6a7"; } - -.fa-scale-unbalanced::before { - content: "\f515"; } - -.fa-balance-scale-left::before { - content: "\f515"; } - -.fa-sort-up::before { - content: "\f0de"; } - -.fa-sort-asc::before { - content: "\f0de"; } - -.fa-comment-dots::before { - content: "\f4ad"; } - -.fa-commenting::before { - content: "\f4ad"; } - -.fa-plant-wilt::before { - content: "\e5aa"; } - -.fa-diamond::before { - content: "\f219"; } - -.fa-face-grin-squint::before { - content: "\f585"; } - -.fa-grin-squint::before { - content: "\f585"; } - -.fa-hand-holding-dollar::before { - content: "\f4c0"; } - -.fa-hand-holding-usd::before { - content: "\f4c0"; } - -.fa-bacterium::before { - content: "\e05a"; } - -.fa-hand-pointer::before { - content: "\f25a"; } - -.fa-drum-steelpan::before { - content: "\f56a"; } - -.fa-hand-scissors::before { - content: "\f257"; } - -.fa-hands-praying::before { - content: "\f684"; } - -.fa-praying-hands::before { - content: "\f684"; } - -.fa-arrow-rotate-right::before { - content: "\f01e"; } - -.fa-arrow-right-rotate::before { - content: "\f01e"; } - -.fa-arrow-rotate-forward::before { - content: "\f01e"; } - -.fa-redo::before { - content: "\f01e"; } - -.fa-biohazard::before { - content: "\f780"; } - -.fa-location-crosshairs::before { - content: "\f601"; } - -.fa-location::before { - content: "\f601"; } - -.fa-mars-double::before { - content: "\f227"; } - -.fa-child-dress::before { - content: "\e59c"; } - -.fa-users-between-lines::before { - content: "\e591"; } - -.fa-lungs-virus::before { - content: "\e067"; } - -.fa-face-grin-tears::before { - content: "\f588"; } - -.fa-grin-tears::before { - content: "\f588"; } - -.fa-phone::before { - content: "\f095"; } - -.fa-calendar-xmark::before { - content: "\f273"; } - -.fa-calendar-times::before { - content: "\f273"; } - -.fa-child-reaching::before { - content: "\e59d"; } - -.fa-head-side-virus::before { - content: "\e064"; } - -.fa-user-gear::before { - content: "\f4fe"; } - -.fa-user-cog::before { - content: "\f4fe"; } - -.fa-arrow-up-1-9::before { - content: "\f163"; } - -.fa-sort-numeric-up::before { - content: "\f163"; } - -.fa-door-closed::before { - content: "\f52a"; } - -.fa-shield-virus::before { - content: "\e06c"; } - -.fa-dice-six::before { - content: "\f526"; } - -.fa-mosquito-net::before { - content: "\e52c"; } - -.fa-bridge-water::before { - content: "\e4ce"; } - -.fa-person-booth::before { - content: "\f756"; } - -.fa-text-width::before { - content: "\f035"; } - -.fa-hat-wizard::before { - content: "\f6e8"; } - -.fa-pen-fancy::before { - content: "\f5ac"; } - -.fa-person-digging::before { - content: "\f85e"; } - -.fa-digging::before { - content: "\f85e"; } - -.fa-trash::before { - content: "\f1f8"; } - -.fa-gauge-simple::before { - content: "\f629"; } - -.fa-gauge-simple-med::before { - content: "\f629"; } - -.fa-tachometer-average::before { - content: "\f629"; } - -.fa-book-medical::before { - content: "\f7e6"; } - -.fa-poo::before { - content: "\f2fe"; } - -.fa-quote-right::before { - content: "\f10e"; } - -.fa-quote-right-alt::before { - content: "\f10e"; } - -.fa-shirt::before { - content: "\f553"; } - -.fa-t-shirt::before { - content: "\f553"; } - -.fa-tshirt::before { - content: "\f553"; } - -.fa-cubes::before { - content: "\f1b3"; } - -.fa-divide::before { - content: "\f529"; } - -.fa-tenge-sign::before { - content: "\f7d7"; } - -.fa-tenge::before { - content: "\f7d7"; } - -.fa-headphones::before { - content: "\f025"; } - -.fa-hands-holding::before { - content: "\f4c2"; } - -.fa-hands-clapping::before { - content: "\e1a8"; } - -.fa-republican::before { - content: "\f75e"; } - -.fa-arrow-left::before { - content: "\f060"; } - -.fa-person-circle-xmark::before { - content: "\e543"; } - -.fa-ruler::before { - content: "\f545"; } - -.fa-align-left::before { - content: "\f036"; } - -.fa-dice-d6::before { - content: "\f6d1"; } - -.fa-restroom::before { - content: "\f7bd"; } - -.fa-j::before { - content: "\4a"; } - -.fa-users-viewfinder::before { - content: "\e595"; } - -.fa-file-video::before { - content: "\f1c8"; } - -.fa-up-right-from-square::before { - content: "\f35d"; } - -.fa-external-link-alt::before { - content: "\f35d"; } - -.fa-table-cells::before { - content: "\f00a"; } - -.fa-th::before { - content: "\f00a"; } - -.fa-file-pdf::before { - content: "\f1c1"; } - -.fa-book-bible::before { - content: "\f647"; } - -.fa-bible::before { - content: "\f647"; } - -.fa-o::before { - content: "\4f"; } - -.fa-suitcase-medical::before { - content: "\f0fa"; } - -.fa-medkit::before { - content: "\f0fa"; } - -.fa-user-secret::before { - content: "\f21b"; } - -.fa-otter::before { - content: "\f700"; } - -.fa-person-dress::before { - content: "\f182"; } - -.fa-female::before { - content: "\f182"; } - -.fa-comment-dollar::before { - content: "\f651"; } - -.fa-business-time::before { - content: "\f64a"; } - -.fa-briefcase-clock::before { - content: "\f64a"; } - -.fa-table-cells-large::before { - content: "\f009"; } - -.fa-th-large::before { - content: "\f009"; } - -.fa-book-tanakh::before { - content: "\f827"; } - -.fa-tanakh::before { - content: "\f827"; } - -.fa-phone-volume::before { - content: "\f2a0"; } - -.fa-volume-control-phone::before { - content: "\f2a0"; } - -.fa-hat-cowboy-side::before { - content: "\f8c1"; } - -.fa-clipboard-user::before { - content: "\f7f3"; } - -.fa-child::before { - content: "\f1ae"; } - -.fa-lira-sign::before { - content: "\f195"; } - -.fa-satellite::before { - content: "\f7bf"; } - -.fa-plane-lock::before { - content: "\e558"; } - -.fa-tag::before { - content: "\f02b"; } - -.fa-comment::before { - content: "\f075"; } - -.fa-cake-candles::before { - content: "\f1fd"; } - -.fa-birthday-cake::before { - content: "\f1fd"; } - -.fa-cake::before { - content: "\f1fd"; } - -.fa-envelope::before { - content: "\f0e0"; } - -.fa-angles-up::before { - content: "\f102"; } - -.fa-angle-double-up::before { - content: "\f102"; } - -.fa-paperclip::before { - content: "\f0c6"; } - -.fa-arrow-right-to-city::before { - content: "\e4b3"; } - -.fa-ribbon::before { - content: "\f4d6"; } - -.fa-lungs::before { - content: "\f604"; } - -.fa-arrow-up-9-1::before { - content: "\f887"; } - -.fa-sort-numeric-up-alt::before { - content: "\f887"; } - -.fa-litecoin-sign::before { - content: "\e1d3"; } - -.fa-border-none::before { - content: "\f850"; } - -.fa-circle-nodes::before { - content: "\e4e2"; } - -.fa-parachute-box::before { - content: "\f4cd"; } - -.fa-indent::before { - content: "\f03c"; } - -.fa-truck-field-un::before { - content: "\e58e"; } - -.fa-hourglass::before { - content: "\f254"; } - -.fa-hourglass-empty::before { - content: "\f254"; } - -.fa-mountain::before { - content: "\f6fc"; } - -.fa-user-doctor::before { - content: "\f0f0"; } - -.fa-user-md::before { - content: "\f0f0"; } - -.fa-circle-info::before { - content: "\f05a"; } - -.fa-info-circle::before { - content: "\f05a"; } - -.fa-cloud-meatball::before { - content: "\f73b"; } - -.fa-camera::before { - content: "\f030"; } - -.fa-camera-alt::before { - content: "\f030"; } - -.fa-square-virus::before { - content: "\e578"; } - -.fa-meteor::before { - content: "\f753"; } - -.fa-car-on::before { - content: "\e4dd"; } - -.fa-sleigh::before { - content: "\f7cc"; } - -.fa-arrow-down-1-9::before { - content: "\f162"; } - -.fa-sort-numeric-asc::before { - content: "\f162"; } - -.fa-sort-numeric-down::before { - content: "\f162"; } - -.fa-hand-holding-droplet::before { - content: "\f4c1"; } - -.fa-hand-holding-water::before { - content: "\f4c1"; } - -.fa-water::before { - content: "\f773"; } - -.fa-calendar-check::before { - content: "\f274"; } - -.fa-braille::before { - content: "\f2a1"; } - -.fa-prescription-bottle-medical::before { - content: "\f486"; } - -.fa-prescription-bottle-alt::before { - content: "\f486"; } - -.fa-landmark::before { - content: "\f66f"; } - -.fa-truck::before { - content: "\f0d1"; } - -.fa-crosshairs::before { - content: "\f05b"; } - -.fa-person-cane::before { - content: "\e53c"; } - -.fa-tent::before { - content: "\e57d"; } - -.fa-vest-patches::before { - content: "\e086"; } - -.fa-check-double::before { - content: "\f560"; } - -.fa-arrow-down-a-z::before { - content: "\f15d"; } - -.fa-sort-alpha-asc::before { - content: "\f15d"; } - -.fa-sort-alpha-down::before { - content: "\f15d"; } - -.fa-money-bill-wheat::before { - content: "\e52a"; } - -.fa-cookie::before { - content: "\f563"; } - -.fa-arrow-rotate-left::before { - content: "\f0e2"; } - -.fa-arrow-left-rotate::before { - content: "\f0e2"; } - -.fa-arrow-rotate-back::before { - content: "\f0e2"; } - -.fa-arrow-rotate-backward::before { - content: "\f0e2"; } - -.fa-undo::before { - content: "\f0e2"; } - -.fa-hard-drive::before { - content: "\f0a0"; } - -.fa-hdd::before { - content: "\f0a0"; } - -.fa-face-grin-squint-tears::before { - content: "\f586"; } - -.fa-grin-squint-tears::before { - content: "\f586"; } - -.fa-dumbbell::before { - content: "\f44b"; } - -.fa-rectangle-list::before { - content: "\f022"; } - -.fa-list-alt::before { - content: "\f022"; } - -.fa-tarp-droplet::before { - content: "\e57c"; } - -.fa-house-medical-circle-check::before { - content: "\e511"; } - -.fa-person-skiing-nordic::before { - content: "\f7ca"; } - -.fa-skiing-nordic::before { - content: "\f7ca"; } - -.fa-calendar-plus::before { - content: "\f271"; } - -.fa-plane-arrival::before { - content: "\f5af"; } - -.fa-circle-left::before { - content: "\f359"; } - -.fa-arrow-alt-circle-left::before { - content: "\f359"; } - -.fa-train-subway::before { - content: "\f239"; } - -.fa-subway::before { - content: "\f239"; } - -.fa-chart-gantt::before { - content: "\e0e4"; } - -.fa-indian-rupee-sign::before { - content: "\e1bc"; } - -.fa-indian-rupee::before { - content: "\e1bc"; } - -.fa-inr::before { - content: "\e1bc"; } - -.fa-crop-simple::before { - content: "\f565"; } - -.fa-crop-alt::before { - content: "\f565"; } - -.fa-money-bill-1::before { - content: "\f3d1"; } - -.fa-money-bill-alt::before { - content: "\f3d1"; } - -.fa-left-long::before { - content: "\f30a"; } - -.fa-long-arrow-alt-left::before { - content: "\f30a"; } - -.fa-dna::before { - content: "\f471"; } - -.fa-virus-slash::before { - content: "\e075"; } - -.fa-minus::before { - content: "\f068"; } - -.fa-subtract::before { - content: "\f068"; } - -.fa-chess::before { - content: "\f439"; } - -.fa-arrow-left-long::before { - content: "\f177"; } - -.fa-long-arrow-left::before { - content: "\f177"; } - -.fa-plug-circle-check::before { - content: "\e55c"; } - -.fa-street-view::before { - content: "\f21d"; } - -.fa-franc-sign::before { - content: "\e18f"; } - -.fa-volume-off::before { - content: "\f026"; } - -.fa-hands-asl-interpreting::before { - content: "\f2a3"; } - -.fa-american-sign-language-interpreting::before { - content: "\f2a3"; } - -.fa-asl-interpreting::before { - content: "\f2a3"; } - -.fa-hands-american-sign-language-interpreting::before { - content: "\f2a3"; } - -.fa-gear::before { - content: "\f013"; } - -.fa-cog::before { - content: "\f013"; } - -.fa-droplet-slash::before { - content: "\f5c7"; } - -.fa-tint-slash::before { - content: "\f5c7"; } - -.fa-mosque::before { - content: "\f678"; } - -.fa-mosquito::before { - content: "\e52b"; } - -.fa-star-of-david::before { - content: "\f69a"; } - -.fa-person-military-rifle::before { - content: "\e54b"; } - -.fa-cart-shopping::before { - content: "\f07a"; } - -.fa-shopping-cart::before { - content: "\f07a"; } - -.fa-vials::before { - content: "\f493"; } - -.fa-plug-circle-plus::before { - content: "\e55f"; } - -.fa-place-of-worship::before { - content: "\f67f"; } - -.fa-grip-vertical::before { - content: "\f58e"; } - -.fa-arrow-turn-up::before { - content: "\f148"; } - -.fa-level-up::before { - content: "\f148"; } - -.fa-u::before { - content: "\55"; } - -.fa-square-root-variable::before { - content: "\f698"; } - -.fa-square-root-alt::before { - content: "\f698"; } - -.fa-clock::before { - content: "\f017"; } - -.fa-clock-four::before { - content: "\f017"; } - -.fa-backward-step::before { - content: "\f048"; } - -.fa-step-backward::before { - content: "\f048"; } - -.fa-pallet::before { - content: "\f482"; } - -.fa-faucet::before { - content: "\e005"; } - -.fa-baseball-bat-ball::before { - content: "\f432"; } - -.fa-s::before { - content: "\53"; } - -.fa-timeline::before { - content: "\e29c"; } - -.fa-keyboard::before { - content: "\f11c"; } - -.fa-caret-down::before { - content: "\f0d7"; } - -.fa-house-chimney-medical::before { - content: "\f7f2"; } - -.fa-clinic-medical::before { - content: "\f7f2"; } - -.fa-temperature-three-quarters::before { - content: "\f2c8"; } - -.fa-temperature-3::before { - content: "\f2c8"; } - -.fa-thermometer-3::before { - content: "\f2c8"; } - -.fa-thermometer-three-quarters::before { - content: "\f2c8"; } - -.fa-mobile-screen::before { - content: "\f3cf"; } - -.fa-mobile-android-alt::before { - content: "\f3cf"; } - -.fa-plane-up::before { - content: "\e22d"; } - -.fa-piggy-bank::before { - content: "\f4d3"; } - -.fa-battery-half::before { - content: "\f242"; } - -.fa-battery-3::before { - content: "\f242"; } - -.fa-mountain-city::before { - content: "\e52e"; } - -.fa-coins::before { - content: "\f51e"; } - -.fa-khanda::before { - content: "\f66d"; } - -.fa-sliders::before { - content: "\f1de"; } - -.fa-sliders-h::before { - content: "\f1de"; } - -.fa-folder-tree::before { - content: "\f802"; } - -.fa-network-wired::before { - content: "\f6ff"; } - -.fa-map-pin::before { - content: "\f276"; } - -.fa-hamsa::before { - content: "\f665"; } - -.fa-cent-sign::before { - content: "\e3f5"; } - -.fa-flask::before { - content: "\f0c3"; } - -.fa-person-pregnant::before { - content: "\e31e"; } - -.fa-wand-sparkles::before { - content: "\f72b"; } - -.fa-ellipsis-vertical::before { - content: "\f142"; } - -.fa-ellipsis-v::before { - content: "\f142"; } - -.fa-ticket::before { - content: "\f145"; } - -.fa-power-off::before { - content: "\f011"; } - -.fa-right-long::before { - content: "\f30b"; } - -.fa-long-arrow-alt-right::before { - content: "\f30b"; } - -.fa-flag-usa::before { - content: "\f74d"; } - -.fa-laptop-file::before { - content: "\e51d"; } - -.fa-tty::before { - content: "\f1e4"; } - -.fa-teletype::before { - content: "\f1e4"; } - -.fa-diagram-next::before { - content: "\e476"; } - -.fa-person-rifle::before { - content: "\e54e"; } - -.fa-house-medical-circle-exclamation::before { - content: "\e512"; } - -.fa-closed-captioning::before { - content: "\f20a"; } - -.fa-person-hiking::before { - content: "\f6ec"; } - -.fa-hiking::before { - content: "\f6ec"; } - -.fa-venus-double::before { - content: "\f226"; } - -.fa-images::before { - content: "\f302"; } - -.fa-calculator::before { - content: "\f1ec"; } - -.fa-people-pulling::before { - content: "\e535"; } - -.fa-n::before { - content: "\4e"; } - -.fa-cable-car::before { - content: "\f7da"; } - -.fa-tram::before { - content: "\f7da"; } - -.fa-cloud-rain::before { - content: "\f73d"; } - -.fa-building-circle-xmark::before { - content: "\e4d4"; } - -.fa-ship::before { - content: "\f21a"; } - -.fa-arrows-down-to-line::before { - content: "\e4b8"; } - -.fa-download::before { - content: "\f019"; } - -.fa-face-grin::before { - content: "\f580"; } - -.fa-grin::before { - content: "\f580"; } - -.fa-delete-left::before { - content: "\f55a"; } - -.fa-backspace::before { - content: "\f55a"; } - -.fa-eye-dropper::before { - content: "\f1fb"; } - -.fa-eye-dropper-empty::before { - content: "\f1fb"; } - -.fa-eyedropper::before { - content: "\f1fb"; } - -.fa-file-circle-check::before { - content: "\e5a0"; } - -.fa-forward::before { - content: "\f04e"; } - -.fa-mobile::before { - content: "\f3ce"; } - -.fa-mobile-android::before { - content: "\f3ce"; } - -.fa-mobile-phone::before { - content: "\f3ce"; } - -.fa-face-meh::before { - content: "\f11a"; } - -.fa-meh::before { - content: "\f11a"; } - -.fa-align-center::before { - content: "\f037"; } - -.fa-book-skull::before { - content: "\f6b7"; } - -.fa-book-dead::before { - content: "\f6b7"; } - -.fa-id-card::before { - content: "\f2c2"; } - -.fa-drivers-license::before { - content: "\f2c2"; } - -.fa-outdent::before { - content: "\f03b"; } - -.fa-dedent::before { - content: "\f03b"; } - -.fa-heart-circle-exclamation::before { - content: "\e4fe"; } - -.fa-house::before { - content: "\f015"; } - -.fa-home::before { - content: "\f015"; } - -.fa-home-alt::before { - content: "\f015"; } - -.fa-home-lg-alt::before { - content: "\f015"; } - -.fa-calendar-week::before { - content: "\f784"; } - -.fa-laptop-medical::before { - content: "\f812"; } - -.fa-b::before { - content: "\42"; } - -.fa-file-medical::before { - content: "\f477"; } - -.fa-dice-one::before { - content: "\f525"; } - -.fa-kiwi-bird::before { - content: "\f535"; } - -.fa-arrow-right-arrow-left::before { - content: "\f0ec"; } - -.fa-exchange::before { - content: "\f0ec"; } - -.fa-rotate-right::before { - content: "\f2f9"; } - -.fa-redo-alt::before { - content: "\f2f9"; } - -.fa-rotate-forward::before { - content: "\f2f9"; } - -.fa-utensils::before { - content: "\f2e7"; } - -.fa-cutlery::before { - content: "\f2e7"; } - -.fa-arrow-up-wide-short::before { - content: "\f161"; } - -.fa-sort-amount-up::before { - content: "\f161"; } - -.fa-mill-sign::before { - content: "\e1ed"; } - -.fa-bowl-rice::before { - content: "\e2eb"; } - -.fa-skull::before { - content: "\f54c"; } - -.fa-tower-broadcast::before { - content: "\f519"; } - -.fa-broadcast-tower::before { - content: "\f519"; } - -.fa-truck-pickup::before { - content: "\f63c"; } - -.fa-up-long::before { - content: "\f30c"; } - -.fa-long-arrow-alt-up::before { - content: "\f30c"; } - -.fa-stop::before { - content: "\f04d"; } - -.fa-code-merge::before { - content: "\f387"; } - -.fa-upload::before { - content: "\f093"; } - -.fa-hurricane::before { - content: "\f751"; } - -.fa-mound::before { - content: "\e52d"; } - -.fa-toilet-portable::before { - content: "\e583"; } - -.fa-compact-disc::before { - content: "\f51f"; } - -.fa-file-arrow-down::before { - content: "\f56d"; } - -.fa-file-download::before { - content: "\f56d"; } - -.fa-caravan::before { - content: "\f8ff"; } - -.fa-shield-cat::before { - content: "\e572"; } - -.fa-bolt::before { - content: "\f0e7"; } - -.fa-zap::before { - content: "\f0e7"; } - -.fa-glass-water::before { - content: "\e4f4"; } - -.fa-oil-well::before { - content: "\e532"; } - -.fa-vault::before { - content: "\e2c5"; } - -.fa-mars::before { - content: "\f222"; } - -.fa-toilet::before { - content: "\f7d8"; } - -.fa-plane-circle-xmark::before { - content: "\e557"; } - -.fa-yen-sign::before { - content: "\f157"; } - -.fa-cny::before { - content: "\f157"; } - -.fa-jpy::before { - content: "\f157"; } - -.fa-rmb::before { - content: "\f157"; } - -.fa-yen::before { - content: "\f157"; } - -.fa-ruble-sign::before { - content: "\f158"; } - -.fa-rouble::before { - content: "\f158"; } - -.fa-rub::before { - content: "\f158"; } - -.fa-ruble::before { - content: "\f158"; } - -.fa-sun::before { - content: "\f185"; } - -.fa-guitar::before { - content: "\f7a6"; } - -.fa-face-laugh-wink::before { - content: "\f59c"; } - -.fa-laugh-wink::before { - content: "\f59c"; } - -.fa-horse-head::before { - content: "\f7ab"; } - -.fa-bore-hole::before { - content: "\e4c3"; } - -.fa-industry::before { - content: "\f275"; } - -.fa-circle-down::before { - content: "\f358"; } - -.fa-arrow-alt-circle-down::before { - content: "\f358"; } - -.fa-arrows-turn-to-dots::before { - content: "\e4c1"; } - -.fa-florin-sign::before { - content: "\e184"; } - -.fa-arrow-down-short-wide::before { - content: "\f884"; } - -.fa-sort-amount-desc::before { - content: "\f884"; } - -.fa-sort-amount-down-alt::before { - content: "\f884"; } - -.fa-less-than::before { - content: "\3c"; } - -.fa-angle-down::before { - content: "\f107"; } - -.fa-car-tunnel::before { - content: "\e4de"; } - -.fa-head-side-cough::before { - content: "\e061"; } - -.fa-grip-lines::before { - content: "\f7a4"; } - -.fa-thumbs-down::before { - content: "\f165"; } - -.fa-user-lock::before { - content: "\f502"; } - -.fa-arrow-right-long::before { - content: "\f178"; } - -.fa-long-arrow-right::before { - content: "\f178"; } - -.fa-anchor-circle-xmark::before { - content: "\e4ac"; } - -.fa-ellipsis::before { - content: "\f141"; } - -.fa-ellipsis-h::before { - content: "\f141"; } - -.fa-chess-pawn::before { - content: "\f443"; } - -.fa-kit-medical::before { - content: "\f479"; } - -.fa-first-aid::before { - content: "\f479"; } - -.fa-person-through-window::before { - content: "\e5a9"; } - -.fa-toolbox::before { - content: "\f552"; } - -.fa-hands-holding-circle::before { - content: "\e4fb"; } - -.fa-bug::before { - content: "\f188"; } - -.fa-credit-card::before { - content: "\f09d"; } - -.fa-credit-card-alt::before { - content: "\f09d"; } - -.fa-car::before { - content: "\f1b9"; } - -.fa-automobile::before { - content: "\f1b9"; } - -.fa-hand-holding-hand::before { - content: "\e4f7"; } - -.fa-book-open-reader::before { - content: "\f5da"; } - -.fa-book-reader::before { - content: "\f5da"; } - -.fa-mountain-sun::before { - content: "\e52f"; } - -.fa-arrows-left-right-to-line::before { - content: "\e4ba"; } - -.fa-dice-d20::before { - content: "\f6cf"; } - -.fa-truck-droplet::before { - content: "\e58c"; } - -.fa-file-circle-xmark::before { - content: "\e5a1"; } - -.fa-temperature-arrow-up::before { - content: "\e040"; } - -.fa-temperature-up::before { - content: "\e040"; } - -.fa-medal::before { - content: "\f5a2"; } - -.fa-bed::before { - content: "\f236"; } - -.fa-square-h::before { - content: "\f0fd"; } - -.fa-h-square::before { - content: "\f0fd"; } - -.fa-podcast::before { - content: "\f2ce"; } - -.fa-temperature-full::before { - content: "\f2c7"; } - -.fa-temperature-4::before { - content: "\f2c7"; } - -.fa-thermometer-4::before { - content: "\f2c7"; } - -.fa-thermometer-full::before { - content: "\f2c7"; } - -.fa-bell::before { - content: "\f0f3"; } - -.fa-superscript::before { - content: "\f12b"; } - -.fa-plug-circle-xmark::before { - content: "\e560"; } - -.fa-star-of-life::before { - content: "\f621"; } - -.fa-phone-slash::before { - content: "\f3dd"; } - -.fa-paint-roller::before { - content: "\f5aa"; } - -.fa-handshake-angle::before { - content: "\f4c4"; } - -.fa-hands-helping::before { - content: "\f4c4"; } - -.fa-location-dot::before { - content: "\f3c5"; } - -.fa-map-marker-alt::before { - content: "\f3c5"; } - -.fa-file::before { - content: "\f15b"; } - -.fa-greater-than::before { - content: "\3e"; } - -.fa-person-swimming::before { - content: "\f5c4"; } - -.fa-swimmer::before { - content: "\f5c4"; } - -.fa-arrow-down::before { - content: "\f063"; } - -.fa-droplet::before { - content: "\f043"; } - -.fa-tint::before { - content: "\f043"; } - -.fa-eraser::before { - content: "\f12d"; } - -.fa-earth-americas::before { - content: "\f57d"; } - -.fa-earth::before { - content: "\f57d"; } - -.fa-earth-america::before { - content: "\f57d"; } - -.fa-globe-americas::before { - content: "\f57d"; } - -.fa-person-burst::before { - content: "\e53b"; } - -.fa-dove::before { - content: "\f4ba"; } - -.fa-battery-empty::before { - content: "\f244"; } - -.fa-battery-0::before { - content: "\f244"; } - -.fa-socks::before { - content: "\f696"; } - -.fa-inbox::before { - content: "\f01c"; } - -.fa-section::before { - content: "\e447"; } - -.fa-gauge-high::before { - content: "\f625"; } - -.fa-tachometer-alt::before { - content: "\f625"; } - -.fa-tachometer-alt-fast::before { - content: "\f625"; } - -.fa-envelope-open-text::before { - content: "\f658"; } - -.fa-hospital::before { - content: "\f0f8"; } - -.fa-hospital-alt::before { - content: "\f0f8"; } - -.fa-hospital-wide::before { - content: "\f0f8"; } - -.fa-wine-bottle::before { - content: "\f72f"; } - -.fa-chess-rook::before { - content: "\f447"; } - -.fa-bars-staggered::before { - content: "\f550"; } - -.fa-reorder::before { - content: "\f550"; } - -.fa-stream::before { - content: "\f550"; } - -.fa-dharmachakra::before { - content: "\f655"; } - -.fa-hotdog::before { - content: "\f80f"; } - -.fa-person-walking-with-cane::before { - content: "\f29d"; } - -.fa-blind::before { - content: "\f29d"; } - -.fa-drum::before { - content: "\f569"; } - -.fa-ice-cream::before { - content: "\f810"; } - -.fa-heart-circle-bolt::before { - content: "\e4fc"; } - -.fa-fax::before { - content: "\f1ac"; } - -.fa-paragraph::before { - content: "\f1dd"; } - -.fa-check-to-slot::before { - content: "\f772"; } - -.fa-vote-yea::before { - content: "\f772"; } - -.fa-star-half::before { - content: "\f089"; } - -.fa-boxes-stacked::before { - content: "\f468"; } - -.fa-boxes::before { - content: "\f468"; } - -.fa-boxes-alt::before { - content: "\f468"; } - -.fa-link::before { - content: "\f0c1"; } - -.fa-chain::before { - content: "\f0c1"; } - -.fa-ear-listen::before { - content: "\f2a2"; } - -.fa-assistive-listening-systems::before { - content: "\f2a2"; } - -.fa-tree-city::before { - content: "\e587"; } - -.fa-play::before { - content: "\f04b"; } - -.fa-font::before { - content: "\f031"; } - -.fa-table-cells-row-lock::before { - content: "\e67a"; } - -.fa-rupiah-sign::before { - content: "\e23d"; } - -.fa-magnifying-glass::before { - content: "\f002"; } - -.fa-search::before { - content: "\f002"; } - -.fa-table-tennis-paddle-ball::before { - content: "\f45d"; } - -.fa-ping-pong-paddle-ball::before { - content: "\f45d"; } - -.fa-table-tennis::before { - content: "\f45d"; } - -.fa-person-dots-from-line::before { - content: "\f470"; } - -.fa-diagnoses::before { - content: "\f470"; } - -.fa-trash-can-arrow-up::before { - content: "\f82a"; } - -.fa-trash-restore-alt::before { - content: "\f82a"; } - -.fa-naira-sign::before { - content: "\e1f6"; } - -.fa-cart-arrow-down::before { - content: "\f218"; } - -.fa-walkie-talkie::before { - content: "\f8ef"; } - -.fa-file-pen::before { - content: "\f31c"; } - -.fa-file-edit::before { - content: "\f31c"; } - -.fa-receipt::before { - content: "\f543"; } - -.fa-square-pen::before { - content: "\f14b"; } - -.fa-pen-square::before { - content: "\f14b"; } - -.fa-pencil-square::before { - content: "\f14b"; } - -.fa-suitcase-rolling::before { - content: "\f5c1"; } - -.fa-person-circle-exclamation::before { - content: "\e53f"; } - -.fa-chevron-down::before { - content: "\f078"; } - -.fa-battery-full::before { - content: "\f240"; } - -.fa-battery::before { - content: "\f240"; } - -.fa-battery-5::before { - content: "\f240"; } - -.fa-skull-crossbones::before { - content: "\f714"; } - -.fa-code-compare::before { - content: "\e13a"; } - -.fa-list-ul::before { - content: "\f0ca"; } - -.fa-list-dots::before { - content: "\f0ca"; } - -.fa-school-lock::before { - content: "\e56f"; } - -.fa-tower-cell::before { - content: "\e585"; } - -.fa-down-long::before { - content: "\f309"; } - -.fa-long-arrow-alt-down::before { - content: "\f309"; } - -.fa-ranking-star::before { - content: "\e561"; } - -.fa-chess-king::before { - content: "\f43f"; } - -.fa-person-harassing::before { - content: "\e549"; } - -.fa-brazilian-real-sign::before { - content: "\e46c"; } - -.fa-landmark-dome::before { - content: "\f752"; } - -.fa-landmark-alt::before { - content: "\f752"; } - -.fa-arrow-up::before { - content: "\f062"; } - -.fa-tv::before { - content: "\f26c"; } - -.fa-television::before { - content: "\f26c"; } - -.fa-tv-alt::before { - content: "\f26c"; } - -.fa-shrimp::before { - content: "\e448"; } - -.fa-list-check::before { - content: "\f0ae"; } - -.fa-tasks::before { - content: "\f0ae"; } - -.fa-jug-detergent::before { - content: "\e519"; } - -.fa-circle-user::before { - content: "\f2bd"; } - -.fa-user-circle::before { - content: "\f2bd"; } - -.fa-user-shield::before { - content: "\f505"; } - -.fa-wind::before { - content: "\f72e"; } - -.fa-car-burst::before { - content: "\f5e1"; } - -.fa-car-crash::before { - content: "\f5e1"; } - -.fa-y::before { - content: "\59"; } - -.fa-person-snowboarding::before { - content: "\f7ce"; } - -.fa-snowboarding::before { - content: "\f7ce"; } - -.fa-truck-fast::before { - content: "\f48b"; } - -.fa-shipping-fast::before { - content: "\f48b"; } - -.fa-fish::before { - content: "\f578"; } - -.fa-user-graduate::before { - content: "\f501"; } - -.fa-circle-half-stroke::before { - content: "\f042"; } - -.fa-adjust::before { - content: "\f042"; } - -.fa-clapperboard::before { - content: "\e131"; } - -.fa-circle-radiation::before { - content: "\f7ba"; } - -.fa-radiation-alt::before { - content: "\f7ba"; } - -.fa-baseball::before { - content: "\f433"; } - -.fa-baseball-ball::before { - content: "\f433"; } - -.fa-jet-fighter-up::before { - content: "\e518"; } - -.fa-diagram-project::before { - content: "\f542"; } - -.fa-project-diagram::before { - content: "\f542"; } - -.fa-copy::before { - content: "\f0c5"; } - -.fa-volume-xmark::before { - content: "\f6a9"; } - -.fa-volume-mute::before { - content: "\f6a9"; } - -.fa-volume-times::before { - content: "\f6a9"; } - -.fa-hand-sparkles::before { - content: "\e05d"; } - -.fa-grip::before { - content: "\f58d"; } - -.fa-grip-horizontal::before { - content: "\f58d"; } - -.fa-share-from-square::before { - content: "\f14d"; } - -.fa-share-square::before { - content: "\f14d"; } - -.fa-child-combatant::before { - content: "\e4e0"; } - -.fa-child-rifle::before { - content: "\e4e0"; } - -.fa-gun::before { - content: "\e19b"; } - -.fa-square-phone::before { - content: "\f098"; } - -.fa-phone-square::before { - content: "\f098"; } - -.fa-plus::before { - content: "\2b"; } - -.fa-add::before { - content: "\2b"; } - -.fa-expand::before { - content: "\f065"; } - -.fa-computer::before { - content: "\e4e5"; } - -.fa-xmark::before { - content: "\f00d"; } - -.fa-close::before { - content: "\f00d"; } - -.fa-multiply::before { - content: "\f00d"; } - -.fa-remove::before { - content: "\f00d"; } - -.fa-times::before { - content: "\f00d"; } - -.fa-arrows-up-down-left-right::before { - content: "\f047"; } - -.fa-arrows::before { - content: "\f047"; } - -.fa-chalkboard-user::before { - content: "\f51c"; } - -.fa-chalkboard-teacher::before { - content: "\f51c"; } - -.fa-peso-sign::before { - content: "\e222"; } - -.fa-building-shield::before { - content: "\e4d8"; } - -.fa-baby::before { - content: "\f77c"; } - -.fa-users-line::before { - content: "\e592"; } - -.fa-quote-left::before { - content: "\f10d"; } - -.fa-quote-left-alt::before { - content: "\f10d"; } - -.fa-tractor::before { - content: "\f722"; } - -.fa-trash-arrow-up::before { - content: "\f829"; } - -.fa-trash-restore::before { - content: "\f829"; } - -.fa-arrow-down-up-lock::before { - content: "\e4b0"; } - -.fa-lines-leaning::before { - content: "\e51e"; } - -.fa-ruler-combined::before { - content: "\f546"; } - -.fa-copyright::before { - content: "\f1f9"; } - -.fa-equals::before { - content: "\3d"; } - -.fa-blender::before { - content: "\f517"; } - -.fa-teeth::before { - content: "\f62e"; } - -.fa-shekel-sign::before { - content: "\f20b"; } - -.fa-ils::before { - content: "\f20b"; } - -.fa-shekel::before { - content: "\f20b"; } - -.fa-sheqel::before { - content: "\f20b"; } - -.fa-sheqel-sign::before { - content: "\f20b"; } - -.fa-map::before { - content: "\f279"; } - -.fa-rocket::before { - content: "\f135"; } - -.fa-photo-film::before { - content: "\f87c"; } - -.fa-photo-video::before { - content: "\f87c"; } - -.fa-folder-minus::before { - content: "\f65d"; } - -.fa-store::before { - content: "\f54e"; } - -.fa-arrow-trend-up::before { - content: "\e098"; } - -.fa-plug-circle-minus::before { - content: "\e55e"; } - -.fa-sign-hanging::before { - content: "\f4d9"; } - -.fa-sign::before { - content: "\f4d9"; } - -.fa-bezier-curve::before { - content: "\f55b"; } - -.fa-bell-slash::before { - content: "\f1f6"; } - -.fa-tablet::before { - content: "\f3fb"; } - -.fa-tablet-android::before { - content: "\f3fb"; } - -.fa-school-flag::before { - content: "\e56e"; } - -.fa-fill::before { - content: "\f575"; } - -.fa-angle-up::before { - content: "\f106"; } - -.fa-drumstick-bite::before { - content: "\f6d7"; } - -.fa-holly-berry::before { - content: "\f7aa"; } - -.fa-chevron-left::before { - content: "\f053"; } - -.fa-bacteria::before { - content: "\e059"; } - -.fa-hand-lizard::before { - content: "\f258"; } - -.fa-notdef::before { - content: "\e1fe"; } - -.fa-disease::before { - content: "\f7fa"; } - -.fa-briefcase-medical::before { - content: "\f469"; } - -.fa-genderless::before { - content: "\f22d"; } - -.fa-chevron-right::before { - content: "\f054"; } - -.fa-retweet::before { - content: "\f079"; } - -.fa-car-rear::before { - content: "\f5de"; } - -.fa-car-alt::before { - content: "\f5de"; } - -.fa-pump-soap::before { - content: "\e06b"; } - -.fa-video-slash::before { - content: "\f4e2"; } - -.fa-battery-quarter::before { - content: "\f243"; } - -.fa-battery-2::before { - content: "\f243"; } - -.fa-radio::before { - content: "\f8d7"; } - -.fa-baby-carriage::before { - content: "\f77d"; } - -.fa-carriage-baby::before { - content: "\f77d"; } - -.fa-traffic-light::before { - content: "\f637"; } - -.fa-thermometer::before { - content: "\f491"; } - -.fa-vr-cardboard::before { - content: "\f729"; } - -.fa-hand-middle-finger::before { - content: "\f806"; } - -.fa-percent::before { - content: "\25"; } - -.fa-percentage::before { - content: "\25"; } - -.fa-truck-moving::before { - content: "\f4df"; } - -.fa-glass-water-droplet::before { - content: "\e4f5"; } - -.fa-display::before { - content: "\e163"; } - -.fa-face-smile::before { - content: "\f118"; } - -.fa-smile::before { - content: "\f118"; } - -.fa-thumbtack::before { - content: "\f08d"; } - -.fa-thumb-tack::before { - content: "\f08d"; } - -.fa-trophy::before { - content: "\f091"; } - -.fa-person-praying::before { - content: "\f683"; } - -.fa-pray::before { - content: "\f683"; } - -.fa-hammer::before { - content: "\f6e3"; } - -.fa-hand-peace::before { - content: "\f25b"; } - -.fa-rotate::before { - content: "\f2f1"; } - -.fa-sync-alt::before { - content: "\f2f1"; } - -.fa-spinner::before { - content: "\f110"; } - -.fa-robot::before { - content: "\f544"; } - -.fa-peace::before { - content: "\f67c"; } - -.fa-gears::before { - content: "\f085"; } - -.fa-cogs::before { - content: "\f085"; } - -.fa-warehouse::before { - content: "\f494"; } - -.fa-arrow-up-right-dots::before { - content: "\e4b7"; } - -.fa-splotch::before { - content: "\f5bc"; } - -.fa-face-grin-hearts::before { - content: "\f584"; } - -.fa-grin-hearts::before { - content: "\f584"; } - -.fa-dice-four::before { - content: "\f524"; } - -.fa-sim-card::before { - content: "\f7c4"; } - -.fa-transgender::before { - content: "\f225"; } - -.fa-transgender-alt::before { - content: "\f225"; } - -.fa-mercury::before { - content: "\f223"; } - -.fa-arrow-turn-down::before { - content: "\f149"; } - -.fa-level-down::before { - content: "\f149"; } - -.fa-person-falling-burst::before { - content: "\e547"; } - -.fa-award::before { - content: "\f559"; } - -.fa-ticket-simple::before { - content: "\f3ff"; } - -.fa-ticket-alt::before { - content: "\f3ff"; } - -.fa-building::before { - content: "\f1ad"; } - -.fa-angles-left::before { - content: "\f100"; } - -.fa-angle-double-left::before { - content: "\f100"; } - -.fa-qrcode::before { - content: "\f029"; } - -.fa-clock-rotate-left::before { - content: "\f1da"; } - -.fa-history::before { - content: "\f1da"; } - -.fa-face-grin-beam-sweat::before { - content: "\f583"; } - -.fa-grin-beam-sweat::before { - content: "\f583"; } - -.fa-file-export::before { - content: "\f56e"; } - -.fa-arrow-right-from-file::before { - content: "\f56e"; } - -.fa-shield::before { - content: "\f132"; } - -.fa-shield-blank::before { - content: "\f132"; } - -.fa-arrow-up-short-wide::before { - content: "\f885"; } - -.fa-sort-amount-up-alt::before { - content: "\f885"; } - -.fa-house-medical::before { - content: "\e3b2"; } - -.fa-golf-ball-tee::before { - content: "\f450"; } - -.fa-golf-ball::before { - content: "\f450"; } - -.fa-circle-chevron-left::before { - content: "\f137"; } - -.fa-chevron-circle-left::before { - content: "\f137"; } - -.fa-house-chimney-window::before { - content: "\e00d"; } - -.fa-pen-nib::before { - content: "\f5ad"; } - -.fa-tent-arrow-turn-left::before { - content: "\e580"; } - -.fa-tents::before { - content: "\e582"; } - -.fa-wand-magic::before { - content: "\f0d0"; } - -.fa-magic::before { - content: "\f0d0"; } - -.fa-dog::before { - content: "\f6d3"; } - -.fa-carrot::before { - content: "\f787"; } - -.fa-moon::before { - content: "\f186"; } - -.fa-wine-glass-empty::before { - content: "\f5ce"; } - -.fa-wine-glass-alt::before { - content: "\f5ce"; } - -.fa-cheese::before { - content: "\f7ef"; } - -.fa-yin-yang::before { - content: "\f6ad"; } - -.fa-music::before { - content: "\f001"; } - -.fa-code-commit::before { - content: "\f386"; } - -.fa-temperature-low::before { - content: "\f76b"; } - -.fa-person-biking::before { - content: "\f84a"; } - -.fa-biking::before { - content: "\f84a"; } - -.fa-broom::before { - content: "\f51a"; } - -.fa-shield-heart::before { - content: "\e574"; } - -.fa-gopuram::before { - content: "\f664"; } - -.fa-earth-oceania::before { - content: "\e47b"; } - -.fa-globe-oceania::before { - content: "\e47b"; } - -.fa-square-xmark::before { - content: "\f2d3"; } - -.fa-times-square::before { - content: "\f2d3"; } - -.fa-xmark-square::before { - content: "\f2d3"; } - -.fa-hashtag::before { - content: "\23"; } - -.fa-up-right-and-down-left-from-center::before { - content: "\f424"; } - -.fa-expand-alt::before { - content: "\f424"; } - -.fa-oil-can::before { - content: "\f613"; } - -.fa-t::before { - content: "\54"; } - -.fa-hippo::before { - content: "\f6ed"; } - -.fa-chart-column::before { - content: "\e0e3"; } - -.fa-infinity::before { - content: "\f534"; } - -.fa-vial-circle-check::before { - content: "\e596"; } - -.fa-person-arrow-down-to-line::before { - content: "\e538"; } - -.fa-voicemail::before { - content: "\f897"; } - -.fa-fan::before { - content: "\f863"; } - -.fa-person-walking-luggage::before { - content: "\e554"; } - -.fa-up-down::before { - content: "\f338"; } - -.fa-arrows-alt-v::before { - content: "\f338"; } - -.fa-cloud-moon-rain::before { - content: "\f73c"; } - -.fa-calendar::before { - content: "\f133"; } - -.fa-trailer::before { - content: "\e041"; } - -.fa-bahai::before { - content: "\f666"; } - -.fa-haykal::before { - content: "\f666"; } - -.fa-sd-card::before { - content: "\f7c2"; } - -.fa-dragon::before { - content: "\f6d5"; } - -.fa-shoe-prints::before { - content: "\f54b"; } - -.fa-circle-plus::before { - content: "\f055"; } - -.fa-plus-circle::before { - content: "\f055"; } - -.fa-face-grin-tongue-wink::before { - content: "\f58b"; } - -.fa-grin-tongue-wink::before { - content: "\f58b"; } - -.fa-hand-holding::before { - content: "\f4bd"; } - -.fa-plug-circle-exclamation::before { - content: "\e55d"; } - -.fa-link-slash::before { - content: "\f127"; } - -.fa-chain-broken::before { - content: "\f127"; } - -.fa-chain-slash::before { - content: "\f127"; } - -.fa-unlink::before { - content: "\f127"; } - -.fa-clone::before { - content: "\f24d"; } - -.fa-person-walking-arrow-loop-left::before { - content: "\e551"; } - -.fa-arrow-up-z-a::before { - content: "\f882"; } - -.fa-sort-alpha-up-alt::before { - content: "\f882"; } - -.fa-fire-flame-curved::before { - content: "\f7e4"; } - -.fa-fire-alt::before { - content: "\f7e4"; } - -.fa-tornado::before { - content: "\f76f"; } - -.fa-file-circle-plus::before { - content: "\e494"; } - -.fa-book-quran::before { - content: "\f687"; } - -.fa-quran::before { - content: "\f687"; } - -.fa-anchor::before { - content: "\f13d"; } - -.fa-border-all::before { - content: "\f84c"; } - -.fa-face-angry::before { - content: "\f556"; } - -.fa-angry::before { - content: "\f556"; } - -.fa-cookie-bite::before { - content: "\f564"; } - -.fa-arrow-trend-down::before { - content: "\e097"; } - -.fa-rss::before { - content: "\f09e"; } - -.fa-feed::before { - content: "\f09e"; } - -.fa-draw-polygon::before { - content: "\f5ee"; } - -.fa-scale-balanced::before { - content: "\f24e"; } - -.fa-balance-scale::before { - content: "\f24e"; } - -.fa-gauge-simple-high::before { - content: "\f62a"; } - -.fa-tachometer::before { - content: "\f62a"; } - -.fa-tachometer-fast::before { - content: "\f62a"; } - -.fa-shower::before { - content: "\f2cc"; } - -.fa-desktop::before { - content: "\f390"; } - -.fa-desktop-alt::before { - content: "\f390"; } - -.fa-m::before { - content: "\4d"; } - -.fa-table-list::before { - content: "\f00b"; } - -.fa-th-list::before { - content: "\f00b"; } - -.fa-comment-sms::before { - content: "\f7cd"; } - -.fa-sms::before { - content: "\f7cd"; } - -.fa-book::before { - content: "\f02d"; } - -.fa-user-plus::before { - content: "\f234"; } - -.fa-check::before { - content: "\f00c"; } - -.fa-battery-three-quarters::before { - content: "\f241"; } - -.fa-battery-4::before { - content: "\f241"; } - -.fa-house-circle-check::before { - content: "\e509"; } - -.fa-angle-left::before { - content: "\f104"; } - -.fa-diagram-successor::before { - content: "\e47a"; } - -.fa-truck-arrow-right::before { - content: "\e58b"; } - -.fa-arrows-split-up-and-left::before { - content: "\e4bc"; } - -.fa-hand-fist::before { - content: "\f6de"; } - -.fa-fist-raised::before { - content: "\f6de"; } - -.fa-cloud-moon::before { - content: "\f6c3"; } - -.fa-briefcase::before { - content: "\f0b1"; } - -.fa-person-falling::before { - content: "\e546"; } - -.fa-image-portrait::before { - content: "\f3e0"; } - -.fa-portrait::before { - content: "\f3e0"; } - -.fa-user-tag::before { - content: "\f507"; } - -.fa-rug::before { - content: "\e569"; } - -.fa-earth-europe::before { - content: "\f7a2"; } - -.fa-globe-europe::before { - content: "\f7a2"; } - -.fa-cart-flatbed-suitcase::before { - content: "\f59d"; } - -.fa-luggage-cart::before { - content: "\f59d"; } - -.fa-rectangle-xmark::before { - content: "\f410"; } - -.fa-rectangle-times::before { - content: "\f410"; } - -.fa-times-rectangle::before { - content: "\f410"; } - -.fa-window-close::before { - content: "\f410"; } - -.fa-baht-sign::before { - content: "\e0ac"; } - -.fa-book-open::before { - content: "\f518"; } - -.fa-book-journal-whills::before { - content: "\f66a"; } - -.fa-journal-whills::before { - content: "\f66a"; } - -.fa-handcuffs::before { - content: "\e4f8"; } - -.fa-triangle-exclamation::before { - content: "\f071"; } - -.fa-exclamation-triangle::before { - content: "\f071"; } - -.fa-warning::before { - content: "\f071"; } - -.fa-database::before { - content: "\f1c0"; } - -.fa-share::before { - content: "\f064"; } - -.fa-mail-forward::before { - content: "\f064"; } - -.fa-bottle-droplet::before { - content: "\e4c4"; } - -.fa-mask-face::before { - content: "\e1d7"; } - -.fa-hill-rockslide::before { - content: "\e508"; } - -.fa-right-left::before { - content: "\f362"; } - -.fa-exchange-alt::before { - content: "\f362"; } - -.fa-paper-plane::before { - content: "\f1d8"; } - -.fa-road-circle-exclamation::before { - content: "\e565"; } - -.fa-dungeon::before { - content: "\f6d9"; } - -.fa-align-right::before { - content: "\f038"; } - -.fa-money-bill-1-wave::before { - content: "\f53b"; } - -.fa-money-bill-wave-alt::before { - content: "\f53b"; } - -.fa-life-ring::before { - content: "\f1cd"; } - -.fa-hands::before { - content: "\f2a7"; } - -.fa-sign-language::before { - content: "\f2a7"; } - -.fa-signing::before { - content: "\f2a7"; } - -.fa-calendar-day::before { - content: "\f783"; } - -.fa-water-ladder::before { - content: "\f5c5"; } - -.fa-ladder-water::before { - content: "\f5c5"; } - -.fa-swimming-pool::before { - content: "\f5c5"; } - -.fa-arrows-up-down::before { - content: "\f07d"; } - -.fa-arrows-v::before { - content: "\f07d"; } - -.fa-face-grimace::before { - content: "\f57f"; } - -.fa-grimace::before { - content: "\f57f"; } - -.fa-wheelchair-move::before { - content: "\e2ce"; } - -.fa-wheelchair-alt::before { - content: "\e2ce"; } - -.fa-turn-down::before { - content: "\f3be"; } - -.fa-level-down-alt::before { - content: "\f3be"; } - -.fa-person-walking-arrow-right::before { - content: "\e552"; } - -.fa-square-envelope::before { - content: "\f199"; } - -.fa-envelope-square::before { - content: "\f199"; } - -.fa-dice::before { - content: "\f522"; } - -.fa-bowling-ball::before { - content: "\f436"; } - -.fa-brain::before { - content: "\f5dc"; } - -.fa-bandage::before { - content: "\f462"; } - -.fa-band-aid::before { - content: "\f462"; } - -.fa-calendar-minus::before { - content: "\f272"; } - -.fa-circle-xmark::before { - content: "\f057"; } - -.fa-times-circle::before { - content: "\f057"; } - -.fa-xmark-circle::before { - content: "\f057"; } - -.fa-gifts::before { - content: "\f79c"; } - -.fa-hotel::before { - content: "\f594"; } - -.fa-earth-asia::before { - content: "\f57e"; } - -.fa-globe-asia::before { - content: "\f57e"; } - -.fa-id-card-clip::before { - content: "\f47f"; } - -.fa-id-card-alt::before { - content: "\f47f"; } - -.fa-magnifying-glass-plus::before { - content: "\f00e"; } - -.fa-search-plus::before { - content: "\f00e"; } - -.fa-thumbs-up::before { - content: "\f164"; } - -.fa-user-clock::before { - content: "\f4fd"; } - -.fa-hand-dots::before { - content: "\f461"; } - -.fa-allergies::before { - content: "\f461"; } - -.fa-file-invoice::before { - content: "\f570"; } - -.fa-window-minimize::before { - content: "\f2d1"; } - -.fa-mug-saucer::before { - content: "\f0f4"; } - -.fa-coffee::before { - content: "\f0f4"; } - -.fa-brush::before { - content: "\f55d"; } - -.fa-mask::before { - content: "\f6fa"; } - -.fa-magnifying-glass-minus::before { - content: "\f010"; } - -.fa-search-minus::before { - content: "\f010"; } - -.fa-ruler-vertical::before { - content: "\f548"; } - -.fa-user-large::before { - content: "\f406"; } - -.fa-user-alt::before { - content: "\f406"; } - -.fa-train-tram::before { - content: "\e5b4"; } - -.fa-user-nurse::before { - content: "\f82f"; } - -.fa-syringe::before { - content: "\f48e"; } - -.fa-cloud-sun::before { - content: "\f6c4"; } - -.fa-stopwatch-20::before { - content: "\e06f"; } - -.fa-square-full::before { - content: "\f45c"; } - -.fa-magnet::before { - content: "\f076"; } - -.fa-jar::before { - content: "\e516"; } - -.fa-note-sticky::before { - content: "\f249"; } - -.fa-sticky-note::before { - content: "\f249"; } - -.fa-bug-slash::before { - content: "\e490"; } - -.fa-arrow-up-from-water-pump::before { - content: "\e4b6"; } - -.fa-bone::before { - content: "\f5d7"; } - -.fa-user-injured::before { - content: "\f728"; } - -.fa-face-sad-tear::before { - content: "\f5b4"; } - -.fa-sad-tear::before { - content: "\f5b4"; } - -.fa-plane::before { - content: "\f072"; } - -.fa-tent-arrows-down::before { - content: "\e581"; } - -.fa-exclamation::before { - content: "\21"; } - -.fa-arrows-spin::before { - content: "\e4bb"; } - -.fa-print::before { - content: "\f02f"; } - -.fa-turkish-lira-sign::before { - content: "\e2bb"; } - -.fa-try::before { - content: "\e2bb"; } - -.fa-turkish-lira::before { - content: "\e2bb"; } - -.fa-dollar-sign::before { - content: "\24"; } - -.fa-dollar::before { - content: "\24"; } - -.fa-usd::before { - content: "\24"; } - -.fa-x::before { - content: "\58"; } - -.fa-magnifying-glass-dollar::before { - content: "\f688"; } - -.fa-search-dollar::before { - content: "\f688"; } - -.fa-users-gear::before { - content: "\f509"; } - -.fa-users-cog::before { - content: "\f509"; } - -.fa-person-military-pointing::before { - content: "\e54a"; } - -.fa-building-columns::before { - content: "\f19c"; } - -.fa-bank::before { - content: "\f19c"; } - -.fa-institution::before { - content: "\f19c"; } - -.fa-museum::before { - content: "\f19c"; } - -.fa-university::before { - content: "\f19c"; } - -.fa-umbrella::before { - content: "\f0e9"; } - -.fa-trowel::before { - content: "\e589"; } - -.fa-d::before { - content: "\44"; } - -.fa-stapler::before { - content: "\e5af"; } - -.fa-masks-theater::before { - content: "\f630"; } - -.fa-theater-masks::before { - content: "\f630"; } - -.fa-kip-sign::before { - content: "\e1c4"; } - -.fa-hand-point-left::before { - content: "\f0a5"; } - -.fa-handshake-simple::before { - content: "\f4c6"; } - -.fa-handshake-alt::before { - content: "\f4c6"; } - -.fa-jet-fighter::before { - content: "\f0fb"; } - -.fa-fighter-jet::before { - content: "\f0fb"; } - -.fa-square-share-nodes::before { - content: "\f1e1"; } - -.fa-share-alt-square::before { - content: "\f1e1"; } - -.fa-barcode::before { - content: "\f02a"; } - -.fa-plus-minus::before { - content: "\e43c"; } - -.fa-video::before { - content: "\f03d"; } - -.fa-video-camera::before { - content: "\f03d"; } - -.fa-graduation-cap::before { - content: "\f19d"; } - -.fa-mortar-board::before { - content: "\f19d"; } - -.fa-hand-holding-medical::before { - content: "\e05c"; } - -.fa-person-circle-check::before { - content: "\e53e"; } - -.fa-turn-up::before { - content: "\f3bf"; } - -.fa-level-up-alt::before { - content: "\f3bf"; } - -.sr-only, -.fa-sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; } - -.sr-only-focusable:not(:focus), -.fa-sr-only-focusable:not(:focus) { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; } - -/*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2024 Fonticons, Inc. - */ -:root, :host { - --fa-style-family-classic: 'Font Awesome 6 Free'; - --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } - -@font-face { - font-family: 'Font Awesome 6 Free'; - font-style: normal; - font-weight: 900; - font-display: block; - src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } - -.fas, .td-offline-search-results__close-button:after, -.fa-solid { - font-weight: 900; } - -/*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2024 Fonticons, Inc. - */ -:root, :host { - --fa-style-family-brands: 'Font Awesome 6 Brands'; - --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } - -@font-face { - font-family: 'Font Awesome 6 Brands'; - font-style: normal; - font-weight: 400; - font-display: block; - src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } - -.fab, -.fa-brands { - font-weight: 400; } - -.fa-monero:before { - content: "\f3d0"; } - -.fa-hooli:before { - content: "\f427"; } - -.fa-yelp:before { - content: "\f1e9"; } - -.fa-cc-visa:before { - content: "\f1f0"; } - -.fa-lastfm:before { - content: "\f202"; } - -.fa-shopware:before { - content: "\f5b5"; } - -.fa-creative-commons-nc:before { - content: "\f4e8"; } - -.fa-aws:before { - content: "\f375"; } - -.fa-redhat:before { - content: "\f7bc"; } - -.fa-yoast:before { - content: "\f2b1"; } - -.fa-cloudflare:before { - content: "\e07d"; } - -.fa-ups:before { - content: "\f7e0"; } - -.fa-pixiv:before { - content: "\e640"; } - -.fa-wpexplorer:before { - content: "\f2de"; } - -.fa-dyalog:before { - content: "\f399"; } - -.fa-bity:before { - content: "\f37a"; } - -.fa-stackpath:before { - content: "\f842"; } - -.fa-buysellads:before { - content: "\f20d"; } - -.fa-first-order:before { - content: "\f2b0"; } - -.fa-modx:before { - content: "\f285"; } - -.fa-guilded:before { - content: "\e07e"; } - -.fa-vnv:before { - content: "\f40b"; } - -.fa-square-js:before { - content: "\f3b9"; } - -.fa-js-square:before { - content: "\f3b9"; } - -.fa-microsoft:before { - content: "\f3ca"; } - -.fa-qq:before { - content: "\f1d6"; } - -.fa-orcid:before { - content: "\f8d2"; } - -.fa-java:before { - content: "\f4e4"; } - -.fa-invision:before { - content: "\f7b0"; } - -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; } - -.fa-centercode:before { - content: "\f380"; } - -.fa-glide-g:before { - content: "\f2a6"; } - -.fa-drupal:before { - content: "\f1a9"; } - -.fa-jxl:before { - content: "\e67b"; } - -.fa-hire-a-helper:before { - content: "\f3b0"; } - -.fa-creative-commons-by:before { - content: "\f4e7"; } - -.fa-unity:before { - content: "\e049"; } - -.fa-whmcs:before { - content: "\f40d"; } - -.fa-rocketchat:before { - content: "\f3e8"; } - -.fa-vk:before { - content: "\f189"; } - -.fa-untappd:before { - content: "\f405"; } - -.fa-mailchimp:before { - content: "\f59e"; } - -.fa-css3-alt:before { - content: "\f38b"; } - -.fa-square-reddit:before { - content: "\f1a2"; } - -.fa-reddit-square:before { - content: "\f1a2"; } - -.fa-vimeo-v:before { - content: "\f27d"; } - -.fa-contao:before { - content: "\f26d"; } - -.fa-square-font-awesome:before { - content: "\e5ad"; } - -.fa-deskpro:before { - content: "\f38f"; } - -.fa-brave:before { - content: "\e63c"; } - -.fa-sistrix:before { - content: "\f3ee"; } - -.fa-square-instagram:before { - content: "\e055"; } - -.fa-instagram-square:before { - content: "\e055"; } - -.fa-battle-net:before { - content: "\f835"; } - -.fa-the-red-yeti:before { - content: "\f69d"; } - -.fa-square-hacker-news:before { - content: "\f3af"; } - -.fa-hacker-news-square:before { - content: "\f3af"; } - -.fa-edge:before { - content: "\f282"; } - -.fa-threads:before { - content: "\e618"; } - -.fa-napster:before { - content: "\f3d2"; } - -.fa-square-snapchat:before { - content: "\f2ad"; } - -.fa-snapchat-square:before { - content: "\f2ad"; } - -.fa-google-plus-g:before { - content: "\f0d5"; } - -.fa-artstation:before { - content: "\f77a"; } - -.fa-markdown:before { - content: "\f60f"; } - -.fa-sourcetree:before { - content: "\f7d3"; } - -.fa-google-plus:before { - content: "\f2b3"; } - -.fa-diaspora:before { - content: "\f791"; } - -.fa-foursquare:before { - content: "\f180"; } - -.fa-stack-overflow:before { - content: "\f16c"; } - -.fa-github-alt:before { - content: "\f113"; } - -.fa-phoenix-squadron:before { - content: "\f511"; } - -.fa-pagelines:before { - content: "\f18c"; } - -.fa-algolia:before { - content: "\f36c"; } - -.fa-red-river:before { - content: "\f3e3"; } - -.fa-creative-commons-sa:before { - content: "\f4ef"; } - -.fa-safari:before { - content: "\f267"; } - -.fa-google:before { - content: "\f1a0"; } - -.fa-square-font-awesome-stroke:before { - content: "\f35c"; } - -.fa-font-awesome-alt:before { - content: "\f35c"; } - -.fa-atlassian:before { - content: "\f77b"; } - -.fa-linkedin-in:before { - content: "\f0e1"; } - -.fa-digital-ocean:before { - content: "\f391"; } - -.fa-nimblr:before { - content: "\f5a8"; } - -.fa-chromecast:before { - content: "\f838"; } - -.fa-evernote:before { - content: "\f839"; } - -.fa-hacker-news:before { - content: "\f1d4"; } - -.fa-creative-commons-sampling:before { - content: "\f4f0"; } - -.fa-adversal:before { - content: "\f36a"; } - -.fa-creative-commons:before { - content: "\f25e"; } - -.fa-watchman-monitoring:before { - content: "\e087"; } - -.fa-fonticons:before { - content: "\f280"; } - -.fa-weixin:before { - content: "\f1d7"; } - -.fa-shirtsinbulk:before { - content: "\f214"; } - -.fa-codepen:before { - content: "\f1cb"; } - -.fa-git-alt:before { - content: "\f841"; } - -.fa-lyft:before { - content: "\f3c3"; } - -.fa-rev:before { - content: "\f5b2"; } - -.fa-windows:before { - content: "\f17a"; } - -.fa-wizards-of-the-coast:before { - content: "\f730"; } - -.fa-square-viadeo:before { - content: "\f2aa"; } - -.fa-viadeo-square:before { - content: "\f2aa"; } - -.fa-meetup:before { - content: "\f2e0"; } - -.fa-centos:before { - content: "\f789"; } - -.fa-adn:before { - content: "\f170"; } - -.fa-cloudsmith:before { - content: "\f384"; } - -.fa-opensuse:before { - content: "\e62b"; } - -.fa-pied-piper-alt:before { - content: "\f1a8"; } - -.fa-square-dribbble:before { - content: "\f397"; } - -.fa-dribbble-square:before { - content: "\f397"; } - -.fa-codiepie:before { - content: "\f284"; } - -.fa-node:before { - content: "\f419"; } - -.fa-mix:before { - content: "\f3cb"; } - -.fa-steam:before { - content: "\f1b6"; } - -.fa-cc-apple-pay:before { - content: "\f416"; } - -.fa-scribd:before { - content: "\f28a"; } - -.fa-debian:before { - content: "\e60b"; } - -.fa-openid:before { - content: "\f19b"; } - -.fa-instalod:before { - content: "\e081"; } - -.fa-expeditedssl:before { - content: "\f23e"; } - -.fa-sellcast:before { - content: "\f2da"; } - -.fa-square-twitter:before { - content: "\f081"; } - -.fa-twitter-square:before { - content: "\f081"; } - -.fa-r-project:before { - content: "\f4f7"; } - -.fa-delicious:before { - content: "\f1a5"; } - -.fa-freebsd:before { - content: "\f3a4"; } - -.fa-vuejs:before { - content: "\f41f"; } - -.fa-accusoft:before { - content: "\f369"; } - -.fa-ioxhost:before { - content: "\f208"; } - -.fa-fonticons-fi:before { - content: "\f3a2"; } - -.fa-app-store:before { - content: "\f36f"; } - -.fa-cc-mastercard:before { - content: "\f1f1"; } - -.fa-itunes-note:before { - content: "\f3b5"; } - -.fa-golang:before { - content: "\e40f"; } - -.fa-kickstarter:before { - content: "\f3bb"; } - -.fa-square-kickstarter:before { - content: "\f3bb"; } - -.fa-grav:before { - content: "\f2d6"; } - -.fa-weibo:before { - content: "\f18a"; } - -.fa-uncharted:before { - content: "\e084"; } - -.fa-firstdraft:before { - content: "\f3a1"; } - -.fa-square-youtube:before { - content: "\f431"; } - -.fa-youtube-square:before { - content: "\f431"; } - -.fa-wikipedia-w:before { - content: "\f266"; } - -.fa-wpressr:before { - content: "\f3e4"; } - -.fa-rendact:before { - content: "\f3e4"; } - -.fa-angellist:before { - content: "\f209"; } - -.fa-galactic-republic:before { - content: "\f50c"; } - -.fa-nfc-directional:before { - content: "\e530"; } - -.fa-skype:before { - content: "\f17e"; } - -.fa-joget:before { - content: "\f3b7"; } - -.fa-fedora:before { - content: "\f798"; } - -.fa-stripe-s:before { - content: "\f42a"; } - -.fa-meta:before { - content: "\e49b"; } - -.fa-laravel:before { - content: "\f3bd"; } - -.fa-hotjar:before { - content: "\f3b1"; } - -.fa-bluetooth-b:before { - content: "\f294"; } - -.fa-square-letterboxd:before { - content: "\e62e"; } - -.fa-sticker-mule:before { - content: "\f3f7"; } - -.fa-creative-commons-zero:before { - content: "\f4f3"; } - -.fa-hips:before { - content: "\f452"; } - -.fa-behance:before { - content: "\f1b4"; } - -.fa-reddit:before { - content: "\f1a1"; } - -.fa-discord:before { - content: "\f392"; } - -.fa-chrome:before { - content: "\f268"; } - -.fa-app-store-ios:before { - content: "\f370"; } - -.fa-cc-discover:before { - content: "\f1f2"; } - -.fa-wpbeginner:before { - content: "\f297"; } - -.fa-confluence:before { - content: "\f78d"; } - -.fa-shoelace:before { - content: "\e60c"; } - -.fa-mdb:before { - content: "\f8ca"; } - -.fa-dochub:before { - content: "\f394"; } - -.fa-accessible-icon:before { - content: "\f368"; } - -.fa-ebay:before { - content: "\f4f4"; } - -.fa-amazon:before { - content: "\f270"; } - -.fa-unsplash:before { - content: "\e07c"; } - -.fa-yarn:before { - content: "\f7e3"; } - -.fa-square-steam:before { - content: "\f1b7"; } - -.fa-steam-square:before { - content: "\f1b7"; } - -.fa-500px:before { - content: "\f26e"; } - -.fa-square-vimeo:before { - content: "\f194"; } - -.fa-vimeo-square:before { - content: "\f194"; } - -.fa-asymmetrik:before { - content: "\f372"; } - -.fa-font-awesome:before { - content: "\f2b4"; } - -.fa-font-awesome-flag:before { - content: "\f2b4"; } - -.fa-font-awesome-logo-full:before { - content: "\f2b4"; } - -.fa-gratipay:before { - content: "\f184"; } - -.fa-apple:before { - content: "\f179"; } - -.fa-hive:before { - content: "\e07f"; } - -.fa-gitkraken:before { - content: "\f3a6"; } - -.fa-keybase:before { - content: "\f4f5"; } - -.fa-apple-pay:before { - content: "\f415"; } - -.fa-padlet:before { - content: "\e4a0"; } - -.fa-amazon-pay:before { - content: "\f42c"; } - -.fa-square-github:before { - content: "\f092"; } - -.fa-github-square:before { - content: "\f092"; } - -.fa-stumbleupon:before { - content: "\f1a4"; } - -.fa-fedex:before { - content: "\f797"; } - -.fa-phoenix-framework:before { - content: "\f3dc"; } - -.fa-shopify:before { - content: "\e057"; } - -.fa-neos:before { - content: "\f612"; } - -.fa-square-threads:before { - content: "\e619"; } - -.fa-hackerrank:before { - content: "\f5f7"; } - -.fa-researchgate:before { - content: "\f4f8"; } - -.fa-swift:before { - content: "\f8e1"; } - -.fa-angular:before { - content: "\f420"; } - -.fa-speakap:before { - content: "\f3f3"; } - -.fa-angrycreative:before { - content: "\f36e"; } - -.fa-y-combinator:before { - content: "\f23b"; } - -.fa-empire:before { - content: "\f1d1"; } - -.fa-envira:before { - content: "\f299"; } - -.fa-google-scholar:before { - content: "\e63b"; } - -.fa-square-gitlab:before { - content: "\e5ae"; } - -.fa-gitlab-square:before { - content: "\e5ae"; } - -.fa-studiovinari:before { - content: "\f3f8"; } - -.fa-pied-piper:before { - content: "\f2ae"; } - -.fa-wordpress:before { - content: "\f19a"; } - -.fa-product-hunt:before { - content: "\f288"; } - -.fa-firefox:before { - content: "\f269"; } - -.fa-linode:before { - content: "\f2b8"; } - -.fa-goodreads:before { - content: "\f3a8"; } - -.fa-square-odnoklassniki:before { - content: "\f264"; } - -.fa-odnoklassniki-square:before { - content: "\f264"; } - -.fa-jsfiddle:before { - content: "\f1cc"; } - -.fa-sith:before { - content: "\f512"; } - -.fa-themeisle:before { - content: "\f2b2"; } - -.fa-page4:before { - content: "\f3d7"; } - -.fa-hashnode:before { - content: "\e499"; } - -.fa-react:before { - content: "\f41b"; } - -.fa-cc-paypal:before { - content: "\f1f4"; } - -.fa-squarespace:before { - content: "\f5be"; } - -.fa-cc-stripe:before { - content: "\f1f5"; } - -.fa-creative-commons-share:before { - content: "\f4f2"; } - -.fa-bitcoin:before { - content: "\f379"; } - -.fa-keycdn:before { - content: "\f3ba"; } - -.fa-opera:before { - content: "\f26a"; } - -.fa-itch-io:before { - content: "\f83a"; } - -.fa-umbraco:before { - content: "\f8e8"; } - -.fa-galactic-senate:before { - content: "\f50d"; } - -.fa-ubuntu:before { - content: "\f7df"; } - -.fa-draft2digital:before { - content: "\f396"; } - -.fa-stripe:before { - content: "\f429"; } - -.fa-houzz:before { - content: "\f27c"; } - -.fa-gg:before { - content: "\f260"; } - -.fa-dhl:before { - content: "\f790"; } - -.fa-square-pinterest:before { - content: "\f0d3"; } - -.fa-pinterest-square:before { - content: "\f0d3"; } - -.fa-xing:before { - content: "\f168"; } - -.fa-blackberry:before { - content: "\f37b"; } - -.fa-creative-commons-pd:before { - content: "\f4ec"; } - -.fa-playstation:before { - content: "\f3df"; } - -.fa-quinscape:before { - content: "\f459"; } - -.fa-less:before { - content: "\f41d"; } - -.fa-blogger-b:before { - content: "\f37d"; } - -.fa-opencart:before { - content: "\f23d"; } - -.fa-vine:before { - content: "\f1ca"; } - -.fa-signal-messenger:before { - content: "\e663"; } - -.fa-paypal:before { - content: "\f1ed"; } - -.fa-gitlab:before { - content: "\f296"; } - -.fa-typo3:before { - content: "\f42b"; } - -.fa-reddit-alien:before { - content: "\f281"; } - -.fa-yahoo:before { - content: "\f19e"; } - -.fa-dailymotion:before { - content: "\e052"; } - -.fa-affiliatetheme:before { - content: "\f36b"; } - -.fa-pied-piper-pp:before { - content: "\f1a7"; } - -.fa-bootstrap:before { - content: "\f836"; } - -.fa-odnoklassniki:before { - content: "\f263"; } - -.fa-nfc-symbol:before { - content: "\e531"; } - -.fa-mintbit:before { - content: "\e62f"; } - -.fa-ethereum:before { - content: "\f42e"; } - -.fa-speaker-deck:before { - content: "\f83c"; } - -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; } - -.fa-patreon:before { - content: "\f3d9"; } - -.fa-avianex:before { - content: "\f374"; } - -.fa-ello:before { - content: "\f5f1"; } - -.fa-gofore:before { - content: "\f3a7"; } - -.fa-bimobject:before { - content: "\f378"; } - -.fa-brave-reverse:before { - content: "\e63d"; } - -.fa-facebook-f:before { - content: "\f39e"; } - -.fa-square-google-plus:before { - content: "\f0d4"; } - -.fa-google-plus-square:before { - content: "\f0d4"; } - -.fa-web-awesome:before { - content: "\e682"; } - -.fa-mandalorian:before { - content: "\f50f"; } - -.fa-first-order-alt:before { - content: "\f50a"; } - -.fa-osi:before { - content: "\f41a"; } - -.fa-google-wallet:before { - content: "\f1ee"; } - -.fa-d-and-d-beyond:before { - content: "\f6ca"; } - -.fa-periscope:before { - content: "\f3da"; } - -.fa-fulcrum:before { - content: "\f50b"; } - -.fa-cloudscale:before { - content: "\f383"; } - -.fa-forumbee:before { - content: "\f211"; } - -.fa-mizuni:before { - content: "\f3cc"; } - -.fa-schlix:before { - content: "\f3ea"; } - -.fa-square-xing:before { - content: "\f169"; } - -.fa-xing-square:before { - content: "\f169"; } - -.fa-bandcamp:before { - content: "\f2d5"; } - -.fa-wpforms:before { - content: "\f298"; } - -.fa-cloudversify:before { - content: "\f385"; } - -.fa-usps:before { - content: "\f7e1"; } - -.fa-megaport:before { - content: "\f5a3"; } - -.fa-magento:before { - content: "\f3c4"; } - -.fa-spotify:before { - content: "\f1bc"; } - -.fa-optin-monster:before { - content: "\f23c"; } - -.fa-fly:before { - content: "\f417"; } - -.fa-aviato:before { - content: "\f421"; } - -.fa-itunes:before { - content: "\f3b4"; } - -.fa-cuttlefish:before { - content: "\f38c"; } - -.fa-blogger:before { - content: "\f37c"; } - -.fa-flickr:before { - content: "\f16e"; } - -.fa-viber:before { - content: "\f409"; } - -.fa-soundcloud:before { - content: "\f1be"; } - -.fa-digg:before { - content: "\f1a6"; } - -.fa-tencent-weibo:before { - content: "\f1d5"; } - -.fa-letterboxd:before { - content: "\e62d"; } - -.fa-symfony:before { - content: "\f83d"; } - -.fa-maxcdn:before { - content: "\f136"; } - -.fa-etsy:before { - content: "\f2d7"; } - -.fa-facebook-messenger:before { - content: "\f39f"; } - -.fa-audible:before { - content: "\f373"; } - -.fa-think-peaks:before { - content: "\f731"; } - -.fa-bilibili:before { - content: "\e3d9"; } - -.fa-erlang:before { - content: "\f39d"; } - -.fa-x-twitter:before { - content: "\e61b"; } - -.fa-cotton-bureau:before { - content: "\f89e"; } - -.fa-dashcube:before { - content: "\f210"; } - -.fa-42-group:before { - content: "\e080"; } - -.fa-innosoft:before { - content: "\e080"; } - -.fa-stack-exchange:before { - content: "\f18d"; } - -.fa-elementor:before { - content: "\f430"; } - -.fa-square-pied-piper:before { - content: "\e01e"; } - -.fa-pied-piper-square:before { - content: "\e01e"; } - -.fa-creative-commons-nd:before { - content: "\f4eb"; } - -.fa-palfed:before { - content: "\f3d8"; } - -.fa-superpowers:before { - content: "\f2dd"; } - -.fa-resolving:before { - content: "\f3e7"; } - -.fa-xbox:before { - content: "\f412"; } - -.fa-square-web-awesome-stroke:before { - content: "\e684"; } - -.fa-searchengin:before { - content: "\f3eb"; } - -.fa-tiktok:before { - content: "\e07b"; } - -.fa-square-facebook:before { - content: "\f082"; } - -.fa-facebook-square:before { - content: "\f082"; } - -.fa-renren:before { - content: "\f18b"; } - -.fa-linux:before { - content: "\f17c"; } - -.fa-glide:before { - content: "\f2a5"; } - -.fa-linkedin:before { - content: "\f08c"; } - -.fa-hubspot:before { - content: "\f3b2"; } - -.fa-deploydog:before { - content: "\f38e"; } - -.fa-twitch:before { - content: "\f1e8"; } - -.fa-ravelry:before { - content: "\f2d9"; } - -.fa-mixer:before { - content: "\e056"; } - -.fa-square-lastfm:before { - content: "\f203"; } - -.fa-lastfm-square:before { - content: "\f203"; } - -.fa-vimeo:before { - content: "\f40a"; } - -.fa-mendeley:before { - content: "\f7b3"; } - -.fa-uniregistry:before { - content: "\f404"; } - -.fa-figma:before { - content: "\f799"; } - -.fa-creative-commons-remix:before { - content: "\f4ee"; } - -.fa-cc-amazon-pay:before { - content: "\f42d"; } - -.fa-dropbox:before { - content: "\f16b"; } - -.fa-instagram:before { - content: "\f16d"; } - -.fa-cmplid:before { - content: "\e360"; } - -.fa-upwork:before { - content: "\e641"; } - -.fa-facebook:before { - content: "\f09a"; } - -.fa-gripfire:before { - content: "\f3ac"; } - -.fa-jedi-order:before { - content: "\f50e"; } - -.fa-uikit:before { - content: "\f403"; } - -.fa-fort-awesome-alt:before { - content: "\f3a3"; } - -.fa-phabricator:before { - content: "\f3db"; } - -.fa-ussunnah:before { - content: "\f407"; } - -.fa-earlybirds:before { - content: "\f39a"; } - -.fa-trade-federation:before { - content: "\f513"; } - -.fa-autoprefixer:before { - content: "\f41c"; } - -.fa-whatsapp:before { - content: "\f232"; } - -.fa-square-upwork:before { - content: "\e67c"; } - -.fa-slideshare:before { - content: "\f1e7"; } - -.fa-google-play:before { - content: "\f3ab"; } - -.fa-viadeo:before { - content: "\f2a9"; } - -.fa-line:before { - content: "\f3c0"; } - -.fa-google-drive:before { - content: "\f3aa"; } - -.fa-servicestack:before { - content: "\f3ec"; } - -.fa-simplybuilt:before { - content: "\f215"; } - -.fa-bitbucket:before { - content: "\f171"; } - -.fa-imdb:before { - content: "\f2d8"; } - -.fa-deezer:before { - content: "\e077"; } - -.fa-raspberry-pi:before { - content: "\f7bb"; } - -.fa-jira:before { - content: "\f7b1"; } - -.fa-docker:before { - content: "\f395"; } - -.fa-screenpal:before { - content: "\e570"; } - -.fa-bluetooth:before { - content: "\f293"; } - -.fa-gitter:before { - content: "\f426"; } - -.fa-d-and-d:before { - content: "\f38d"; } - -.fa-microblog:before { - content: "\e01a"; } - -.fa-cc-diners-club:before { - content: "\f24c"; } - -.fa-gg-circle:before { - content: "\f261"; } - -.fa-pied-piper-hat:before { - content: "\f4e5"; } - -.fa-kickstarter-k:before { - content: "\f3bc"; } - -.fa-yandex:before { - content: "\f413"; } - -.fa-readme:before { - content: "\f4d5"; } - -.fa-html5:before { - content: "\f13b"; } - -.fa-sellsy:before { - content: "\f213"; } - -.fa-square-web-awesome:before { - content: "\e683"; } - -.fa-sass:before { - content: "\f41e"; } - -.fa-wirsindhandwerk:before { - content: "\e2d0"; } - -.fa-wsh:before { - content: "\e2d0"; } - -.fa-buromobelexperte:before { - content: "\f37f"; } - -.fa-salesforce:before { - content: "\f83b"; } - -.fa-octopus-deploy:before { - content: "\e082"; } - -.fa-medapps:before { - content: "\f3c6"; } - -.fa-ns8:before { - content: "\f3d5"; } - -.fa-pinterest-p:before { - content: "\f231"; } - -.fa-apper:before { - content: "\f371"; } - -.fa-fort-awesome:before { - content: "\f286"; } - -.fa-waze:before { - content: "\f83f"; } - -.fa-bluesky:before { - content: "\e671"; } - -.fa-cc-jcb:before { - content: "\f24b"; } - -.fa-snapchat:before { - content: "\f2ab"; } - -.fa-snapchat-ghost:before { - content: "\f2ab"; } - -.fa-fantasy-flight-games:before { - content: "\f6dc"; } - -.fa-rust:before { - content: "\e07a"; } - -.fa-wix:before { - content: "\f5cf"; } - -.fa-square-behance:before { - content: "\f1b5"; } - -.fa-behance-square:before { - content: "\f1b5"; } - -.fa-supple:before { - content: "\f3f9"; } - -.fa-webflow:before { - content: "\e65c"; } - -.fa-rebel:before { - content: "\f1d0"; } - -.fa-css3:before { - content: "\f13c"; } - -.fa-staylinked:before { - content: "\f3f5"; } - -.fa-kaggle:before { - content: "\f5fa"; } - -.fa-space-awesome:before { - content: "\e5ac"; } - -.fa-deviantart:before { - content: "\f1bd"; } - -.fa-cpanel:before { - content: "\f388"; } - -.fa-goodreads-g:before { - content: "\f3a9"; } - -.fa-square-git:before { - content: "\f1d2"; } - -.fa-git-square:before { - content: "\f1d2"; } - -.fa-square-tumblr:before { - content: "\f174"; } - -.fa-tumblr-square:before { - content: "\f174"; } - -.fa-trello:before { - content: "\f181"; } - -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; } - -.fa-get-pocket:before { - content: "\f265"; } - -.fa-perbyte:before { - content: "\e083"; } - -.fa-grunt:before { - content: "\f3ad"; } - -.fa-weebly:before { - content: "\f5cc"; } - -.fa-connectdevelop:before { - content: "\f20e"; } - -.fa-leanpub:before { - content: "\f212"; } - -.fa-black-tie:before { - content: "\f27e"; } - -.fa-themeco:before { - content: "\f5c6"; } - -.fa-python:before { - content: "\f3e2"; } - -.fa-android:before { - content: "\f17b"; } - -.fa-bots:before { - content: "\e340"; } - -.fa-free-code-camp:before { - content: "\f2c5"; } - -.fa-hornbill:before { - content: "\f592"; } - -.fa-js:before { - content: "\f3b8"; } - -.fa-ideal:before { - content: "\e013"; } - -.fa-git:before { - content: "\f1d3"; } - -.fa-dev:before { - content: "\f6cc"; } - -.fa-sketch:before { - content: "\f7c6"; } - -.fa-yandex-international:before { - content: "\f414"; } - -.fa-cc-amex:before { - content: "\f1f3"; } - -.fa-uber:before { - content: "\f402"; } - -.fa-github:before { - content: "\f09b"; } - -.fa-php:before { - content: "\f457"; } - -.fa-alipay:before { - content: "\f642"; } - -.fa-youtube:before { - content: "\f167"; } - -.fa-skyatlas:before { - content: "\f216"; } - -.fa-firefox-browser:before { - content: "\e007"; } - -.fa-replyd:before { - content: "\f3e6"; } - -.fa-suse:before { - content: "\f7d6"; } - -.fa-jenkins:before { - content: "\f3b6"; } - -.fa-twitter:before { - content: "\f099"; } - -.fa-rockrms:before { - content: "\f3e9"; } - -.fa-pinterest:before { - content: "\f0d2"; } - -.fa-buffer:before { - content: "\f837"; } - -.fa-npm:before { - content: "\f3d4"; } - -.fa-yammer:before { - content: "\f840"; } - -.fa-btc:before { - content: "\f15a"; } - -.fa-dribbble:before { - content: "\f17d"; } - -.fa-stumbleupon-circle:before { - content: "\f1a3"; } - -.fa-internet-explorer:before { - content: "\f26b"; } - -.fa-stubber:before { - content: "\e5c7"; } - -.fa-telegram:before { - content: "\f2c6"; } - -.fa-telegram-plane:before { - content: "\f2c6"; } - -.fa-old-republic:before { - content: "\f510"; } - -.fa-odysee:before { - content: "\e5c6"; } - -.fa-square-whatsapp:before { - content: "\f40c"; } - -.fa-whatsapp-square:before { - content: "\f40c"; } - -.fa-node-js:before { - content: "\f3d3"; } - -.fa-edge-legacy:before { - content: "\e078"; } - -.fa-slack:before { - content: "\f198"; } - -.fa-slack-hash:before { - content: "\f198"; } - -.fa-medrt:before { - content: "\f3c8"; } - -.fa-usb:before { - content: "\f287"; } - -.fa-tumblr:before { - content: "\f173"; } - -.fa-vaadin:before { - content: "\f408"; } - -.fa-quora:before { - content: "\f2c4"; } - -.fa-square-x-twitter:before { - content: "\e61a"; } - -.fa-reacteurope:before { - content: "\f75d"; } - -.fa-medium:before { - content: "\f23a"; } - -.fa-medium-m:before { - content: "\f23a"; } - -.fa-amilia:before { - content: "\f36d"; } - -.fa-mixcloud:before { - content: "\f289"; } - -.fa-flipboard:before { - content: "\f44d"; } - -.fa-viacoin:before { - content: "\f237"; } - -.fa-critical-role:before { - content: "\f6c9"; } - -.fa-sitrox:before { - content: "\e44a"; } - -.fa-discourse:before { - content: "\f393"; } - -.fa-joomla:before { - content: "\f1aa"; } - -.fa-mastodon:before { - content: "\f4f6"; } - -.fa-airbnb:before { - content: "\f834"; } - -.fa-wolf-pack-battalion:before { - content: "\f514"; } - -.fa-buy-n-large:before { - content: "\f8a6"; } - -.fa-gulp:before { - content: "\f3ae"; } - -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; } - -.fa-strava:before { - content: "\f428"; } - -.fa-ember:before { - content: "\f423"; } - -.fa-canadian-maple-leaf:before { - content: "\f785"; } - -.fa-teamspeak:before { - content: "\f4f9"; } - -.fa-pushed:before { - content: "\f3e1"; } - -.fa-wordpress-simple:before { - content: "\f411"; } - -.fa-nutritionix:before { - content: "\f3d6"; } - -.fa-wodu:before { - content: "\e088"; } - -.fa-google-pay:before { - content: "\e079"; } - -.fa-intercom:before { - content: "\f7af"; } - -.fa-zhihu:before { - content: "\f63f"; } - -.fa-korvue:before { - content: "\f42f"; } - -.fa-pix:before { - content: "\e43a"; } - -.fa-steam-symbol:before { - content: "\f3f6"; } - -/* -Projects can override this file. For details, see: -https://www.docsy.dev/docs/adding-content/lookandfeel/#project-style-files -*/ -.td-border-top { - border: none; - border-top: 1px solid #eee; } - -.td-border-none { - border: none; } - -.td-block-padding, .td-default main section { - padding-top: 4rem; - padding-bottom: 4rem; } - @media (min-width: 768px) { - .td-block-padding, .td-default main section { - padding-top: 5rem; - padding-bottom: 5rem; } } -.td-overlay { - position: relative; } - .td-overlay::after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; } - .td-overlay--dark::after { - background-color: rgba(64, 63, 76, 0.3); } - .td-overlay--light::after { - background-color: rgba(211, 243, 238, 0.3); } - .td-overlay__inner { - position: relative; - z-index: 1; } - -@media (min-width: 992px) { - .td-max-width-on-larger-screens, .td-card.card, .td-card-group.card-group, .td-content > .tab-content .tab-pane, .td-content .footnotes, - .td-content > .alert, - .td-content > .highlight, - .td-content > .lead, - .td-content > .td-table, - .td-box .td-content > table, - .td-content > table, - .td-content > blockquote, - .td-content > dl dd, - .td-content > h1, - .td-content > .h1, - .td-content > h2, - .td-content > .h2, - .td-content > ol, - .td-content > p, - .td-content > pre, - .td-content > ul { - max-width: 80%; } } - -.-bg-blue { - color: #fff; - background-color: #0d6efd; } - -.-bg-blue p:not(.p-initial) > a { - color: #81b3fe; } - .-bg-blue p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-blue { - color: #0d6efd; } - -.-bg-indigo { - color: #fff; - background-color: #6610f2; } - -.-bg-indigo p:not(.p-initial) > a { - color: #85b6fe; } - .-bg-indigo p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-indigo { - color: #6610f2; } - -.-bg-purple { - color: #fff; - background-color: #6f42c1; } - -.-bg-purple p:not(.p-initial) > a { - color: #84b5fe; } - .-bg-purple p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-purple { - color: #6f42c1; } - -.-bg-pink { - color: #fff; - background-color: #d63384; } - -.-bg-pink p:not(.p-initial) > a { - color: #81b4fe; } - .-bg-pink p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-pink { - color: #d63384; } - -.-bg-red { - color: #fff; - background-color: #dc3545; } - -.-bg-red p:not(.p-initial) > a { - color: #7db1fe; } - .-bg-red p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-red { - color: #dc3545; } - -.-bg-orange { - color: #000; - background-color: #fd7e14; } - -.-bg-orange p:not(.p-initial) > a { - color: #073b87; } - .-bg-orange p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-orange { - color: #fd7e14; } - -.-bg-yellow { - color: #000; - background-color: #ffc107; } - -.-bg-yellow p:not(.p-initial) > a { - color: #073982; } - .-bg-yellow p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-yellow { - color: #ffc107; } - -.-bg-green { - color: #fff; - background-color: #198754; } - -.-bg-green p:not(.p-initial) > a { - color: #b3d2fe; } - .-bg-green p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-green { - color: #198754; } - -.-bg-teal { - color: #000; - background-color: #20c997; } - -.-bg-teal p:not(.p-initial) > a { - color: #063274; } - .-bg-teal p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-teal { - color: #20c997; } - -.-bg-cyan { - color: #000; - background-color: #0dcaf0; } - -.-bg-cyan p:not(.p-initial) > a { - color: #06377e; } - .-bg-cyan p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-cyan { - color: #0dcaf0; } - -.-bg-black { - color: #fff; - background-color: #000; } - -.-bg-black p:not(.p-initial) > a { - color: white; } - .-bg-black p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-black { - color: #000; } - -.-bg-white { - color: #000; - background-color: #fff; } - -.-bg-white p:not(.p-initial) > a { - color: #0d6efd; } - .-bg-white p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-white { - color: #fff; } - -.-bg-gray { - color: #fff; - background-color: #6c757d; } - -.-bg-gray p:not(.p-initial) > a { - color: #90bdfe; } - .-bg-gray p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-gray { - color: #6c757d; } - -.-bg-gray-dark { - color: #fff; - background-color: #343a40; } - -.-bg-gray-dark p:not(.p-initial) > a { - color: #c8deff; } - .-bg-gray-dark p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-gray-dark { - color: #343a40; } - -.-bg-primary { - color: #fff; - background-color: #30638e; } - -.-bg-primary p:not(.p-initial) > a { - color: #a5c9fe; } - .-bg-primary p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-primary { - color: #30638e; } - -.-bg-secondary { - color: #000; - background-color: #ffa630; } - -.-bg-secondary p:not(.p-initial) > a { - color: #084196; } - .-bg-secondary p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-secondary { - color: #ffa630; } - -.-bg-success { - color: #000; - background-color: #3772ff; } - -.-bg-success p:not(.p-initial) > a { - color: #08439a; } - .-bg-success p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-success { - color: #3772ff; } - -.-bg-info { - color: #000; - background-color: #c0e0de; } - -.-bg-info p:not(.p-initial) > a { - color: #0b5ace; } - .-bg-info p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-info { - color: #c0e0de; } - -.-bg-warning { - color: #000; - background-color: #ed6a5a; } - -.-bg-warning p:not(.p-initial) > a { - color: #0847a2; } - .-bg-warning p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-warning { - color: #ed6a5a; } - -.-bg-danger { - color: #000; - background-color: #ed6a5a; } - -.-bg-danger p:not(.p-initial) > a { - color: #0847a2; } - .-bg-danger p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-danger { - color: #ed6a5a; } - -.-bg-light { - color: #000; - background-color: #d3f3ee; } - -.-bg-light p:not(.p-initial) > a { - color: #0c62e1; } - .-bg-light p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-light { - color: #d3f3ee; } - -.-bg-dark { - color: #fff; - background-color: #403f4c; } - -.-bg-dark p:not(.p-initial) > a { - color: #bdd7fe; } - .-bg-dark p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-dark { - color: #403f4c; } - -.-bg-100 { - color: #000; - background-color: #f8f9fa; } - -.-bg-100 p:not(.p-initial) > a { - color: #0d6bf7; } - .-bg-100 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-100 { - color: #f8f9fa; } - -.-bg-200 { - color: #000; - background-color: #e9ecef; } - -.-bg-200 p:not(.p-initial) > a { - color: #0c66ea; } - .-bg-200 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-200 { - color: #e9ecef; } - -.-bg-300 { - color: #000; - background-color: #dee2e6; } - -.-bg-300 p:not(.p-initial) > a { - color: #0c61e0; } - .-bg-300 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-300 { - color: #dee2e6; } - -.-bg-400 { - color: #000; - background-color: #ced4da; } - -.-bg-400 p:not(.p-initial) > a { - color: #0b5bd2; } - .-bg-400 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-400 { - color: #ced4da; } - -.-bg-500 { - color: #000; - background-color: #adb5bd; } - -.-bg-500 p:not(.p-initial) > a { - color: #094eb4; } - .-bg-500 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-500 { - color: #adb5bd; } - -.-bg-600 { - color: #fff; - background-color: #6c757d; } - -.-bg-600 p:not(.p-initial) > a { - color: #90bdfe; } - .-bg-600 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-600 { - color: #6c757d; } - -.-bg-700 { - color: #fff; - background-color: #495057; } - -.-bg-700 p:not(.p-initial) > a { - color: #b3d2fe; } - .-bg-700 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-700 { - color: #495057; } - -.-bg-800 { - color: #fff; - background-color: #343a40; } - -.-bg-800 p:not(.p-initial) > a { - color: #c8deff; } - .-bg-800 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-800 { - color: #343a40; } - -.-bg-900 { - color: #fff; - background-color: #212529; } - -.-bg-900 p:not(.p-initial) > a { - color: #dceaff; } - .-bg-900 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-900 { - color: #212529; } - -.-bg-0 { - color: #fff; - background-color: #403f4c; } - -.-bg-0 p:not(.p-initial) > a { - color: #bdd7fe; } - .-bg-0 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-0 { - color: #403f4c; } - -.-bg-1 { - color: #fff; - background-color: #30638e; } - -.-bg-1 p:not(.p-initial) > a { - color: #a5c9fe; } - .-bg-1 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-1 { - color: #30638e; } - -.-bg-2 { - color: #000; - background-color: #ffa630; } - -.-bg-2 p:not(.p-initial) > a { - color: #084196; } - .-bg-2 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-2 { - color: #ffa630; } - -.-bg-3 { - color: #000; - background-color: #c0e0de; } - -.-bg-3 p:not(.p-initial) > a { - color: #0b5ace; } - .-bg-3 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-3 { - color: #c0e0de; } - -.-bg-4 { - color: #000; - background-color: #fff; } - -.-bg-4 p:not(.p-initial) > a { - color: #0d6efd; } - .-bg-4 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-4 { - color: #fff; } - -.-bg-5 { - color: #fff; - background-color: #6c757d; } - -.-bg-5 p:not(.p-initial) > a { - color: #90bdfe; } - .-bg-5 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-5 { - color: #6c757d; } - -.-bg-6 { - color: #000; - background-color: #3772ff; } - -.-bg-6 p:not(.p-initial) > a { - color: #08439a; } - .-bg-6 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-6 { - color: #3772ff; } - -.-bg-7 { - color: #000; - background-color: #ed6a5a; } - -.-bg-7 p:not(.p-initial) > a { - color: #0847a2; } - .-bg-7 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-7 { - color: #ed6a5a; } - -.-bg-8 { - color: #fff; - background-color: #403f4c; } - -.-bg-8 p:not(.p-initial) > a { - color: #bdd7fe; } - .-bg-8 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-8 { - color: #403f4c; } - -.-bg-9 { - color: #000; - background-color: #ed6a5a; } - -.-bg-9 p:not(.p-initial) > a { - color: #0847a2; } - .-bg-9 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-9 { - color: #ed6a5a; } - -.-bg-10 { - color: #fff; - background-color: #30638e; } - -.-bg-10 p:not(.p-initial) > a { - color: #a5c9fe; } - .-bg-10 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-10 { - color: #30638e; } - -.-bg-11 { - color: #000; - background-color: #ffa630; } - -.-bg-11 p:not(.p-initial) > a { - color: #084196; } - .-bg-11 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-11 { - color: #ffa630; } - -.-bg-12 { - color: #000; - background-color: #c0e0de; } - -.-bg-12 p:not(.p-initial) > a { - color: #0b5ace; } - .-bg-12 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-12 { - color: #c0e0de; } - -.td-table:not(.td-initial), .td-content table:not(.td-initial), .td-box table:not(.td-initial) { - display: block; } - -.td-box--height-min { - min-height: 300px; } - -.td-box--height-med { - min-height: 400px; } - -.td-box--height-max { - min-height: 500px; } - -.td-box--height-full { - min-height: 100vh; } - -@media (min-width: 768px) { - .td-box--height-min { - min-height: 450px; } - .td-box--height-med { - min-height: 500px; } - .td-box--height-max { - min-height: 650px; } } - -.td-box .row { - padding-left: 5vw; - padding-right: 5vw; } - -.td-box.linkbox { - padding: 5vh 5vw; } - -.td-box--0 { - color: #fff; - background-color: #403f4c; } - .td-box--0 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #403f4c transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--0 p > a, .td-box--0 span > a { - color: #bdd7fe; } - .td-box--0 p > a:hover, .td-box--0 span > a:hover { - color: #d1e3fe; } - -.td-box--1 { - color: #fff; - background-color: #30638e; } - .td-box--1 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #30638e transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--1 p > a, .td-box--1 span > a { - color: #a5c9fe; } - .td-box--1 p > a:hover, .td-box--1 span > a:hover { - color: #c0d9fe; } - -.td-box--2 { - color: #000; - background-color: #ffa630; } - .td-box--2 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffa630 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--2 p > a, .td-box--2 span > a { - color: #084196; } - .td-box--2 p > a:hover, .td-box--2 span > a:hover { - color: #062e69; } - -.td-box--3 { - color: #000; - background-color: #c0e0de; } - .td-box--3 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #c0e0de transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--3 p > a, .td-box--3 span > a { - color: #0b5ace; } - .td-box--3 p > a:hover, .td-box--3 span > a:hover { - color: #083f90; } - -.td-box--4 { - color: #000; - background-color: #fff; } - .td-box--4 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #fff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--4 p > a, .td-box--4 span > a { - color: #0d6efd; } - .td-box--4 p > a:hover, .td-box--4 span > a:hover { - color: #094db1; } - -.td-box--5 { - color: #fff; - background-color: #6c757d; } - .td-box--5 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6c757d transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--5 p > a, .td-box--5 span > a { - color: #90bdfe; } - .td-box--5 p > a:hover, .td-box--5 span > a:hover { - color: #b1d1fe; } - -.td-box--6 { - color: #000; - background-color: #3772ff; } - .td-box--6 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #3772ff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--6 p > a, .td-box--6 span > a { - color: #08439a; } - .td-box--6 p > a:hover, .td-box--6 span > a:hover { - color: #062f6c; } - -.td-box--7 { - color: #000; - background-color: #ed6a5a; } - .td-box--7 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--7 p > a, .td-box--7 span > a { - color: #0847a2; } - .td-box--7 p > a:hover, .td-box--7 span > a:hover { - color: #063271; } - -.td-box--8 { - color: #fff; - background-color: #403f4c; } - .td-box--8 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #403f4c transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--8 p > a, .td-box--8 span > a { - color: #bdd7fe; } - .td-box--8 p > a:hover, .td-box--8 span > a:hover { - color: #d1e3fe; } - -.td-box--9 { - color: #000; - background-color: #ed6a5a; } - .td-box--9 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--9 p > a, .td-box--9 span > a { - color: #0847a2; } - .td-box--9 p > a:hover, .td-box--9 span > a:hover { - color: #063271; } - -.td-box--10 { - color: #fff; - background-color: #30638e; } - .td-box--10 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #30638e transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--10 p > a, .td-box--10 span > a { - color: #a5c9fe; } - .td-box--10 p > a:hover, .td-box--10 span > a:hover { - color: #c0d9fe; } - -.td-box--11 { - color: #000; - background-color: #ffa630; } - .td-box--11 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffa630 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--11 p > a, .td-box--11 span > a { - color: #084196; } - .td-box--11 p > a:hover, .td-box--11 span > a:hover { - color: #062e69; } - -.td-box--12 { - color: #000; - background-color: #c0e0de; } - .td-box--12 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #c0e0de transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--12 p > a, .td-box--12 span > a { - color: #0b5ace; } - .td-box--12 p > a:hover, .td-box--12 span > a:hover { - color: #083f90; } - -.td-box--blue { - color: #fff; - background-color: #0d6efd; } - .td-box--blue .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #0d6efd transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--blue p > a, .td-box--blue span > a { - color: #81b3fe; } - .td-box--blue p > a:hover, .td-box--blue span > a:hover { - color: #a7cafe; } - -.td-box--indigo { - color: #fff; - background-color: #6610f2; } - .td-box--indigo .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6610f2 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--indigo p > a, .td-box--indigo span > a { - color: #85b6fe; } - .td-box--indigo p > a:hover, .td-box--indigo span > a:hover { - color: #aaccfe; } - -.td-box--purple { - color: #fff; - background-color: #6f42c1; } - .td-box--purple .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6f42c1 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--purple p > a, .td-box--purple span > a { - color: #84b5fe; } - .td-box--purple p > a:hover, .td-box--purple span > a:hover { - color: #a9cbfe; } - -.td-box--pink { - color: #fff; - background-color: #d63384; } - .td-box--pink .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #d63384 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--pink p > a, .td-box--pink span > a { - color: #81b4fe; } - .td-box--pink p > a:hover, .td-box--pink span > a:hover { - color: #a7cbfe; } - -.td-box--red { - color: #fff; - background-color: #dc3545; } - .td-box--red .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #dc3545 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--red p > a, .td-box--red span > a { - color: #7db1fe; } - .td-box--red p > a:hover, .td-box--red span > a:hover { - color: #a4c8fe; } - -.td-box--orange { - color: #000; - background-color: #fd7e14; } - .td-box--orange .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #fd7e14 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--orange p > a, .td-box--orange span > a { - color: #073b87; } - .td-box--orange p > a:hover, .td-box--orange span > a:hover { - color: #05295f; } - -.td-box--yellow { - color: #000; - background-color: #ffc107; } - .td-box--yellow .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffc107 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--yellow p > a, .td-box--yellow span > a { - color: #073982; } - .td-box--yellow p > a:hover, .td-box--yellow span > a:hover { - color: #05285b; } - -.td-box--green { - color: #fff; - background-color: #198754; } - .td-box--green .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #198754 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--green p > a, .td-box--green span > a { - color: #b3d2fe; } - .td-box--green p > a:hover, .td-box--green span > a:hover { - color: #cae0fe; } - -.td-box--teal { - color: #000; - background-color: #20c997; } - .td-box--teal .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #20c997 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--teal p > a, .td-box--teal span > a { - color: #063274; } - .td-box--teal p > a:hover, .td-box--teal span > a:hover { - color: #042351; } - -.td-box--cyan { - color: #000; - background-color: #0dcaf0; } - .td-box--cyan .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #0dcaf0 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--cyan p > a, .td-box--cyan span > a { - color: #06377e; } - .td-box--cyan p > a:hover, .td-box--cyan span > a:hover { - color: #042758; } - -.td-box--black { - color: #fff; - background-color: #000; } - .td-box--black .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #000 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--black p > a, .td-box--black span > a { - color: white; } - .td-box--black p > a:hover, .td-box--black span > a:hover { - color: white; } - -.td-box--white { - color: #000; - background-color: #fff; } - .td-box--white .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #fff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--white p > a, .td-box--white span > a { - color: #0d6efd; } - .td-box--white p > a:hover, .td-box--white span > a:hover { - color: #094db1; } - -.td-box--gray { - color: #fff; - background-color: #6c757d; } - .td-box--gray .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6c757d transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--gray p > a, .td-box--gray span > a { - color: #90bdfe; } - .td-box--gray p > a:hover, .td-box--gray span > a:hover { - color: #b1d1fe; } - -.td-box--gray-dark { - color: #fff; - background-color: #343a40; } - .td-box--gray-dark .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #343a40 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--gray-dark p > a, .td-box--gray-dark span > a { - color: #c8deff; } - .td-box--gray-dark p > a:hover, .td-box--gray-dark span > a:hover { - color: #d9e8ff; } - -.td-box--primary { - color: #fff; - background-color: #30638e; } - .td-box--primary .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #30638e transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--primary p > a, .td-box--primary span > a { - color: #a5c9fe; } - .td-box--primary p > a:hover, .td-box--primary span > a:hover { - color: #c0d9fe; } - -.td-box--secondary { - color: #000; - background-color: #ffa630; } - .td-box--secondary .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffa630 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--secondary p > a, .td-box--secondary span > a { - color: #084196; } - .td-box--secondary p > a:hover, .td-box--secondary span > a:hover { - color: #062e69; } - -.td-box--success { - color: #000; - background-color: #3772ff; } - .td-box--success .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #3772ff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--success p > a, .td-box--success span > a { - color: #08439a; } - .td-box--success p > a:hover, .td-box--success span > a:hover { - color: #062f6c; } - -.td-box--info { - color: #000; - background-color: #c0e0de; } - .td-box--info .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #c0e0de transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--info p > a, .td-box--info span > a { - color: #0b5ace; } - .td-box--info p > a:hover, .td-box--info span > a:hover { - color: #083f90; } - -.td-box--warning { - color: #000; - background-color: #ed6a5a; } - .td-box--warning .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--warning p > a, .td-box--warning span > a { - color: #0847a2; } - .td-box--warning p > a:hover, .td-box--warning span > a:hover { - color: #063271; } - -.td-box--danger { - color: #000; - background-color: #ed6a5a; } - .td-box--danger .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--danger p > a, .td-box--danger span > a { - color: #0847a2; } - .td-box--danger p > a:hover, .td-box--danger span > a:hover { - color: #063271; } - -.td-box--light { - color: #000; - background-color: #d3f3ee; } - .td-box--light .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #d3f3ee transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--light p > a, .td-box--light span > a { - color: #0c62e1; } - .td-box--light p > a:hover, .td-box--light span > a:hover { - color: #08459e; } - -.td-box--dark, .td-footer { - color: #fff; - background-color: #403f4c; } - .td-box--dark .td-arrow-down::before, .td-footer .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #403f4c transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--dark p > a, .td-footer p > a, .td-box--dark span > a, .td-footer span > a { - color: #bdd7fe; } - .td-box--dark p > a:hover, .td-footer p > a:hover, .td-box--dark span > a:hover, .td-footer span > a:hover { - color: #d1e3fe; } - -.td-box--100 { - color: #000; - background-color: #f8f9fa; } - .td-box--100 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #f8f9fa transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--100 p > a, .td-box--100 span > a { - color: #0d6bf7; } - .td-box--100 p > a:hover, .td-box--100 span > a:hover { - color: #094bad; } - -.td-box--200 { - color: #000; - background-color: #e9ecef; } - .td-box--200 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #e9ecef transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--200 p > a, .td-box--200 span > a { - color: #0c66ea; } - .td-box--200 p > a:hover, .td-box--200 span > a:hover { - color: #0847a4; } - -.td-box--300 { - color: #000; - background-color: #dee2e6; } - .td-box--300 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #dee2e6 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--300 p > a, .td-box--300 span > a { - color: #0c61e0; } - .td-box--300 p > a:hover, .td-box--300 span > a:hover { - color: #08449d; } - -.td-box--400 { - color: #000; - background-color: #ced4da; } - .td-box--400 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ced4da transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--400 p > a, .td-box--400 span > a { - color: #0b5bd2; } - .td-box--400 p > a:hover, .td-box--400 span > a:hover { - color: #084093; } - -.td-box--500 { - color: #000; - background-color: #adb5bd; } - .td-box--500 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #adb5bd transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--500 p > a, .td-box--500 span > a { - color: #094eb4; } - .td-box--500 p > a:hover, .td-box--500 span > a:hover { - color: #06377e; } - -.td-box--600 { - color: #fff; - background-color: #6c757d; } - .td-box--600 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6c757d transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--600 p > a, .td-box--600 span > a { - color: #90bdfe; } - .td-box--600 p > a:hover, .td-box--600 span > a:hover { - color: #b1d1fe; } - -.td-box--700 { - color: #fff; - background-color: #495057; } - .td-box--700 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #495057 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--700 p > a, .td-box--700 span > a { - color: #b3d2fe; } - .td-box--700 p > a:hover, .td-box--700 span > a:hover { - color: #cae0fe; } - -.td-box--800 { - color: #fff; - background-color: #343a40; } - .td-box--800 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #343a40 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--800 p > a, .td-box--800 span > a { - color: #c8deff; } - .td-box--800 p > a:hover, .td-box--800 span > a:hover { - color: #d9e8ff; } - -.td-box--900 { - color: #fff; - background-color: #212529; } - .td-box--900 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #212529 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--900 p > a, .td-box--900 span > a { - color: #dceaff; } - .td-box--900 p > a:hover, .td-box--900 span > a:hover { - color: #e7f0ff; } - -[data-bs-theme="dark"] .td-box--white { - color: var(--bs-body-color); - background-color: var(--bs-body-bg); } - [data-bs-theme="dark"] .td-box--white p > a, [data-bs-theme="dark"] .td-box--white span > a { - color: var(--bs-link-color); } - [data-bs-theme="dark"] .td-box--white p > a:focus, [data-bs-theme="dark"] .td-box--white p > a:hover, [data-bs-theme="dark"] .td-box--white span > a:focus, [data-bs-theme="dark"] .td-box--white span > a:hover { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); } - [data-bs-theme="dark"] .td-box--white .td-arrow-down::before { - border-color: var(--bs-body-bg) transparent transparent transparent; } - -.td-blog .td-rss-button { - border-radius: 2rem; - float: right; - display: none; } - -.td-blog-posts-list { - margin-top: 1.5rem !important; } - .td-blog-posts-list__item { - display: flex; - align-items: flex-start; - margin-bottom: 1.5rem !important; } - .td-blog-posts-list__item__body { - flex: 1; } - -[data-bs-theme="dark"] { - --td-pre-bg: #1b1f22; } - -.td-content .highlight { - margin: 2rem 0; - padding: 0; - position: relative; } - .td-content .highlight .click-to-copy { - display: block; - text-align: right; } - .td-content .highlight pre { - margin: 0; - padding: 1rem; - border-radius: inherit; } - .td-content .highlight pre button.td-click-to-copy { - position: absolute; - color: var(--bs-tertiary-color); - border-width: 0; - background-color: transparent; - background-image: none; - --bs-btn-box-shadow: 0; - padding: var(--bs-btn-padding-y) calc(var(--bs-btn-padding-x) / 2); - right: 4px; - top: 2px; } - .td-content .highlight pre button.td-click-to-copy:hover { - color: var(--bs-secondary-color); - background-color: var(--bs-dark-bg-subtle); } - .td-content .highlight pre button.td-click-to-copy:active { - color: var(--bs-secondary-color); - background-color: var(--bs-dark-bg-subtle); - transform: translateY(2px); } - -.td-content p code, -.td-content li > code, -.td-content table code { - color: inherit; - padding: 0.2em 0.4em; - margin: 0; - font-size: 85%; - word-break: normal; - background-color: var(--td-pre-bg); - border-radius: 0.375rem; } - .td-content p code br, - .td-content li > code br, - .td-content table code br { - display: none; } - -.td-content pre { - word-wrap: normal; - background-color: var(--td-pre-bg); - border: solid var(--bs-border-color); - border-width: 1px; - padding: 1rem; } - .td-content pre > code { - background-color: inherit !important; - padding: 0; - margin: 0; - font-size: 100%; - word-break: normal; - white-space: pre; - border: 0; } - -.td-content pre.mermaid { - background-color: inherit; - font-size: 0; - padding: 0; } - -@media (min-width: 768px) { - .td-navbar-cover { - background: transparent !important; } - .td-navbar-cover .nav-link { - text-shadow: 1px 1px 2px #403f4c; } } - -.td-navbar-cover.navbar-bg-onscroll .nav-link { - text-shadow: none; } - -.navbar-bg-onscroll { - background: #30638e !important; - opacity: inherit; } - -.td-navbar { - background: #30638e; - min-height: 4rem; - margin: 0; - z-index: 32; } - .td-navbar .navbar-brand { - text-transform: none; } - .td-navbar .navbar-brand__name { - font-weight: 700; } - .td-navbar .navbar-brand svg { - display: inline-block; - margin: 0 10px; - height: 30px; } - .td-navbar .navbar-nav { - padding-top: 0.5rem; - white-space: nowrap; } - .td-navbar .nav-link { - text-transform: none; - font-weight: 700; } - .td-navbar .dropdown { - min-width: 50px; } - @media (min-width: 768px) { - .td-navbar { - position: fixed; - top: 0; - width: 100%; } - .td-navbar .nav-item { - padding-inline-end: 0.5rem; } - .td-navbar .navbar-nav { - padding-top: 0 !important; } } - @media (max-width: 991.98px) { - .td-navbar .td-navbar-nav-scroll { - max-width: 100%; - height: 2.5rem; - overflow: hidden; - font-size: 0.9rem; } - .td-navbar .navbar-brand { - margin-right: 0; } - .td-navbar .navbar-nav { - padding-bottom: 2rem; - overflow-x: auto; } } - .td-navbar .td-light-dark-menu .bi { - width: 1em; - height: 1em; - vertical-align: -.125em; - fill: currentcolor; } - @media (max-width: 991.98px) { - .td-navbar .td-light-dark-menu.dropdown { - position: unset; } } -#main_navbar li i { - padding-right: 0.5em; } - #main_navbar li i:before { - display: inline-block; - text-align: center; - min-width: 1em; } - -#main_navbar .alert { - background-color: inherit; - padding: 0; - color: #ffa630; - border: 0; - font-weight: inherit; } - #main_navbar .alert:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - font-weight: 900; - content: "\f0d9"; - padding-left: 0.5em; - padding-right: 0.5em; } - -nav.foldable-nav#td-section-nav { - position: relative; } - -nav.foldable-nav#td-section-nav label { - margin-bottom: 0; - width: 100%; } - -nav.foldable-nav .td-sidebar-nav__section, -nav.foldable-nav .with-child ul { - list-style: none; - padding: 0; - margin: 0; } - -nav.foldable-nav .ul-1 > li { - padding-left: 1.5em; } - -nav.foldable-nav ul.foldable { - display: none; } - -nav.foldable-nav input:checked ~ ul.foldable { - display: block; } - -nav.foldable-nav input[type="checkbox"] { - display: none; } - -nav.foldable-nav .with-child, -nav.foldable-nav .without-child { - position: relative; - padding-left: 1.5em; } - -nav.foldable-nav .ul-1 .with-child > label:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - font-weight: 900; - content: "\f0da"; - position: absolute; - left: 0.1em; - padding-left: 0.4em; - padding-right: 0.4em; - font-size: 1em; - color: var(--bs-secondary-color); - transition: all 0.5s; } - nav.foldable-nav .ul-1 .with-child > label:before:hover { - transform: rotate(90deg); } - -nav.foldable-nav .ul-1 .with-child > input:checked ~ label:before { - color: var(--bs-secondary-color); - transform: rotate(90deg); - transition: transform 0.5s; } - -nav.foldable-nav .with-child ul { - margin-top: 0.1em; } - -@media (hover: hover) and (pointer: fine) { - nav.foldable-nav .ul-1 .with-child > label:hover:before { - color: var(--bs-link-color); - transition: color 0.3s; } - nav.foldable-nav .ul-1 .with-child > input:checked ~ label:hover:before { - color: var(--bs-link-color); - transition: color 0.3s; } } - -.td-sidebar-nav { - padding-right: 0.5rem; - margin-right: -15px; - margin-left: -15px; } - @media (min-width: 768px) { - @supports (position: sticky) { - .td-sidebar-nav { - max-height: calc(100vh - 8.5rem); - overflow-y: auto; } } } - @media (min-width: 992px) { - .td-sidebar-nav.td-sidebar-nav--search-disabled { - padding-top: 1rem; } - @supports (position: sticky) { - .td-sidebar-nav.td-sidebar-nav--search-disabled { - max-height: calc(calc(100vh - 8.5rem) + 4.5rem); } } } - @media (min-width: 768px) { - .td-sidebar-nav { - display: block !important; } } - .td-sidebar-nav__section { - padding-left: 0; } - .td-sidebar-nav__section li { - list-style: none; } - .td-sidebar-nav__section.ul-0, .td-sidebar-nav__section ul { - padding: 0; - margin: 0; } - @media (min-width: 768px) { - .td-sidebar-nav__section .ul-1 ul { - padding-left: 1.5em; } } - .td-sidebar-nav__section-title { - display: block; - font-weight: 500; } - .td-sidebar-nav__section-title .active { - font-weight: 700; } - .td-sidebar-nav__section-title a { - color: var(--bs-secondary-color); } - .td-sidebar-nav .td-sidebar-link { - display: block; - padding-bottom: 0.375rem; } - .td-sidebar-nav .td-sidebar-link__page { - color: var(--bs-body-color); - font-weight: 300; } - .td-sidebar-nav a:focus, .td-sidebar-nav a:hover { - color: var(--bs-link-color); } - .td-sidebar-nav a.active { - font-weight: 700; } - .td-sidebar-nav .dropdown a { - color: var(--bs-tertiary-color); } - .td-sidebar-nav .dropdown .nav-link { - padding: 0 0 1rem; } - .td-sidebar-nav > .td-sidebar-nav__section { - padding-left: 1.5rem; } - .td-sidebar-nav li i { - padding-right: 0.5em; } - .td-sidebar-nav li i:before { - display: inline-block; - text-align: center; - min-width: 1em; } - .td-sidebar-nav .td-sidebar-link.tree-root { - font-weight: 700; - border-bottom: 1px solid var(--bs-tertiary-color); - margin-bottom: 1rem; } - -.td-sidebar { - padding-bottom: 1rem; } - .td-sidebar a { - text-decoration: none; } - .td-sidebar a:focus, .td-sidebar a:hover { - text-decoration: initial; } - .td-sidebar .btn-link { - text-decoration: none; } - @media (min-width: 768px) { - .td-sidebar { - padding-top: 4rem; - background-color: var(--bs-body-tertiary-bg); - padding-right: 1rem; - border-right: 1px solid var(--bs-border-color); } } - .td-sidebar__toggle { - line-height: 1; - color: var(--bs-body-color); - margin: 1rem; } - .td-sidebar__search { - padding: 1rem 0; } - .td-sidebar__inner { - order: 0; } - @media (min-width: 768px) { - @supports (position: sticky) { - .td-sidebar__inner { - position: sticky; - top: 4rem; - z-index: 10; - height: calc(100vh - 5rem); } } } - @media (min-width: 1200px) { - .td-sidebar__inner { - flex: 0 1 320px; } } - .td-sidebar__inner .td-search-box { - width: 100%; } - .td-sidebar #content-desktop { - display: block; } - .td-sidebar #content-mobile { - display: none; } - @media (max-width: 991.98px) { - .td-sidebar #content-desktop { - display: none; } - .td-sidebar #content-mobile { - display: block; } } -.td-sidebar-toc { - border-left: 1px solid var(--bs-border-color); - order: 2; - padding-top: 0.75rem; - padding-bottom: 1.5rem; - vertical-align: top; } - .td-sidebar-toc a { - text-decoration: none; } - .td-sidebar-toc a:focus, .td-sidebar-toc a:hover { - text-decoration: initial; } - .td-sidebar-toc .btn-link { - text-decoration: none; } - @supports (position: sticky) { - .td-sidebar-toc { - position: sticky; - top: 4rem; - height: calc(100vh - 4rem); - overflow-y: auto; } } - .td-sidebar-toc .td-page-meta a { - display: block; - font-weight: 500; } - -.td-toc a { - display: block; - font-weight: 300; - padding-bottom: 0.25rem; } - -.td-toc li { - list-style: none; - display: block; } - -.td-toc li li { - margin-left: 0.5rem; } - -.td-toc #TableOfContents a { - color: var(--bs-secondary-color); } - .td-toc #TableOfContents a:focus, .td-toc #TableOfContents a:hover { - color: initial; } - -.td-toc ul { - padding-left: 0; } - -@media print { - .td-breadcrumbs { - display: none !important; } } - -.td-breadcrumbs .breadcrumb { - background: inherit; - padding-left: 0; - padding-top: 0; } - -.alert { - font-weight: 500; - color: inherit; - border-radius: 0; } - .alert-primary, .pageinfo-primary { - border-style: solid; - border-color: #30638e; - border-width: 0 0 0 4px; } - .alert-primary .alert-heading, .pageinfo-primary .alert-heading { - color: #30638e; } - .alert-secondary, .pageinfo-secondary { - border-style: solid; - border-color: #ffa630; - border-width: 0 0 0 4px; } - .alert-secondary .alert-heading, .pageinfo-secondary .alert-heading { - color: #ffa630; } - .alert-success, .pageinfo-success { - border-style: solid; - border-color: #3772ff; - border-width: 0 0 0 4px; } - .alert-success .alert-heading, .pageinfo-success .alert-heading { - color: #3772ff; } - .alert-info, .pageinfo-info { - border-style: solid; - border-color: #c0e0de; - border-width: 0 0 0 4px; } - .alert-info .alert-heading, .pageinfo-info .alert-heading { - color: #c0e0de; } - .alert-warning, .pageinfo-warning { - border-style: solid; - border-color: #ed6a5a; - border-width: 0 0 0 4px; } - .alert-warning .alert-heading, .pageinfo-warning .alert-heading { - color: #ed6a5a; } - .alert-danger, .pageinfo-danger { - border-style: solid; - border-color: #ed6a5a; - border-width: 0 0 0 4px; } - .alert-danger .alert-heading, .pageinfo-danger .alert-heading { - color: #ed6a5a; } - .alert-light, .pageinfo-light { - border-style: solid; - border-color: #d3f3ee; - border-width: 0 0 0 4px; } - .alert-light .alert-heading, .pageinfo-light .alert-heading { - color: #d3f3ee; } - .alert-dark, .pageinfo-dark { - border-style: solid; - border-color: #403f4c; - border-width: 0 0 0 4px; } - .alert-dark .alert-heading, .pageinfo-dark .alert-heading { - color: #403f4c; } - -.td-content { - order: 1; } - .td-content p, - .td-content li, - .td-content td { - font-weight: 400; } - .td-content > h1, .td-content > .h1 { - font-weight: 700; - margin-bottom: 1rem; } - .td-content > h2, .td-content > .h2 { - margin-bottom: 1rem; } - .td-content > h2:not(:first-child), .td-content > .h2:not(:first-child) { - margin-top: 3rem; } - .td-content > h2 + h3, .td-content > .h2 + h3, .td-content > h2 + .h3, .td-content > h2 + .td-footer__links-item, .td-content > .h2 + .h3, .td-content > .h2 + .td-footer__links-item { - margin-top: 1rem; } - .td-content > h3, .td-content > .h3, .td-content > .td-footer__links-item, - .td-content > h4, - .td-content > .h4, - .td-content > h5, - .td-content > .h5, - .td-content > h6, - .td-content > .h6 { - margin-bottom: 1rem; - margin-top: 2rem; } - .td-content blockquote { - padding: 0 0 0 1rem; - margin-bottom: 1rem; - color: var(--bs-secondary-color); - border-left: 6px solid var(--bs-primary); } - .td-content ul li, - .td-content ol li { - margin-bottom: 0.25rem; } - .td-content strong { - font-weight: 700; } - .td-content .alert:not(:first-child) { - margin-top: 2rem; - margin-bottom: 2rem; } - .td-content .lead { - margin-bottom: 1.5rem; } - -.td-title { - margin-top: 1rem; - margin-bottom: 0.5rem; } - @media (min-width: 576px) { - .td-title { - font-size: 3rem; } } -.td-heading-self-link { - font-size: 90%; - padding-left: 0.25em; - text-decoration: none; - visibility: hidden; } - .td-heading-self-link:before { - content: '#'; } - @media (hover: none) and (pointer: coarse), (max-width: 576px) { - .td-heading-self-link { - visibility: visible; } } -h1:hover > .td-heading-self-link, .h1:hover > .td-heading-self-link { - visibility: visible; } - -h2:hover > .td-heading-self-link, .h2:hover > .td-heading-self-link { - visibility: visible; } - -h3:hover > .td-heading-self-link, .h3:hover > .td-heading-self-link, .td-footer__links-item:hover > .td-heading-self-link { - visibility: visible; } - -h4:hover > .td-heading-self-link, .h4:hover > .td-heading-self-link { - visibility: visible; } - -h5:hover > .td-heading-self-link, .h5:hover > .td-heading-self-link { - visibility: visible; } - -h6:hover > .td-heading-self-link, .h6:hover > .td-heading-self-link { - visibility: visible; } - -.td-search { - background: transparent; - position: relative; - width: 100%; } - .td-search__icon { - display: flex; - align-items: center; - height: 100%; - position: absolute; - left: 0.75em; - pointer-events: none; } - .td-search__icon:before { - content: "\f002"; } - .td-navbar .td-search__icon { - color: inherit; } - .td-search__input { - width: 100%; - text-indent: 1.25em; } - .td-search__input:not(:focus) { - background: transparent; } - .td-search__input.form-control:focus { - border-color: #f5f7f9; - box-shadow: 0 0 0 2px #83a1bb; - color: var(--bs-body-color); } - .td-navbar .td-search__input { - border: none; - color: inherit; } - .td-navbar .td-search__input::-webkit-input-placeholder { - color: inherit; } - .td-navbar .td-search__input:-moz-placeholder { - color: inherit; } - .td-navbar .td-search__input::-moz-placeholder { - color: inherit; } - .td-navbar .td-search__input:-ms-input-placeholder { - color: inherit; } - .td-search:focus-within .td-search__icon { - display: none; } - .td-search:focus-within .td-search-input { - text-indent: 0px; } - .td-search:not(:focus-within) { - color: var(--bs-secondary-color); } - -.td-sidebar .td-search--algolia { - display: block; - padding: 0 0.5rem; } - .td-sidebar .td-search--algolia > button { - margin: 0; - width: 100%; } - -.td-search--offline:focus-within .td-search__icon { - display: flex; - color: var(--bs-secondary-color); } - -.td-offline-search-results { - max-width: 90%; } - .td-offline-search-results .card { - margin-bottom: 0.5rem; } - .td-offline-search-results .card .card-header { - font-weight: bold; } - .td-offline-search-results__close-button { - float: right; } - .td-offline-search-results__close-button:after { - content: "\f00d"; } - -.td-outer { - display: flex; - flex-direction: column; - min-height: 100vh; } - -@media (min-width: 768px) { - .td-default main > section:first-of-type { - padding-top: 8rem; } } - -.td-main { - flex-grow: 1; } - -.td-404 main, -.td-main main { - padding-top: 1.5rem; - padding-bottom: 2rem; } - @media (min-width: 768px) { - .td-404 main, - .td-main main { - padding-top: 5.5rem; } } -.td-cover-block--height-min { - min-height: 300px; } - -.td-cover-block--height-med { - min-height: 400px; } - -.td-cover-block--height-max { - min-height: 500px; } - -.td-cover-block--height-full { - min-height: 100vh; } - -@media (min-width: 768px) { - .td-cover-block--height-min { - min-height: 450px; } - .td-cover-block--height-med { - min-height: 500px; } - .td-cover-block--height-max { - min-height: 650px; } } - -.td-cover-logo { - margin-right: 0.5em; } - -.td-cover-block { - position: relative; - padding-top: 5rem; - padding-bottom: 5rem; - background-repeat: no-repeat; - background-position: 50% 0; - background-size: cover; } - .td-cover-block > .byline { - position: absolute; - bottom: 2px; - right: 4px; } - -.td-bg-arrow-wrapper { - position: relative; } - -.section-index .entry { - padding: 0.75rem; } - -.section-index h5, .section-index .h5 { - margin-bottom: 0; } - .section-index h5 a, .section-index .h5 a { - font-weight: 700; } - -.section-index p { - margin-top: 0; } - -.pageinfo { - font-weight: 500; - background: var(--bs-alert-bg); - color: inherit; - margin: 2rem auto; - padding: 1.5rem; - padding-bottom: 0.5rem; } - .pageinfo-primary { - border-width: 0; } - .pageinfo-secondary { - border-width: 0; } - .pageinfo-success { - border-width: 0; } - .pageinfo-info { - border-width: 0; } - .pageinfo-warning { - border-width: 0; } - .pageinfo-danger { - border-width: 0; } - .pageinfo-light { - border-width: 0; } - .pageinfo-dark { - border-width: 0; } - -.td-page-meta__lastmod { - margin-top: 3rem !important; - padding-top: 1rem !important; } - -.taxonomy-terms-article { - width: 100%; - clear: both; - font-size: 0.8rem; } - .taxonomy-terms-article .taxonomy-title { - display: inline; - font-size: 1.25em; - height: 1em; - line-height: 1em; - margin-right: 0.5em; - padding: 0; } - -.taxonomy-terms-cloud { - width: 100%; - clear: both; - font-size: 0.8rem; } - .taxonomy-terms-cloud .taxonomy-title { - display: inline-block; - width: 100%; - font-size: 1rem; - font-weight: 700; - color: var(--bs-primary-text-emphasis); - border-bottom: 1px solid var(--bs-tertiary-color); - margin-bottom: 1em; - padding-bottom: 0.375rem; - margin-top: 1em; } - -.taxonomy-terms-page { - max-width: 800px; - margin: auto; } - .taxonomy-terms-page h1, .taxonomy-terms-page .h1 { - margin-bottom: 1em; } - .taxonomy-terms-page .taxonomy-terms-cloud { - font-size: 1em; } - .taxonomy-terms-page .taxonomy-terms-cloud li { - display: block; } - .taxonomy-terms-page .taxo-text-tags li + li::before { - content: none; } - .taxonomy-terms-page .taxo-fruits .taxonomy-count, - .taxonomy-terms-page .taxo-fruits .taxonomy-label { - display: inherit; - font-size: 1rem; - margin: 0; - padding: 0; - padding-right: 0.5em; } - .taxonomy-terms-page .taxo-fruits .taxonomy-count::before { - content: "("; } - .taxonomy-terms-page .taxo-fruits .taxonomy-count::after { - content: ")"; } - -.taxonomy-terms { - list-style: none; - margin: 0; - overflow: hidden; - padding: 0; - display: inline; } - .taxonomy-terms li { - display: inline; - overflow-wrap: break-word; - word-wrap: break-word; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -ms-hyphens: auto; - -moz-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; } - -.taxonomy-count { - font-size: 0.8em; - line-height: 1.25em; - display: inline-block; - padding-left: 0.6em; - padding-right: 0.6em; - margin-left: 0.6em; - text-align: center; - border-radius: 1em; - background-color: var(--bs-body-bg); } - -.taxonomy-term { - background: var(--bs-secondary-bg); - border-width: 0; - border-radius: 0 3px 3px 0; - color: var(--bs-body-color); - display: inline-block; - font-size: 1em; - line-height: 1.5em; - min-height: 1.5em; - max-width: 100%; - padding: 0 0.5em 0 1em; - position: relative; - margin: 0 0.5em 0.2em 0; - text-decoration: none; - -webkit-transition: color 0.2s; - -webkit-clip-path: polygon(100% 0, 100% 100%, 0.8em 100%, 0 50%, 0.8em 0); - clip-path: polygon(100% 0, 100% 100%, 0.8em 100%, 0 50%, 0.8em 0); } - .taxonomy-term:hover { - background-color: var(--bs-primary-bg-subtle); - color: var(--bs-body-color-dark); } - .taxonomy-term:hover .taxonomy-count { - color: var(--bs-body-color-dark); } - .taxonomy-term:hover::before { - background: #30638e; } - -.taxo-text-tags .taxonomy-term { - background: none; - border-width: 0; - border-radius: 0; - color: #6c757d; - font-size: 1em; - line-height: 1.5em; - min-height: 1.5em; - max-width: 100%; - padding: 0; - position: relative; - margin: 0; - text-decoration: none; - -webkit-clip-path: none; - clip-path: none; } - .taxo-text-tags .taxonomy-term:hover { - background: none; - color: #0d6efd; } - .taxo-text-tags .taxonomy-term:hover .taxonomy-count { - color: #403f4c !important; } - .taxo-text-tags .taxonomy-term:hover::before { - background: none; } - -.taxo-text-tags li + li::before { - content: "|"; - color: #6c757d; - margin-right: 0.2em; } - -.taxo-text-tags .taxonomy-count { - font-size: 1em; - line-height: 1.25em; - display: inline-block; - padding: 0; - margin: 0; - text-align: center; - border-radius: 0; - background: none; - vertical-align: super; - font-size: 0.75em; } - -.taxo-text-tags .taxonomy-term:hover .taxonomy-count { - color: #0d6efd !important; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term]::before { - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - padding-right: 0.5em; - font-size: 2em; - min-width: 1.5em; - display: inline-block; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="apple"]::before { - content: "\f5d1"; - color: red; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="carrot"]::before { - content: "\f787"; - color: orange; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="lemon"]::before { - content: "\f094"; - color: limegreen; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="pepper"]::before { - content: "\f816"; - color: darkred; } - -.taxo-fruits .taxonomy-term { - background: none; - border-width: 0; - border-radius: 0; - color: #6c757d; - font-size: 1em; - line-height: 2.5em; - max-width: 100%; - padding: 0; - position: relative; - margin: 0; - text-decoration: none; - -webkit-clip-path: none; - clip-path: none; } - .taxo-fruits .taxonomy-term:hover { - background: none; - color: #0d6efd; } - .taxo-fruits .taxonomy-term:hover .taxonomy-count { - color: #403f4c !important; } - .taxo-fruits .taxonomy-term:hover::before { - background: none; - text-shadow: 0 0 3px #212529; } - -.taxo-fruits .taxonomy-count, -.taxo-fruits .taxonomy-label { - display: none; } - -.taxo-fruits.taxonomy-terms-article { - margin-bottom: 1rem; } - .taxo-fruits.taxonomy-terms-article .taxonomy-title { - display: none; } - -.taxonomy-taxonomy-page { - max-width: 800px; - margin: auto; } - .taxonomy-taxonomy-page h1, .taxonomy-taxonomy-page .h1 { - margin-bottom: 1em; } - -.article-meta { - margin-bottom: 1.5rem; } - -.article-teaser.article-type-docs h3 a:before, .article-teaser.article-type-docs .h3 a:before, .article-teaser.article-type-docs .td-footer__links-item a:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - content: "\f02d"; - padding-right: 0.5em; } - -.article-teaser.article-type-blog h3 a:before, .article-teaser.article-type-blog .h3 a:before, .article-teaser.article-type-blog .td-footer__links-item a:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - content: "\f781"; - padding-right: 0.5em; } - -.all-taxonomy-terms { - font-weight: 500; - line-height: 1.2; - font-size: 1.5rem; } - .all-taxonomy-terms:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - content: "\f122"; - padding-right: 0.5em; } - -.article-teaser.card { - padding: 1em; - margin-bottom: 1.5em; } - -.article-teaser .breadcrumb { - margin-bottom: 0em; - font-size: 0.85rem; } - -.article-teaser .article-meta { - margin-bottom: 0em; } - -div.drawio { - display: inline-block; - position: relative; } - div.drawio button { - position: absolute; - bottom: 5px; - right: 5px; - padding: 0.4em 0.5em; - font-size: 0.8em; - display: none; } - div.drawio:hover button { - display: inline; } - -div.drawioframe { - position: fixed; - height: 100%; - width: 100%; - top: 0; - left: 0px; - z-index: 1000; - background: #000b; - border: 0; } - div.drawioframe iframe { - position: absolute; - height: 90%; - width: 90%; - top: 5%; - left: 5%; - z-index: 1010; } - -.tab-content .tab-pane { - margin-top: 0rem; - margin-bottom: 1.5rem; - border-left: var(--bs-border-width) solid var(--bs-border-color); - border-right: var(--bs-border-width) solid var(--bs-border-color); - border-bottom: var(--bs-border-width) solid var(--bs-border-color); } - .tab-content .tab-pane .highlight { - margin: 0; - border: none; - max-width: 100%; } - -.tab-body { - font-weight: 500; - background: var(--td-pre-bg); - color: var(--bs-body-color); - border-radius: 0; - padding: 1.5rem; } - .tab-body > :last-child { - margin-bottom: 0; } - .tab-body > .highlight:only-child { - margin: -1.5rem; - max-width: calc(100% + 3rem); } - .tab-body-primary { - border-style: solid; - border-color: #30638e; } - .tab-body-secondary { - border-style: solid; - border-color: #ffa630; } - .tab-body-success { - border-style: solid; - border-color: #3772ff; } - .tab-body-info { - border-style: solid; - border-color: #c0e0de; } - .tab-body-warning { - border-style: solid; - border-color: #ed6a5a; } - .tab-body-danger { - border-style: solid; - border-color: #ed6a5a; } - .tab-body-light { - border-style: solid; - border-color: #d3f3ee; } - .tab-body-dark { - border-style: solid; - border-color: #403f4c; } - -.td-card.card .highlight { - border: none; - margin: 0; } - -.td-card .card-header.code { - background-color: var(--bs-body-bg); } - -.td-card .card-body.code { - background-color: var(--bs-body-bg); - padding: 0 0 0 1ex; } - -.td-card .card-body pre { - margin: 0; - padding: 0 1rem 1rem 1rem; } - -.swagger-ui .info .title small pre, .swagger-ui .info .title .small pre, .swagger-ui .info .title .td-footer__center pre, .swagger-ui .info .title .td-cover-block > .byline pre { - background: #7d8492; } - -.td-footer { - min-height: 150px; - padding-top: 3rem; - /* &__left { } */ } - @media (max-width: 991.98px) { - .td-footer { - min-height: 200px; } } - .td-footer__center { - text-align: center; } - .td-footer__right { - text-align: right; } - .td-footer__about { - font-size: initial; } - .td-footer__links-list { - margin-bottom: 0; } - .td-footer__links-item a { - color: inherit !important; } - .td-footer__authors, .td-footer__all_rights_reserved { - padding-left: 0.25rem; } - .td-footer__all_rights_reserved { - display: none; } - -@media (min-width: 768px) { - .td-offset-anchor:target { - display: block; - position: relative; - top: -4rem; - visibility: hidden; } - h2[id]:before, [id].h2:before, - h3[id]:before, - [id].h3:before, - [id].td-footer__links-item:before, - h4[id]:before, - [id].h4:before, - h5[id]:before, - [id].h5:before { - display: block; - content: " "; - margin-top: -5rem; - height: 5rem; - visibility: hidden; } } - -/* - -Nothing defined here. The Hugo project that uses this theme can override Bootstrap by adding a file to: - -assets/scss/_styles_project.scss - -*/ - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/resources/_gen/assets/scss/main.scss_3f90599f3717b4a4920df16fdcadce3d.json b/resources/_gen/assets/scss/main.scss_3f90599f3717b4a4920df16fdcadce3d.json deleted file mode 100644 index a8ece4a..0000000 --- a/resources/_gen/assets/scss/main.scss_3f90599f3717b4a4920df16fdcadce3d.json +++ /dev/null @@ -1 +0,0 @@ -{"Target":"/scss/main.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/main.scss_fae17086e470d8c6ed0d487092f631b7.content b/resources/_gen/assets/scss/main.scss_fae17086e470d8c6ed0d487092f631b7.content deleted file mode 100644 index e79aaa3..0000000 --- a/resources/_gen/assets/scss/main.scss_fae17086e470d8c6ed0d487092f631b7.content +++ /dev/null @@ -1,19722 +0,0 @@ -/* - -Add styles or override variables from the theme here. - -*/ -@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i&display=swap"); -:root, -[data-bs-theme="light"] { - --td-pre-bg: var(--bs-tertiary-bg); } - -/*! - * Bootstrap v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root, -[data-bs-theme="light"] { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-black: #000; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-gray-100: #f8f9fa; - --bs-gray-200: #e9ecef; - --bs-gray-300: #dee2e6; - --bs-gray-400: #ced4da; - --bs-gray-500: #adb5bd; - --bs-gray-600: #6c757d; - --bs-gray-700: #495057; - --bs-gray-800: #343a40; - --bs-gray-900: #212529; - --bs-primary: #30638e; - --bs-secondary: #ffa630; - --bs-success: #3772ff; - --bs-info: #c0e0de; - --bs-warning: #ed6a5a; - --bs-danger: #ed6a5a; - --bs-light: #d3f3ee; - --bs-dark: #403f4c; - --bs-primary-rgb: 48, 99, 142; - --bs-secondary-rgb: 255, 166, 48; - --bs-success-rgb: 55, 114, 255; - --bs-info-rgb: 192, 224, 222; - --bs-warning-rgb: 237, 106, 90; - --bs-danger-rgb: 237, 106, 90; - --bs-light-rgb: 211, 243, 238; - --bs-dark-rgb: 64, 63, 76; - --bs-primary-text-emphasis: #132839; - --bs-secondary-text-emphasis: #664213; - --bs-success-text-emphasis: #162e66; - --bs-info-text-emphasis: #4d5a59; - --bs-warning-text-emphasis: #5f2a24; - --bs-danger-text-emphasis: #5f2a24; - --bs-light-text-emphasis: #495057; - --bs-dark-text-emphasis: #495057; - --bs-primary-bg-subtle: #d6e0e8; - --bs-secondary-bg-subtle: #ffedd6; - --bs-success-bg-subtle: #d7e3ff; - --bs-info-bg-subtle: #f2f9f8; - --bs-warning-bg-subtle: #fbe1de; - --bs-danger-bg-subtle: #fbe1de; - --bs-light-bg-subtle: #fcfcfd; - --bs-dark-bg-subtle: #ced4da; - --bs-primary-border-subtle: #acc1d2; - --bs-secondary-border-subtle: #ffdbac; - --bs-success-border-subtle: #afc7ff; - --bs-info-border-subtle: #e6f3f2; - --bs-warning-border-subtle: #f8c3bd; - --bs-danger-border-subtle: #f8c3bd; - --bs-light-border-subtle: #e9ecef; - --bs-dark-border-subtle: #adb5bd; - --bs-white-rgb: 255, 255, 255; - --bs-black-rgb: 0, 0, 0; - --bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - --bs-body-font-size: 1rem; - --bs-body-font-weight: 400; - --bs-body-line-height: 1.5; - --bs-body-color: #212529; - --bs-body-color-rgb: 33, 37, 41; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; - --bs-emphasis-color: #000; - --bs-emphasis-color-rgb: 0, 0, 0; - --bs-secondary-color: rgba(33, 37, 41, 0.75); - --bs-secondary-color-rgb: 33, 37, 41; - --bs-secondary-bg: #e9ecef; - --bs-secondary-bg-rgb: 233, 236, 239; - --bs-tertiary-color: rgba(33, 37, 41, 0.5); - --bs-tertiary-color-rgb: 33, 37, 41; - --bs-tertiary-bg: #f8f9fa; - --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-heading-color: inherit; - --bs-link-color: #0d6efd; - --bs-link-color-rgb: 13, 110, 253; - --bs-link-decoration: underline; - --bs-link-hover-color: #094db1; - --bs-link-hover-color-rgb: 9, 77, 177; - --bs-code-color: #99641d; - --bs-highlight-color: #212529; - --bs-highlight-bg: #fff3cd; - --bs-border-width: 1px; - --bs-border-style: solid; - --bs-border-color: #dee2e6; - --bs-border-color-translucent: rgba(0, 0, 0, 0.175); - --bs-border-radius: 0.375rem; - --bs-border-radius-sm: 0.25rem; - --bs-border-radius-lg: 0.5rem; - --bs-border-radius-xl: 1rem; - --bs-border-radius-xxl: 2rem; - --bs-border-radius-2xl: var(--bs-border-radius-xxl); - --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); - --bs-focus-ring-width: 0.25rem; - --bs-focus-ring-opacity: 0.25; - --bs-focus-ring-color: rgba(48, 99, 142, 0.25); - --bs-form-valid-color: #3772ff; - --bs-form-valid-border-color: #3772ff; - --bs-form-invalid-color: #ed6a5a; - --bs-form-invalid-border-color: #ed6a5a; } - -[data-bs-theme="dark"] { - color-scheme: dark; - --bs-body-color: #dee2e6; - --bs-body-color-rgb: 222, 226, 230; - --bs-body-bg: #212529; - --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #fff; - --bs-emphasis-color-rgb: 255, 255, 255; - --bs-secondary-color: rgba(222, 226, 230, 0.75); - --bs-secondary-color-rgb: 222, 226, 230; - --bs-secondary-bg: #343a40; - --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(222, 226, 230, 0.5); - --bs-tertiary-color-rgb: 222, 226, 230; - --bs-tertiary-bg: #2b3035; - --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-primary-text-emphasis: #83a1bb; - --bs-secondary-text-emphasis: #ffca83; - --bs-success-text-emphasis: #87aaff; - --bs-info-text-emphasis: #d9eceb; - --bs-warning-text-emphasis: #f4a69c; - --bs-danger-text-emphasis: #f4a69c; - --bs-light-text-emphasis: #f8f9fa; - --bs-dark-text-emphasis: #dee2e6; - --bs-primary-bg-subtle: #0a141c; - --bs-secondary-bg-subtle: #33210a; - --bs-success-bg-subtle: #0b1733; - --bs-info-bg-subtle: #262d2c; - --bs-warning-bg-subtle: #2f1512; - --bs-danger-bg-subtle: #2f1512; - --bs-light-bg-subtle: #343a40; - --bs-dark-bg-subtle: #1a1d20; - --bs-primary-border-subtle: #1d3b55; - --bs-secondary-border-subtle: #99641d; - --bs-success-border-subtle: #214499; - --bs-info-border-subtle: #738685; - --bs-warning-border-subtle: #8e4036; - --bs-danger-border-subtle: #8e4036; - --bs-light-border-subtle: #495057; - --bs-dark-border-subtle: #343a40; - --bs-heading-color: inherit; - --bs-link-color: #83a1bb; - --bs-link-hover-color: #a8bdcf; - --bs-link-color-rgb: 131, 161, 187; - --bs-link-hover-color-rgb: 168, 189, 207; - --bs-code-color: #c2a277; - --bs-highlight-color: #dee2e6; - --bs-highlight-bg: #664d03; - --bs-border-color: #495057; - --bs-border-color-translucent: rgba(255, 255, 255, 0.15); - --bs-form-valid-color: #75b798; - --bs-form-valid-border-color: #75b798; - --bs-form-invalid-color: #ea868f; - --bs-form-invalid-border-color: #ea868f; } - -*, -*::before, -*::after { - box-sizing: border-box; } - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; } } - -body { - margin: 0; - font-family: var(--bs-body-font-family); - font-size: var(--bs-body-font-size); - font-weight: var(--bs-body-font-weight); - line-height: var(--bs-body-line-height); - color: var(--bs-body-color); - text-align: var(--bs-body-text-align); - background-color: var(--bs-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - -hr { - margin: 1rem 0; - color: inherit; - border: 0; - border-top: var(--bs-border-width) solid; - opacity: 0.25; } - -h6, .h6, h5, .h5, h4, .h4, h3, .h3, .td-footer__links-item, h2, .h2, h1, .h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; - color: var(--bs-heading-color); } - -h1, .h1 { - font-size: calc(1.375rem + 1.5vw); } - @media (min-width: 1200px) { - h1, .h1 { - font-size: 2.5rem; } } -h2, .h2 { - font-size: calc(1.325rem + 0.9vw); } - @media (min-width: 1200px) { - h2, .h2 { - font-size: 2rem; } } -h3, .h3, .td-footer__links-item { - font-size: calc(1.275rem + 0.3vw); } - @media (min-width: 1200px) { - h3, .h3, .td-footer__links-item { - font-size: 1.5rem; } } -h4, .h4 { - font-size: calc(1.26rem + 0.12vw); } - @media (min-width: 1200px) { - h4, .h4 { - font-size: 1.35rem; } } -h5, .h5 { - font-size: 1.15rem; } - -h6, .h6 { - font-size: 1rem; } - -p { - margin-top: 0; - margin-bottom: 1rem; } - -abbr[title] { - text-decoration: underline dotted; - cursor: help; - text-decoration-skip-ink: none; } - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; } - -ol, -ul { - padding-left: 2rem; } - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; } - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; } - -dt { - font-weight: 700; } - -dd { - margin-bottom: .5rem; - margin-left: 0; } - -blockquote { - margin: 0 0 1rem; } - -b, -strong { - font-weight: bolder; } - -small, .small, .td-footer__center, .td-cover-block > .byline { - font-size: 0.875em; } - -mark, .mark { - padding: 0.1875em; - color: var(--bs-highlight-color); - background-color: var(--bs-highlight-bg); } - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; } - -sub { - bottom: -.25em; } - -sup { - top: -.5em; } - -a { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); - text-decoration: underline; } - a:hover { - --bs-link-color-rgb: var(--bs-link-hover-color-rgb); } - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; } - -pre, -code, -kbd, -samp { - font-family: var(--bs-font-monospace); - font-size: 1em; } - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; } - pre code { - font-size: inherit; - color: inherit; - word-break: normal; } - -code { - font-size: 0.875em; - color: var(--bs-code-color); - word-wrap: break-word; } - a > code { - color: inherit; } - -kbd { - padding: 0.1875rem 0.375rem; - font-size: 0.875em; - color: var(--bs-body-bg); - background-color: var(--bs-body-color); - border-radius: 0.25rem; } - kbd kbd { - padding: 0; - font-size: 1em; } - -figure { - margin: 0 0 1rem; } - -img, -svg { - vertical-align: middle; } - -table { - caption-side: bottom; - border-collapse: collapse; } - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-secondary-color); - text-align: left; } - -th { - text-align: inherit; - text-align: -webkit-match-parent; } - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; } - -label { - display: inline-block; } - -button { - border-radius: 0; } - -button:focus:not(:focus-visible) { - outline: 0; } - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -button, -select { - text-transform: none; } - -[role="button"] { - cursor: pointer; } - -select { - word-wrap: normal; } - select:disabled { - opacity: 1; } - -[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator { - display: none !important; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - button:not(:disabled), - [type="button"]:not(:disabled), - [type="reset"]:not(:disabled), - [type="submit"]:not(:disabled) { - cursor: pointer; } - -::-moz-focus-inner { - padding: 0; - border-style: none; } - -textarea { - resize: vertical; } - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit; } - @media (min-width: 1200px) { - legend { - font-size: 1.5rem; } } - legend + * { - clear: left; } - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field { - padding: 0; } - -::-webkit-inner-spin-button { - height: auto; } - -[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; } - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; } - -::-webkit-color-swatch-wrapper { - padding: 0; } - -::file-selector-button { - font: inherit; - -webkit-appearance: button; } - -output { - display: inline-block; } - -iframe { - border: 0; } - -summary { - display: list-item; - cursor: pointer; } - -progress { - vertical-align: baseline; } - -[hidden] { - display: none !important; } - -.lead { - font-size: 1.25rem; - font-weight: 300; } - -.display-1 { - font-size: calc(1.625rem + 4.5vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-1 { - font-size: 5rem; } } -.display-2 { - font-size: calc(1.575rem + 3.9vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-2 { - font-size: 4.5rem; } } -.display-3 { - font-size: calc(1.525rem + 3.3vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-3 { - font-size: 4rem; } } -.display-4 { - font-size: calc(1.475rem + 2.7vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-4 { - font-size: 3.5rem; } } -.display-5 { - font-size: calc(1.425rem + 2.1vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-5 { - font-size: 3rem; } } -.display-6 { - font-size: calc(1.375rem + 1.5vw); - font-weight: 300; - line-height: 1.2; } - @media (min-width: 1200px) { - .display-6 { - font-size: 2.5rem; } } -.list-unstyled, .td-blog-posts-list { - padding-left: 0; - list-style: none; } - -.list-inline, .td-footer__links-list { - padding-left: 0; - list-style: none; } - -.list-inline-item, .td-footer__links-item { - display: inline-block; } - .list-inline-item:not(:last-child), .td-footer__links-item:not(:last-child) { - margin-right: 1rem; } - -.initialism { - font-size: 0.875em; - text-transform: uppercase; } - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; } - .blockquote > :last-child { - margin-bottom: 0; } - -.blockquote-footer { - margin-top: -1rem; - margin-bottom: 1rem; - font-size: 0.875em; - color: #6c757d; } - .blockquote-footer::before { - content: "\2014\00A0"; } - -.img-fluid, .td-content img { - max-width: 100%; - height: auto; } - -.img-thumbnail { - padding: 0.25rem; - background-color: var(--bs-body-bg); - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - box-shadow: var(--bs-box-shadow-sm); - max-width: 100%; - height: auto; } - -.figure { - display: inline-block; } - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; } - -.figure-caption { - font-size: 0.875em; - color: var(--bs-secondary-color); } - -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-right: calc(var(--bs-gutter-x) * .5); - padding-left: calc(var(--bs-gutter-x) * .5); - margin-right: auto; - margin-left: auto; } - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; } } - -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; } } - -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; } } - -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; } } - -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; } } - -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; } - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-right: calc(-.5 * var(--bs-gutter-x)); - margin-left: calc(-.5 * var(--bs-gutter-x)); } - .row > * { - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * .5); - padding-left: calc(var(--bs-gutter-x) * .5); - margin-top: var(--bs-gutter-y); } - -.col { - flex: 1 0 0%; } - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; } - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; } - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; } - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; } - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; } - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - -.col-auto { - flex: 0 0 auto; - width: auto; } - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; } - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; } - -.col-3 { - flex: 0 0 auto; - width: 25%; } - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; } - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; } - -.col-6 { - flex: 0 0 auto; - width: 50%; } - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; } - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; } - -.col-9 { - flex: 0 0 auto; - width: 75%; } - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; } - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; } - -.col-12 { - flex: 0 0 auto; - width: 100%; } - -.offset-1 { - margin-left: 8.33333333%; } - -.offset-2 { - margin-left: 16.66666667%; } - -.offset-3 { - margin-left: 25%; } - -.offset-4 { - margin-left: 33.33333333%; } - -.offset-5 { - margin-left: 41.66666667%; } - -.offset-6 { - margin-left: 50%; } - -.offset-7 { - margin-left: 58.33333333%; } - -.offset-8 { - margin-left: 66.66666667%; } - -.offset-9 { - margin-left: 75%; } - -.offset-10 { - margin-left: 83.33333333%; } - -.offset-11 { - margin-left: 91.66666667%; } - -.g-0, -.gx-0 { - --bs-gutter-x: 0; } - -.g-0, -.gy-0 { - --bs-gutter-y: 0; } - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; } - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; } - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; } - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; } - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; } - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; } - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; } - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; } - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; } - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; } - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-sm-auto { - flex: 0 0 auto; - width: auto; } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; } - .offset-sm-0 { - margin-left: 0; } - .offset-sm-1 { - margin-left: 8.33333333%; } - .offset-sm-2 { - margin-left: 16.66666667%; } - .offset-sm-3 { - margin-left: 25%; } - .offset-sm-4 { - margin-left: 33.33333333%; } - .offset-sm-5 { - margin-left: 41.66666667%; } - .offset-sm-6 { - margin-left: 50%; } - .offset-sm-7 { - margin-left: 58.33333333%; } - .offset-sm-8 { - margin-left: 66.66666667%; } - .offset-sm-9 { - margin-left: 75%; } - .offset-sm-10 { - margin-left: 83.33333333%; } - .offset-sm-11 { - margin-left: 91.66666667%; } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-md-auto { - flex: 0 0 auto; - width: auto; } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-md-3 { - flex: 0 0 auto; - width: 25%; } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-md-6 { - flex: 0 0 auto; - width: 50%; } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-md-9 { - flex: 0 0 auto; - width: 75%; } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-md-12 { - flex: 0 0 auto; - width: 100%; } - .offset-md-0 { - margin-left: 0; } - .offset-md-1 { - margin-left: 8.33333333%; } - .offset-md-2 { - margin-left: 16.66666667%; } - .offset-md-3 { - margin-left: 25%; } - .offset-md-4 { - margin-left: 33.33333333%; } - .offset-md-5 { - margin-left: 41.66666667%; } - .offset-md-6 { - margin-left: 50%; } - .offset-md-7 { - margin-left: 58.33333333%; } - .offset-md-8 { - margin-left: 66.66666667%; } - .offset-md-9 { - margin-left: 75%; } - .offset-md-10 { - margin-left: 83.33333333%; } - .offset-md-11 { - margin-left: 91.66666667%; } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-lg-auto { - flex: 0 0 auto; - width: auto; } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; } - .offset-lg-0 { - margin-left: 0; } - .offset-lg-1 { - margin-left: 8.33333333%; } - .offset-lg-2 { - margin-left: 16.66666667%; } - .offset-lg-3 { - margin-left: 25%; } - .offset-lg-4 { - margin-left: 33.33333333%; } - .offset-lg-5 { - margin-left: 41.66666667%; } - .offset-lg-6 { - margin-left: 50%; } - .offset-lg-7 { - margin-left: 58.33333333%; } - .offset-lg-8 { - margin-left: 66.66666667%; } - .offset-lg-9 { - margin-left: 75%; } - .offset-lg-10 { - margin-left: 83.33333333%; } - .offset-lg-11 { - margin-left: 91.66666667%; } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xl-auto { - flex: 0 0 auto; - width: auto; } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; } - .offset-xl-0 { - margin-left: 0; } - .offset-xl-1 { - margin-left: 8.33333333%; } - .offset-xl-2 { - margin-left: 16.66666667%; } - .offset-xl-3 { - margin-left: 25%; } - .offset-xl-4 { - margin-left: 33.33333333%; } - .offset-xl-5 { - margin-left: 41.66666667%; } - .offset-xl-6 { - margin-left: 50%; } - .offset-xl-7 { - margin-left: 58.33333333%; } - .offset-xl-8 { - margin-left: 66.66666667%; } - .offset-xl-9 { - margin-left: 75%; } - .offset-xl-10 { - margin-left: 83.33333333%; } - .offset-xl-11 { - margin-left: 91.66666667%; } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; } } - -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; } - .offset-xxl-0 { - margin-left: 0; } - .offset-xxl-1 { - margin-left: 8.33333333%; } - .offset-xxl-2 { - margin-left: 16.66666667%; } - .offset-xxl-3 { - margin-left: 25%; } - .offset-xxl-4 { - margin-left: 33.33333333%; } - .offset-xxl-5 { - margin-left: 41.66666667%; } - .offset-xxl-6 { - margin-left: 50%; } - .offset-xxl-7 { - margin-left: 58.33333333%; } - .offset-xxl-8 { - margin-left: 66.66666667%; } - .offset-xxl-9 { - margin-left: 75%; } - .offset-xxl-10 { - margin-left: 83.33333333%; } - .offset-xxl-11 { - margin-left: 91.66666667%; } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; } } - -.table, .td-table:not(.td-initial), .td-content table:not(.td-initial), .td-box table:not(.td-initial) { - --bs-table-color-type: initial; - --bs-table-bg-type: initial; - --bs-table-color-state: initial; - --bs-table-bg-state: initial; - --bs-table-color: var(--bs-emphasis-color); - --bs-table-bg: var(--bs-body-bg); - --bs-table-border-color: var(--bs-border-color); - --bs-table-accent-bg: transparent; - --bs-table-striped-color: var(--bs-emphasis-color); - --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05); - --bs-table-active-color: var(--bs-emphasis-color); - --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); - --bs-table-hover-color: var(--bs-emphasis-color); - --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075); - width: 100%; - margin-bottom: 1rem; - vertical-align: top; - border-color: var(--bs-table-border-color); } - .table > :not(caption) > * > *, .td-table:not(.td-initial) > :not(caption) > * > *, .td-content table:not(.td-initial) > :not(caption) > * > *, .td-box table:not(.td-initial) > :not(caption) > * > * { - padding: 0.5rem 0.5rem; - color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))); - background-color: var(--bs-table-bg); - border-bottom-width: var(--bs-border-width); - box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); } - .table > tbody, .td-table:not(.td-initial) > tbody, .td-content table:not(.td-initial) > tbody, .td-box table:not(.td-initial) > tbody { - vertical-align: inherit; } - .table > thead, .td-table:not(.td-initial) > thead, .td-content table:not(.td-initial) > thead, .td-box table:not(.td-initial) > thead { - vertical-align: bottom; } - -.table-group-divider { - border-top: calc(var(--bs-border-width) * 2) solid currentcolor; } - -.caption-top { - caption-side: top; } - -.table-sm > :not(caption) > * > * { - padding: 0.25rem 0.25rem; } - -.table-bordered > :not(caption) > * { - border-width: var(--bs-border-width) 0; } - .table-bordered > :not(caption) > * > * { - border-width: 0 var(--bs-border-width); } - -.table-borderless > :not(caption) > * > * { - border-bottom-width: 0; } - -.table-borderless > :not(:first-child) { - border-top-width: 0; } - -.table-striped > tbody > tr:nth-of-type(odd) > *, .td-table:not(.td-initial) > tbody > tr:nth-of-type(odd) > *, .td-content table:not(.td-initial) > tbody > tr:nth-of-type(odd) > *, .td-box table:not(.td-initial) > tbody > tr:nth-of-type(odd) > * { - --bs-table-color-type: var(--bs-table-striped-color); - --bs-table-bg-type: var(--bs-table-striped-bg); } - -.table-striped-columns > :not(caption) > tr > :nth-child(even) { - --bs-table-color-type: var(--bs-table-striped-color); - --bs-table-bg-type: var(--bs-table-striped-bg); } - -.table-active { - --bs-table-color-state: var(--bs-table-active-color); - --bs-table-bg-state: var(--bs-table-active-bg); } - -.table-hover > tbody > tr:hover > * { - --bs-table-color-state: var(--bs-table-hover-color); - --bs-table-bg-state: var(--bs-table-hover-bg); } - -.table-primary { - --bs-table-color: #000; - --bs-table-bg: #d6e0e8; - --bs-table-border-color: #abb3ba; - --bs-table-striped-bg: #cbd5dc; - --bs-table-striped-color: #000; - --bs-table-active-bg: #c1cad1; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c6cfd7; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-secondary { - --bs-table-color: #000; - --bs-table-bg: #ffedd6; - --bs-table-border-color: #ccbeab; - --bs-table-striped-bg: #f2e1cb; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e6d5c1; - --bs-table-active-color: #000; - --bs-table-hover-bg: #ecdbc6; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-success { - --bs-table-color: #000; - --bs-table-bg: #d7e3ff; - --bs-table-border-color: #acb6cc; - --bs-table-striped-bg: #ccd8f2; - --bs-table-striped-color: #000; - --bs-table-active-bg: #c2cce6; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c7d2ec; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-info { - --bs-table-color: #000; - --bs-table-bg: #f2f9f8; - --bs-table-border-color: #c2c7c6; - --bs-table-striped-bg: #e6edec; - --bs-table-striped-color: #000; - --bs-table-active-bg: #dae0df; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e0e6e5; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-warning { - --bs-table-color: #000; - --bs-table-bg: #fbe1de; - --bs-table-border-color: #c9b4b2; - --bs-table-striped-bg: #eed6d3; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e2cbc8; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e8d0cd; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-danger { - --bs-table-color: #000; - --bs-table-bg: #fbe1de; - --bs-table-border-color: #c9b4b2; - --bs-table-striped-bg: #eed6d3; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e2cbc8; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e8d0cd; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-light { - --bs-table-color: #000; - --bs-table-bg: #d3f3ee; - --bs-table-border-color: #a9c2be; - --bs-table-striped-bg: #c8e7e2; - --bs-table-striped-color: #000; - --bs-table-active-bg: #bedbd6; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c3e1dc; - --bs-table-hover-color: #000; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-dark { - --bs-table-color: #fff; - --bs-table-bg: #403f4c; - --bs-table-border-color: #666570; - --bs-table-striped-bg: #4a4955; - --bs-table-striped-color: #fff; - --bs-table-active-bg: #53525e; - --bs-table-active-color: #fff; - --bs-table-hover-bg: #4e4d59; - --bs-table-hover-color: #fff; - color: var(--bs-table-color); - border-color: var(--bs-table-border-color); } - -.table-responsive, .td-table:not(.td-initial), .td-content table:not(.td-initial), .td-box table:not(.td-initial) { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - -@media (max-width: 575.98px) { - .table-responsive-sm { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 767.98px) { - .table-responsive-md { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 991.98px) { - .table-responsive-lg { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 1199.98px) { - .table-responsive-xl { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -@media (max-width: 1399.98px) { - .table-responsive-xxl { - overflow-x: auto; - -webkit-overflow-scrolling: touch; } } - -.form-label { - margin-bottom: 0.5rem; } - -.col-form-label { - padding-top: calc(0.375rem + var(--bs-border-width)); - padding-bottom: calc(0.375rem + var(--bs-border-width)); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; } - -.col-form-label-lg { - padding-top: calc(0.5rem + var(--bs-border-width)); - padding-bottom: calc(0.5rem + var(--bs-border-width)); - font-size: 1.25rem; } - -.col-form-label-sm { - padding-top: calc(0.25rem + var(--bs-border-width)); - padding-bottom: calc(0.25rem + var(--bs-border-width)); - font-size: 0.875rem; } - -.form-text { - margin-top: 0.25rem; - font-size: 0.875em; - color: var(--bs-secondary-color); } - -.form-control { - display: block; - width: 100%; - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: var(--bs-body-color); - appearance: none; - background-color: var(--bs-body-bg); - background-clip: padding-box; - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - box-shadow: var(--bs-box-shadow-inset); - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; } } - .form-control[type="file"] { - overflow: hidden; } - .form-control[type="file"]:not(:disabled):not([readonly]) { - cursor: pointer; } - .form-control:focus { - color: var(--bs-body-color); - background-color: var(--bs-body-bg); - border-color: #98b1c7; - outline: 0; - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-control::-webkit-date-and-time-value { - min-width: 85px; - height: 1.5em; - margin: 0; } - .form-control::-webkit-datetime-edit { - display: block; - padding: 0; } - .form-control::placeholder { - color: var(--bs-secondary-color); - opacity: 1; } - .form-control:disabled { - background-color: var(--bs-secondary-bg); - opacity: 1; } - .form-control::file-selector-button { - padding: 0.375rem 0.75rem; - margin: -0.375rem -0.75rem; - margin-inline-end: 0.75rem; - color: var(--bs-body-color); - background-color: var(--bs-tertiary-bg); - background-image: var(--bs-gradient); - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width: var(--bs-border-width); - border-radius: 0; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control::file-selector-button { - transition: none; } } - .form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: var(--bs-secondary-bg); } - -.form-control-plaintext { - display: block; - width: 100%; - padding: 0.375rem 0; - margin-bottom: 0; - line-height: 1.5; - color: var(--bs-body-color); - background-color: transparent; - border: solid transparent; - border-width: var(--bs-border-width) 0; } - .form-control-plaintext:focus { - outline: 0; } - .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; } - -.form-control-sm { - min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: var(--bs-border-radius-sm); } - .form-control-sm::file-selector-button { - padding: 0.25rem 0.5rem; - margin: -0.25rem -0.5rem; - margin-inline-end: 0.5rem; } - -.form-control-lg { - min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: var(--bs-border-radius-lg); } - .form-control-lg::file-selector-button { - padding: 0.5rem 1rem; - margin: -0.5rem -1rem; - margin-inline-end: 1rem; } - -textarea.form-control { - min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); } - -textarea.form-control-sm { - min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); } - -textarea.form-control-lg { - min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); } - -.form-control-color { - width: 3rem; - height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); - padding: 0.375rem; } - .form-control-color:not(:disabled):not([readonly]) { - cursor: pointer; } - .form-control-color::-moz-color-swatch { - border: 0 !important; - border-radius: var(--bs-border-radius); } - .form-control-color::-webkit-color-swatch { - border: 0 !important; - border-radius: var(--bs-border-radius); } - .form-control-color.form-control-sm { - height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); } - .form-control-color.form-control-lg { - height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); } - -.form-select { - --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); - display: block; - width: 100%; - padding: 0.375rem 2.25rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: var(--bs-body-color); - appearance: none; - background-color: var(--bs-body-bg); - background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); - background-repeat: no-repeat; - background-position: right 0.75rem center; - background-size: 16px 12px; - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - box-shadow: var(--bs-box-shadow-inset); - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-select { - transition: none; } } - .form-select:focus { - border-color: #98b1c7; - outline: 0; - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-select[multiple], .form-select[size]:not([size="1"]) { - padding-right: 0.75rem; - background-image: none; } - .form-select:disabled { - background-color: var(--bs-secondary-bg); } - .form-select:-moz-focusring { - color: transparent; - text-shadow: 0 0 0 var(--bs-body-color); } - -.form-select-sm { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; - border-radius: var(--bs-border-radius-sm); } - -.form-select-lg { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; - border-radius: var(--bs-border-radius-lg); } - -[data-bs-theme="dark"] .form-select { - --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); } - -.form-check { - display: block; - min-height: 1.5rem; - padding-left: 1.5em; - margin-bottom: 0.125rem; } - .form-check .form-check-input { - float: left; - margin-left: -1.5em; } - -.form-check-reverse { - padding-right: 1.5em; - padding-left: 0; - text-align: right; } - .form-check-reverse .form-check-input { - float: right; - margin-right: -1.5em; - margin-left: 0; } - -.form-check-input { - --bs-form-check-bg: var(--bs-body-bg); - flex-shrink: 0; - width: 1em; - height: 1em; - margin-top: 0.25em; - vertical-align: top; - appearance: none; - background-color: var(--bs-form-check-bg); - background-image: var(--bs-form-check-bg-image); - background-repeat: no-repeat; - background-position: center; - background-size: contain; - border: var(--bs-border-width) solid var(--bs-border-color); - print-color-adjust: exact; } - .form-check-input[type="checkbox"] { - border-radius: 0.25em; } - .form-check-input[type="radio"] { - border-radius: 50%; } - .form-check-input:active { - filter: brightness(90%); } - .form-check-input:focus { - border-color: #98b1c7; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-check-input:checked { - background-color: #30638e; - border-color: #30638e; } - .form-check-input:checked[type="checkbox"] { - --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-check-input:checked[type="radio"] { - --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-check-input[type="checkbox"]:indeterminate { - background-color: #30638e; - border-color: #30638e; - --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-check-input:disabled { - pointer-events: none; - filter: none; - opacity: 0.5; } - .form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { - cursor: default; - opacity: 0.5; } - -.form-switch { - padding-left: 2.5em; } - .form-switch .form-check-input { - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); - width: 2em; - margin-left: -2.5em; - background-image: var(--bs-form-switch-bg); - background-position: left center; - border-radius: 2em; - transition: background-position 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-switch .form-check-input { - transition: none; } } - .form-switch .form-check-input:focus { - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2398b1c7'/%3e%3c/svg%3e"); } - .form-switch .form-check-input:checked { - background-position: right center; - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"), var(--bs-gradient); } - .form-switch.form-check-reverse { - padding-right: 2.5em; - padding-left: 0; } - .form-switch.form-check-reverse .form-check-input { - margin-right: -2.5em; - margin-left: 0; } - -.form-check-inline { - display: inline-block; - margin-right: 1rem; } - -.btn-check { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - .btn-check[disabled] + .btn, div.drawio .btn-check[disabled] + button, .td-blog .btn-check[disabled] + .td-rss-button, .btn-check:disabled + .btn, div.drawio .btn-check:disabled + button, .td-blog .btn-check:disabled + .td-rss-button { - pointer-events: none; - filter: none; - opacity: 0.65; } - -[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) { - --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); } - -.form-range { - width: 100%; - height: 1.5rem; - padding: 0; - appearance: none; - background-color: transparent; } - .form-range:focus { - outline: 0; } - .form-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .form-range::-moz-focus-outer { - border: 0; } - .form-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - appearance: none; - background-color: #30638e; - background-image: var(--bs-gradient); - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-range::-webkit-slider-thumb { - transition: none; } } - .form-range::-webkit-slider-thumb:active { - background-color: #c1d0dd; - background-image: var(--bs-gradient); } - .form-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: var(--bs-secondary-bg); - border-color: transparent; - border-radius: 1rem; - box-shadow: var(--bs-box-shadow-inset); } - .form-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - appearance: none; - background-color: #30638e; - background-image: var(--bs-gradient); - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-range::-moz-range-thumb { - transition: none; } } - .form-range::-moz-range-thumb:active { - background-color: #c1d0dd; - background-image: var(--bs-gradient); } - .form-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: var(--bs-secondary-bg); - border-color: transparent; - border-radius: 1rem; - box-shadow: var(--bs-box-shadow-inset); } - .form-range:disabled { - pointer-events: none; } - .form-range:disabled::-webkit-slider-thumb { - background-color: var(--bs-secondary-color); } - .form-range:disabled::-moz-range-thumb { - background-color: var(--bs-secondary-color); } - -.form-floating { - position: relative; } - .form-floating > .form-control, - .form-floating > .form-control-plaintext, - .form-floating > .form-select { - height: calc(3.5rem + calc(var(--bs-border-width) * 2)); - min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); - line-height: 1.25; } - .form-floating > label { - position: absolute; - top: 0; - left: 0; - z-index: 2; - height: 100%; - padding: 1rem 0.75rem; - overflow: hidden; - text-align: start; - text-overflow: ellipsis; - white-space: nowrap; - pointer-events: none; - border: var(--bs-border-width) solid transparent; - transform-origin: 0 0; - transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-floating > label { - transition: none; } } - .form-floating > .form-control, - .form-floating > .form-control-plaintext { - padding: 1rem 0.75rem; } - .form-floating > .form-control::placeholder, - .form-floating > .form-control-plaintext::placeholder { - color: transparent; } - .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), - .form-floating > .form-control-plaintext:focus, - .form-floating > .form-control-plaintext:not(:placeholder-shown) { - padding-top: 1.625rem; - padding-bottom: 0.625rem; } - .form-floating > .form-control:-webkit-autofill, - .form-floating > .form-control-plaintext:-webkit-autofill { - padding-top: 1.625rem; - padding-bottom: 0.625rem; } - .form-floating > .form-select { - padding-top: 1.625rem; - padding-bottom: 0.625rem; } - .form-floating > .form-control:focus ~ label, - .form-floating > .form-control:not(:placeholder-shown) ~ label, - .form-floating > .form-control-plaintext ~ label, - .form-floating > .form-select ~ label { - color: rgba(var(--bs-body-color-rgb), 0.65); - transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } - .form-floating > .form-control:focus ~ label::after, - .form-floating > .form-control:not(:placeholder-shown) ~ label::after, - .form-floating > .form-control-plaintext ~ label::after, - .form-floating > .form-select ~ label::after { - position: absolute; - inset: 1rem 0.375rem; - z-index: -1; - height: 1.5em; - content: ""; - background-color: var(--bs-body-bg); - border-radius: var(--bs-border-radius); } - .form-floating > .form-control:-webkit-autofill ~ label { - color: rgba(var(--bs-body-color-rgb), 0.65); - transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } - .form-floating > .form-control-plaintext ~ label { - border-width: var(--bs-border-width) 0; } - .form-floating > :disabled ~ label, - .form-floating > .form-control:disabled ~ label { - color: #6c757d; } - .form-floating > :disabled ~ label::after, - .form-floating > .form-control:disabled ~ label::after { - background-color: var(--bs-secondary-bg); } - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; } - .input-group > .form-control, - .input-group > .form-select, - .input-group > .form-floating { - position: relative; - flex: 1 1 auto; - width: 1%; - min-width: 0; } - .input-group > .form-control:focus, - .input-group > .form-select:focus, - .input-group > .form-floating:focus-within { - z-index: 5; } - .input-group .btn, .input-group div.drawio button, div.drawio .input-group button, .input-group .td-blog .td-rss-button, .td-blog .input-group .td-rss-button { - position: relative; - z-index: 2; } - .input-group .btn:focus, .input-group div.drawio button:focus, div.drawio .input-group button:focus, .input-group .td-blog .td-rss-button:focus, .td-blog .input-group .td-rss-button:focus { - z-index: 5; } - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: var(--bs-body-color); - text-align: center; - white-space: nowrap; - background-color: var(--bs-tertiary-bg); - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); } - -.input-group-lg > .form-control, -.input-group-lg > .form-select, -.input-group-lg > .input-group-text, -.input-group-lg > .btn, -div.drawio .input-group-lg > button, -.td-blog .input-group-lg > .td-rss-button { - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: var(--bs-border-radius-lg); } - -.input-group-sm > .form-control, -.input-group-sm > .form-select, -.input-group-sm > .input-group-text, -.input-group-sm > .btn, -div.drawio .input-group-sm > button, -.td-blog .input-group-sm > .td-rss-button { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: var(--bs-border-radius-sm); } - -.input-group-lg > .form-select, -.input-group-sm > .form-select { - padding-right: 3rem; } - -.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), -.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n + 3), -.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, -.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group.has-validation > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), -.input-group.has-validation > .dropdown-toggle:nth-last-child(n + 4), -.input-group.has-validation > .form-floating:nth-last-child(n + 3) > .form-control, -.input-group.has-validation > .form-floating:nth-last-child(n + 3) > .form-select { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { - margin-left: calc(var(--bs-border-width) * -1); - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.input-group > .form-floating:not(:first-child) > .form-control, -.input-group > .form-floating:not(:first-child) > .form-select { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: var(--bs-form-valid-color); } - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - color: #fff; - background-color: var(--bs-success); - border-radius: var(--bs-border-radius); } - -.was-validated :valid ~ .valid-feedback, -.was-validated :valid ~ .valid-tooltip, -.is-valid ~ .valid-feedback, -.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: var(--bs-form-valid-border-color); - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233772ff' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: var(--bs-form-valid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .form-select:valid, .form-select.is-valid { - border-color: var(--bs-form-valid-border-color); } - .was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { - --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233772ff' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - padding-right: 4.125rem; - background-position: right 0.75rem center, center right 2.25rem; - background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-select:valid:focus, .form-select.is-valid:focus { - border-color: var(--bs-form-valid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } - -.was-validated .form-control-color:valid, .form-control-color.is-valid { - width: calc(3rem + calc(1.5em + 0.75rem)); } - -.was-validated .form-check-input:valid, .form-check-input.is-valid { - border-color: var(--bs-form-valid-border-color); } - .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { - background-color: var(--bs-form-valid-color); } - .was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { - box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } - .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: var(--bs-form-valid-color); } - -.form-check-inline .form-check-input ~ .valid-feedback { - margin-left: .5em; } - -.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, .was-validated .input-group > .form-select:not(:focus):valid, -.input-group > .form-select:not(:focus).is-valid, .was-validated .input-group > .form-floating:not(:focus-within):valid, -.input-group > .form-floating:not(:focus-within).is-valid { - z-index: 3; } - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: var(--bs-form-invalid-color); } - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - color: #fff; - background-color: var(--bs-danger); - border-radius: var(--bs-border-radius); } - -.was-validated :invalid ~ .invalid-feedback, -.was-validated :invalid ~ .invalid-tooltip, -.is-invalid ~ .invalid-feedback, -.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: var(--bs-form-invalid-border-color); - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed6a5a'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ed6a5a' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: var(--bs-form-invalid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .form-select:invalid, .form-select.is-invalid { - border-color: var(--bs-form-invalid-border-color); } - .was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { - --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed6a5a'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ed6a5a' stroke='none'/%3e%3c/svg%3e"); - padding-right: 4.125rem; - background-position: right 0.75rem center, center right 2.25rem; - background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { - border-color: var(--bs-form-invalid-border-color); - box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } - -.was-validated .form-control-color:invalid, .form-control-color.is-invalid { - width: calc(3rem + calc(1.5em + 0.75rem)); } - -.was-validated .form-check-input:invalid, .form-check-input.is-invalid { - border-color: var(--bs-form-invalid-border-color); } - .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { - background-color: var(--bs-form-invalid-color); } - .was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { - box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } - .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: var(--bs-form-invalid-color); } - -.form-check-inline .form-check-input ~ .invalid-feedback { - margin-left: .5em; } - -.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, .was-validated .input-group > .form-select:not(:focus):invalid, -.input-group > .form-select:not(:focus).is-invalid, .was-validated .input-group > .form-floating:not(:focus-within):invalid, -.input-group > .form-floating:not(:focus-within).is-invalid { - z-index: 4; } - -.btn, div.drawio button, .td-blog .td-rss-button { - --bs-btn-padding-x: 0.75rem; - --bs-btn-padding-y: 0.375rem; - --bs-btn-font-family: ; - --bs-btn-font-size: 1rem; - --bs-btn-font-weight: 400; - --bs-btn-line-height: 1.5; - --bs-btn-color: var(--bs-body-color); - --bs-btn-bg: transparent; - --bs-btn-border-width: var(--bs-border-width); - --bs-btn-border-color: transparent; - --bs-btn-border-radius: var(--bs-border-radius); - --bs-btn-hover-border-color: transparent; - --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); - --bs-btn-disabled-opacity: 0.65; - --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); - display: inline-block; - padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); - font-family: var(--bs-btn-font-family); - font-size: var(--bs-btn-font-size); - font-weight: var(--bs-btn-font-weight); - line-height: var(--bs-btn-line-height); - color: var(--bs-btn-color); - text-align: center; - text-decoration: none; - vertical-align: middle; - cursor: pointer; - user-select: none; - border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); - border-radius: var(--bs-btn-border-radius); - background-color: var(--bs-btn-bg); - background-image: var(--bs-gradient); - box-shadow: var(--bs-btn-box-shadow); - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .btn, div.drawio button, .td-blog .td-rss-button { - transition: none; } } - .btn:hover, div.drawio button:hover, .td-blog .td-rss-button:hover { - color: var(--bs-btn-hover-color); - background-color: var(--bs-btn-hover-bg); - border-color: var(--bs-btn-hover-border-color); } - .btn-check + .btn:hover, div.drawio .btn-check + button:hover, .td-blog .btn-check + .td-rss-button:hover { - color: var(--bs-btn-color); - background-color: var(--bs-btn-bg); - border-color: var(--bs-btn-border-color); } - .btn:focus-visible, div.drawio button:focus-visible, .td-blog .td-rss-button:focus-visible { - color: var(--bs-btn-hover-color); - background-color: var(--bs-btn-hover-bg); - background-image: var(--bs-gradient); - border-color: var(--bs-btn-hover-border-color); - outline: 0; - box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); } - .btn-check:focus-visible + .btn, div.drawio .btn-check:focus-visible + button, .td-blog .btn-check:focus-visible + .td-rss-button { - border-color: var(--bs-btn-hover-border-color); - outline: 0; - box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); } - .btn-check:checked + .btn, div.drawio .btn-check:checked + button, .td-blog .btn-check:checked + .td-rss-button, :not(.btn-check) + .btn:active, div.drawio :not(.btn-check) + button:active, .td-blog :not(.btn-check) + .td-rss-button:active, .btn:first-child:active, div.drawio button:first-child:active, .td-blog .td-rss-button:first-child:active, .btn.active, div.drawio button.active, .td-blog .active.td-rss-button, .btn.show, div.drawio button.show, .td-blog .show.td-rss-button { - color: var(--bs-btn-active-color); - background-color: var(--bs-btn-active-bg); - background-image: none; - border-color: var(--bs-btn-active-border-color); - box-shadow: var(--bs-btn-active-shadow); } - .btn-check:checked + .btn:focus-visible, div.drawio .btn-check:checked + button:focus-visible, .td-blog .btn-check:checked + .td-rss-button:focus-visible, :not(.btn-check) + .btn:active:focus-visible, div.drawio :not(.btn-check) + button:active:focus-visible, .td-blog :not(.btn-check) + .td-rss-button:active:focus-visible, .btn:first-child:active:focus-visible, div.drawio button:first-child:active:focus-visible, .td-blog .td-rss-button:first-child:active:focus-visible, .btn.active:focus-visible, div.drawio button.active:focus-visible, .td-blog .active.td-rss-button:focus-visible, .btn.show:focus-visible, div.drawio button.show:focus-visible, .td-blog .show.td-rss-button:focus-visible { - box-shadow: var(--bs-btn-active-shadow), var(--bs-btn-focus-box-shadow); } - .btn-check:checked:focus-visible + .btn, div.drawio .btn-check:checked:focus-visible + button, .td-blog .btn-check:checked:focus-visible + .td-rss-button { - box-shadow: var(--bs-btn-active-shadow), var(--bs-btn-focus-box-shadow); } - .btn:disabled, div.drawio button:disabled, .td-blog .td-rss-button:disabled, .btn.disabled, div.drawio button.disabled, .td-blog .disabled.td-rss-button, fieldset:disabled .btn, fieldset:disabled div.drawio button, div.drawio fieldset:disabled button, fieldset:disabled .td-blog .td-rss-button, .td-blog fieldset:disabled .td-rss-button { - color: var(--bs-btn-disabled-color); - pointer-events: none; - background-color: var(--bs-btn-disabled-bg); - background-image: none; - border-color: var(--bs-btn-disabled-border-color); - opacity: var(--bs-btn-disabled-opacity); - box-shadow: none; } - -.btn-primary { - --bs-btn-color: #fff; - --bs-btn-bg: #30638e; - --bs-btn-border-color: #30638e; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #295479; - --bs-btn-hover-border-color: #264f72; - --bs-btn-focus-shadow-rgb: 79, 122, 159; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #264f72; - --bs-btn-active-border-color: #244a6b; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #fff; - --bs-btn-disabled-bg: #30638e; - --bs-btn-disabled-border-color: #30638e; } - -.btn-secondary { - --bs-btn-color: #000; - --bs-btn-bg: #ffa630; - --bs-btn-border-color: #ffa630; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ffb34f; - --bs-btn-hover-border-color: #ffaf45; - --bs-btn-focus-shadow-rgb: 217, 141, 41; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ffb859; - --bs-btn-active-border-color: #ffaf45; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #ffa630; - --bs-btn-disabled-border-color: #ffa630; } - -.btn-success { - --bs-btn-color: #000; - --bs-btn-bg: #3772ff; - --bs-btn-border-color: #3772ff; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #5587ff; - --bs-btn-hover-border-color: #4b80ff; - --bs-btn-focus-shadow-rgb: 47, 97, 217; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #5f8eff; - --bs-btn-active-border-color: #4b80ff; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #3772ff; - --bs-btn-disabled-border-color: #3772ff; } - -.btn-info, .td-blog .td-rss-button { - --bs-btn-color: #000; - --bs-btn-bg: #c0e0de; - --bs-btn-border-color: #c0e0de; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #c9e5e3; - --bs-btn-hover-border-color: #c6e3e1; - --bs-btn-focus-shadow-rgb: 163, 190, 189; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #cde6e5; - --bs-btn-active-border-color: #c6e3e1; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #c0e0de; - --bs-btn-disabled-border-color: #c0e0de; } - -.btn-warning { - --bs-btn-color: #000; - --bs-btn-bg: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #f08073; - --bs-btn-hover-border-color: #ef796b; - --bs-btn-focus-shadow-rgb: 201, 90, 77; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #f1887b; - --bs-btn-active-border-color: #ef796b; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #ed6a5a; - --bs-btn-disabled-border-color: #ed6a5a; } - -.btn-danger { - --bs-btn-color: #000; - --bs-btn-bg: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #f08073; - --bs-btn-hover-border-color: #ef796b; - --bs-btn-focus-shadow-rgb: 201, 90, 77; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #f1887b; - --bs-btn-active-border-color: #ef796b; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #ed6a5a; - --bs-btn-disabled-border-color: #ed6a5a; } - -.btn-light { - --bs-btn-color: #000; - --bs-btn-bg: #d3f3ee; - --bs-btn-border-color: #d3f3ee; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #b3cfca; - --bs-btn-hover-border-color: #a9c2be; - --bs-btn-focus-shadow-rgb: 179, 207, 202; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #a9c2be; - --bs-btn-active-border-color: #9eb6b3; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #d3f3ee; - --bs-btn-disabled-border-color: #d3f3ee; } - -.btn-dark { - --bs-btn-color: #fff; - --bs-btn-bg: #403f4c; - --bs-btn-border-color: #403f4c; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #5d5c67; - --bs-btn-hover-border-color: #53525e; - --bs-btn-focus-shadow-rgb: 93, 92, 103; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #666570; - --bs-btn-active-border-color: #53525e; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #fff; - --bs-btn-disabled-bg: #403f4c; - --bs-btn-disabled-border-color: #403f4c; } - -.btn-outline-primary, div.drawio button { - --bs-btn-color: #30638e; - --bs-btn-border-color: #30638e; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #30638e; - --bs-btn-hover-border-color: #30638e; - --bs-btn-focus-shadow-rgb: 48, 99, 142; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #30638e; - --bs-btn-active-border-color: #30638e; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #30638e; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #30638e; - --bs-gradient: none; } - -.btn-outline-secondary { - --bs-btn-color: #ffa630; - --bs-btn-border-color: #ffa630; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ffa630; - --bs-btn-hover-border-color: #ffa630; - --bs-btn-focus-shadow-rgb: 255, 166, 48; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ffa630; - --bs-btn-active-border-color: #ffa630; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #ffa630; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #ffa630; - --bs-gradient: none; } - -.btn-outline-success { - --bs-btn-color: #3772ff; - --bs-btn-border-color: #3772ff; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #3772ff; - --bs-btn-hover-border-color: #3772ff; - --bs-btn-focus-shadow-rgb: 55, 114, 255; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #3772ff; - --bs-btn-active-border-color: #3772ff; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #3772ff; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #3772ff; - --bs-gradient: none; } - -.btn-outline-info { - --bs-btn-color: #c0e0de; - --bs-btn-border-color: #c0e0de; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #c0e0de; - --bs-btn-hover-border-color: #c0e0de; - --bs-btn-focus-shadow-rgb: 192, 224, 222; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #c0e0de; - --bs-btn-active-border-color: #c0e0de; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #c0e0de; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #c0e0de; - --bs-gradient: none; } - -.btn-outline-warning { - --bs-btn-color: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ed6a5a; - --bs-btn-hover-border-color: #ed6a5a; - --bs-btn-focus-shadow-rgb: 237, 106, 90; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ed6a5a; - --bs-btn-active-border-color: #ed6a5a; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #ed6a5a; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #ed6a5a; - --bs-gradient: none; } - -.btn-outline-danger { - --bs-btn-color: #ed6a5a; - --bs-btn-border-color: #ed6a5a; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #ed6a5a; - --bs-btn-hover-border-color: #ed6a5a; - --bs-btn-focus-shadow-rgb: 237, 106, 90; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #ed6a5a; - --bs-btn-active-border-color: #ed6a5a; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #ed6a5a; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #ed6a5a; - --bs-gradient: none; } - -.btn-outline-light { - --bs-btn-color: #d3f3ee; - --bs-btn-border-color: #d3f3ee; - --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #d3f3ee; - --bs-btn-hover-border-color: #d3f3ee; - --bs-btn-focus-shadow-rgb: 211, 243, 238; - --bs-btn-active-color: #000; - --bs-btn-active-bg: #d3f3ee; - --bs-btn-active-border-color: #d3f3ee; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #d3f3ee; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #d3f3ee; - --bs-gradient: none; } - -.btn-outline-dark { - --bs-btn-color: #403f4c; - --bs-btn-border-color: #403f4c; - --bs-btn-hover-color: #fff; - --bs-btn-hover-bg: #403f4c; - --bs-btn-hover-border-color: #403f4c; - --bs-btn-focus-shadow-rgb: 64, 63, 76; - --bs-btn-active-color: #fff; - --bs-btn-active-bg: #403f4c; - --bs-btn-active-border-color: #403f4c; - --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #403f4c; - --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #403f4c; - --bs-gradient: none; } - -.btn-link { - --bs-btn-font-weight: 400; - --bs-btn-color: var(--bs-link-color); - --bs-btn-bg: transparent; - --bs-btn-border-color: transparent; - --bs-btn-hover-color: var(--bs-link-hover-color); - --bs-btn-hover-border-color: transparent; - --bs-btn-active-color: var(--bs-link-hover-color); - --bs-btn-active-border-color: transparent; - --bs-btn-disabled-color: #6c757d; - --bs-btn-disabled-border-color: transparent; - --bs-btn-box-shadow: 0 0 0 #000; - --bs-btn-focus-shadow-rgb: 49, 132, 253; - text-decoration: underline; - background-image: none; } - .btn-link:focus-visible { - color: var(--bs-btn-color); } - .btn-link:hover { - color: var(--bs-btn-hover-color); } - -.btn-lg, .td-blog .td-rss-button, .btn-group-lg > .btn, div.drawio .btn-group-lg > button { - --bs-btn-padding-y: 0.5rem; - --bs-btn-padding-x: 1rem; - --bs-btn-font-size: 1.25rem; - --bs-btn-border-radius: var(--bs-border-radius-lg); } - -.btn-sm, .btn-group-sm > .btn, div.drawio .btn-group-sm > button, .td-blog .btn-group-sm > .td-rss-button { - --bs-btn-padding-y: 0.25rem; - --bs-btn-padding-x: 0.5rem; - --bs-btn-font-size: 0.875rem; - --bs-btn-border-radius: var(--bs-border-radius-sm); } - -.fade { - transition: opacity 0.15s linear; } - @media (prefers-reduced-motion: reduce) { - .fade { - transition: none; } } - .fade:not(.show) { - opacity: 0; } - -.collapse:not(.show) { - display: none; } - -.collapsing { - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; } } - .collapsing.collapse-horizontal { - width: 0; - height: auto; - transition: width 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing.collapse-horizontal { - transition: none; } } -.dropup, -.dropend, -.dropdown, -.dropstart, -.dropup-center, -.dropdown-center { - position: relative; } - -.dropdown-toggle { - white-space: nowrap; } - .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; } - .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropdown-menu { - --bs-dropdown-zindex: 1000; - --bs-dropdown-min-width: 10rem; - --bs-dropdown-padding-x: 0; - --bs-dropdown-padding-y: 0.5rem; - --bs-dropdown-spacer: 0.125rem; - --bs-dropdown-font-size: 1rem; - --bs-dropdown-color: var(--bs-body-color); - --bs-dropdown-bg: var(--bs-body-bg); - --bs-dropdown-border-color: var(--bs-border-color-translucent); - --bs-dropdown-border-radius: var(--bs-border-radius); - --bs-dropdown-border-width: var(--bs-border-width); - --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); - --bs-dropdown-divider-bg: var(--bs-border-color-translucent); - --bs-dropdown-divider-margin-y: 0.5rem; - --bs-dropdown-box-shadow: var(--bs-box-shadow); - --bs-dropdown-link-color: var(--bs-body-color); - --bs-dropdown-link-hover-color: var(--bs-body-color); - --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); - --bs-dropdown-link-active-color: #fff; - --bs-dropdown-link-active-bg: #30638e; - --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); - --bs-dropdown-item-padding-x: 1rem; - --bs-dropdown-item-padding-y: 0.25rem; - --bs-dropdown-header-color: #6c757d; - --bs-dropdown-header-padding-x: 1rem; - --bs-dropdown-header-padding-y: 0.5rem; - position: absolute; - z-index: var(--bs-dropdown-zindex); - display: none; - min-width: var(--bs-dropdown-min-width); - padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); - margin: 0; - font-size: var(--bs-dropdown-font-size); - color: var(--bs-dropdown-color); - text-align: left; - list-style: none; - background-color: var(--bs-dropdown-bg); - background-clip: padding-box; - border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); - border-radius: var(--bs-dropdown-border-radius); - box-shadow: var(--bs-dropdown-box-shadow); } - .dropdown-menu[data-bs-popper] { - top: 100%; - left: 0; - margin-top: var(--bs-dropdown-spacer); } - -.dropdown-menu-start { - --bs-position: start; } - .dropdown-menu-start[data-bs-popper] { - right: auto; - left: 0; } - -.dropdown-menu-end { - --bs-position: end; } - .dropdown-menu-end[data-bs-popper] { - right: 0; - left: auto; } - -@media (min-width: 576px) { - .dropdown-menu-sm-start { - --bs-position: start; } - .dropdown-menu-sm-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-sm-end { - --bs-position: end; } - .dropdown-menu-sm-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 768px) { - .dropdown-menu-md-start { - --bs-position: start; } - .dropdown-menu-md-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-md-end { - --bs-position: end; } - .dropdown-menu-md-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 992px) { - .dropdown-menu-lg-start { - --bs-position: start; } - .dropdown-menu-lg-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-lg-end { - --bs-position: end; } - .dropdown-menu-lg-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 1200px) { - .dropdown-menu-xl-start { - --bs-position: start; } - .dropdown-menu-xl-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-xl-end { - --bs-position: end; } - .dropdown-menu-xl-end[data-bs-popper] { - right: 0; - left: auto; } } - -@media (min-width: 1400px) { - .dropdown-menu-xxl-start { - --bs-position: start; } - .dropdown-menu-xxl-start[data-bs-popper] { - right: auto; - left: 0; } - .dropdown-menu-xxl-end { - --bs-position: end; } - .dropdown-menu-xxl-end[data-bs-popper] { - right: 0; - left: auto; } } - -.dropup .dropdown-menu[data-bs-popper] { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: var(--bs-dropdown-spacer); } - -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; } - -.dropup .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropend .dropdown-menu[data-bs-popper] { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: var(--bs-dropdown-spacer); } - -.dropend .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; } - -.dropend .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropend .dropdown-toggle::after { - vertical-align: 0; } - -.dropstart .dropdown-menu[data-bs-popper] { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: var(--bs-dropdown-spacer); } - -.dropstart .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; } - -.dropstart .dropdown-toggle::after { - display: none; } - -.dropstart .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; } - -.dropstart .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropstart .dropdown-toggle::before { - vertical-align: 0; } - -.dropdown-divider { - height: 0; - margin: var(--bs-dropdown-divider-margin-y) 0; - overflow: hidden; - border-top: 1px solid var(--bs-dropdown-divider-bg); - opacity: 1; } - -.dropdown-item { - display: block; - width: 100%; - padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); - clear: both; - font-weight: 400; - color: var(--bs-dropdown-link-color); - text-align: inherit; - text-decoration: none; - white-space: nowrap; - background-color: transparent; - border: 0; - border-radius: var(--bs-dropdown-item-border-radius, 0); } - .dropdown-item:hover, .dropdown-item:focus { - color: var(--bs-dropdown-link-hover-color); - background-color: var(--bs-dropdown-link-hover-bg); - background-image: var(--bs-gradient); } - .dropdown-item.active, .dropdown-item:active { - color: var(--bs-dropdown-link-active-color); - text-decoration: none; - background-color: var(--bs-dropdown-link-active-bg); - background-image: var(--bs-gradient); } - .dropdown-item.disabled, .dropdown-item:disabled { - color: var(--bs-dropdown-link-disabled-color); - pointer-events: none; - background-color: transparent; - background-image: none; } - -.dropdown-menu.show { - display: block; } - -.dropdown-header { - display: block; - padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); - margin-bottom: 0; - font-size: 0.875rem; - color: var(--bs-dropdown-header-color); - white-space: nowrap; } - -.dropdown-item-text { - display: block; - padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); - color: var(--bs-dropdown-link-color); } - -.dropdown-menu-dark { - --bs-dropdown-color: #dee2e6; - --bs-dropdown-bg: #343a40; - --bs-dropdown-border-color: var(--bs-border-color-translucent); - --bs-dropdown-box-shadow: ; - --bs-dropdown-link-color: #dee2e6; - --bs-dropdown-link-hover-color: #fff; - --bs-dropdown-divider-bg: var(--bs-border-color-translucent); - --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); - --bs-dropdown-link-active-color: #fff; - --bs-dropdown-link-active-bg: #30638e; - --bs-dropdown-link-disabled-color: #adb5bd; - --bs-dropdown-header-color: #adb5bd; } - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, div.drawio .btn-group > button, .td-blog .btn-group > .td-rss-button, - .btn-group-vertical > .btn, - div.drawio .btn-group-vertical > button, - .td-blog .btn-group-vertical > .td-rss-button { - position: relative; - flex: 1 1 auto; } - .btn-group > .btn-check:checked + .btn, div.drawio .btn-group > .btn-check:checked + button, .td-blog .btn-group > .btn-check:checked + .td-rss-button, - .btn-group > .btn-check:focus + .btn, - div.drawio .btn-group > .btn-check:focus + button, - .td-blog .btn-group > .btn-check:focus + .td-rss-button, - .btn-group > .btn:hover, - div.drawio .btn-group > button:hover, - .td-blog .btn-group > .td-rss-button:hover, - .btn-group > .btn:focus, - div.drawio .btn-group > button:focus, - .td-blog .btn-group > .td-rss-button:focus, - .btn-group > .btn:active, - div.drawio .btn-group > button:active, - .td-blog .btn-group > .td-rss-button:active, - .btn-group > .btn.active, - div.drawio .btn-group > button.active, - .td-blog .btn-group > .active.td-rss-button, - .btn-group-vertical > .btn-check:checked + .btn, - div.drawio .btn-group-vertical > .btn-check:checked + button, - .td-blog .btn-group-vertical > .btn-check:checked + .td-rss-button, - .btn-group-vertical > .btn-check:focus + .btn, - div.drawio .btn-group-vertical > .btn-check:focus + button, - .td-blog .btn-group-vertical > .btn-check:focus + .td-rss-button, - .btn-group-vertical > .btn:hover, - div.drawio .btn-group-vertical > button:hover, - .td-blog .btn-group-vertical > .td-rss-button:hover, - .btn-group-vertical > .btn:focus, - div.drawio .btn-group-vertical > button:focus, - .td-blog .btn-group-vertical > .td-rss-button:focus, - .btn-group-vertical > .btn:active, - div.drawio .btn-group-vertical > button:active, - .td-blog .btn-group-vertical > .td-rss-button:active, - .btn-group-vertical > .btn.active, - div.drawio .btn-group-vertical > button.active, - .td-blog .btn-group-vertical > .active.td-rss-button { - z-index: 1; } - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - -.btn-group { - border-radius: var(--bs-border-radius); } - .btn-group > :not(.btn-check:first-child) + .btn, div.drawio .btn-group > :not(.btn-check:first-child) + button, .td-blog .btn-group > :not(.btn-check:first-child) + .td-rss-button, - .btn-group > .btn-group:not(:first-child) { - margin-left: calc(var(--bs-border-width) * -1); } - .btn-group > .btn:not(:last-child):not(.dropdown-toggle), div.drawio .btn-group > button:not(:last-child):not(.dropdown-toggle), .td-blog .btn-group > .td-rss-button:not(:last-child):not(.dropdown-toggle), - .btn-group > .btn.dropdown-toggle-split:first-child, - div.drawio .btn-group > button.dropdown-toggle-split:first-child, - .td-blog .btn-group > .dropdown-toggle-split.td-rss-button:first-child, - .btn-group > .btn-group:not(:last-child) > .btn, - div.drawio .btn-group > .btn-group:not(:last-child) > button, - .td-blog .btn-group > .btn-group:not(:last-child) > .td-rss-button { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .btn-group > .btn:nth-child(n + 3), div.drawio .btn-group > button:nth-child(n + 3), .td-blog .btn-group > .td-rss-button:nth-child(n + 3), - .btn-group > :not(.btn-check) + .btn, - div.drawio .btn-group > :not(.btn-check) + button, - .td-blog .btn-group > :not(.btn-check) + .td-rss-button, - .btn-group > .btn-group:not(:first-child) > .btn, - div.drawio .btn-group > .btn-group:not(:first-child) > button, - .td-blog .btn-group > .btn-group:not(:first-child) > .td-rss-button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { - margin-left: 0; } - .dropstart .dropdown-toggle-split::before { - margin-right: 0; } - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, div.drawio .btn-group-sm > button + .dropdown-toggle-split, .td-blog .btn-group-sm > .td-rss-button + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - -.btn-lg + .dropdown-toggle-split, .td-blog .td-rss-button + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, div.drawio .btn-group-lg > button + .dropdown-toggle-split, .td-blog .btn-group-lg > .td-rss-button + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - -.btn-group.show .dropdown-toggle { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } - .btn-group.show .dropdown-toggle.btn-link { - box-shadow: none; } - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; } - .btn-group-vertical > .btn, div.drawio .btn-group-vertical > button, .td-blog .btn-group-vertical > .td-rss-button, - .btn-group-vertical > .btn-group { - width: 100%; } - .btn-group-vertical > .btn:not(:first-child), div.drawio .btn-group-vertical > button:not(:first-child), .td-blog .btn-group-vertical > .td-rss-button:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) { - margin-top: calc(var(--bs-border-width) * -1); } - .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), div.drawio .btn-group-vertical > button:not(:last-child):not(.dropdown-toggle), .td-blog .btn-group-vertical > .td-rss-button:not(:last-child):not(.dropdown-toggle), - .btn-group-vertical > .btn-group:not(:last-child) > .btn, - div.drawio .btn-group-vertical > .btn-group:not(:last-child) > button, - .td-blog .btn-group-vertical > .btn-group:not(:last-child) > .td-rss-button { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .btn-group-vertical > .btn ~ .btn, div.drawio .btn-group-vertical > button ~ .btn, div.drawio .btn-group-vertical > .btn ~ button, div.drawio .btn-group-vertical > button ~ button, .td-blog .btn-group-vertical > .td-rss-button ~ .btn, .td-blog div.drawio .btn-group-vertical > .td-rss-button ~ button, div.drawio .td-blog .btn-group-vertical > .td-rss-button ~ button, .td-blog .btn-group-vertical > .btn ~ .td-rss-button, .td-blog div.drawio .btn-group-vertical > button ~ .td-rss-button, div.drawio .td-blog .btn-group-vertical > button ~ .td-rss-button, .td-blog .btn-group-vertical > .td-rss-button ~ .td-rss-button, - .btn-group-vertical > .btn-group:not(:first-child) > .btn, - div.drawio .btn-group-vertical > .btn-group:not(:first-child) > button, - .td-blog .btn-group-vertical > .btn-group:not(:first-child) > .td-rss-button { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav { - --bs-nav-link-padding-x: 1rem; - --bs-nav-link-padding-y: 0.5rem; - --bs-nav-link-font-weight: ; - --bs-nav-link-color: var(--bs-link-color); - --bs-nav-link-hover-color: var(--bs-link-hover-color); - --bs-nav-link-disabled-color: var(--bs-secondary-color); - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - -.nav-link { - display: block; - padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); - font-size: var(--bs-nav-link-font-size); - font-weight: var(--bs-nav-link-font-weight); - color: var(--bs-nav-link-color); - text-decoration: none; - background: none; - border: 0; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .nav-link { - transition: none; } } - .nav-link:hover, .nav-link:focus { - color: var(--bs-nav-link-hover-color); } - .nav-link:focus-visible { - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); } - .nav-link.disabled, .nav-link:disabled { - color: var(--bs-nav-link-disabled-color); - pointer-events: none; - cursor: default; } - -.nav-tabs { - --bs-nav-tabs-border-width: var(--bs-border-width); - --bs-nav-tabs-border-color: var(--bs-border-color); - --bs-nav-tabs-border-radius: var(--bs-border-radius); - --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color); - --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); - --bs-nav-tabs-link-active-bg: var(--bs-body-bg); - --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); - border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); } - .nav-tabs .nav-link { - margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); - border: var(--bs-nav-tabs-border-width) solid transparent; - border-top-left-radius: var(--bs-nav-tabs-border-radius); - border-top-right-radius: var(--bs-nav-tabs-border-radius); } - .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - isolation: isolate; - border-color: var(--bs-nav-tabs-link-hover-border-color); } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: var(--bs-nav-tabs-link-active-color); - background-color: var(--bs-nav-tabs-link-active-bg); - border-color: var(--bs-nav-tabs-link-active-border-color); } - .nav-tabs .dropdown-menu { - margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav-pills { - --bs-nav-pills-border-radius: var(--bs-border-radius); - --bs-nav-pills-link-active-color: #fff; - --bs-nav-pills-link-active-bg: #30638e; } - .nav-pills .nav-link { - border-radius: var(--bs-nav-pills-border-radius); } - .nav-pills .nav-link.active, - .nav-pills .show > .nav-link { - color: var(--bs-nav-pills-link-active-color); - background-color: var(--bs-nav-pills-link-active-bg); - background-image: var(--bs-gradient); } - -.nav-underline { - --bs-nav-underline-gap: 1rem; - --bs-nav-underline-border-width: 0.125rem; - --bs-nav-underline-link-active-color: var(--bs-emphasis-color); - gap: var(--bs-nav-underline-gap); } - .nav-underline .nav-link { - padding-right: 0; - padding-left: 0; - border-bottom: var(--bs-nav-underline-border-width) solid transparent; } - .nav-underline .nav-link:hover, .nav-underline .nav-link:focus { - border-bottom-color: currentcolor; } - .nav-underline .nav-link.active, - .nav-underline .show > .nav-link { - font-weight: 700; - color: var(--bs-nav-underline-link-active-color); - border-bottom-color: currentcolor; } - -.nav-fill > .nav-link, -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; } - -.nav-justified > .nav-link, -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; } - -.nav-fill .nav-item .nav-link, -.nav-justified .nav-item .nav-link { - width: 100%; } - -.tab-content > .tab-pane { - display: none; } - -.tab-content > .active { - display: block; } - -.navbar, .td-navbar { - --bs-navbar-padding-x: 0; - --bs-navbar-padding-y: 0.5rem; - --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); - --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); - --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); - --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); - --bs-navbar-brand-padding-y: 0.3125rem; - --bs-navbar-brand-margin-end: 1rem; - --bs-navbar-brand-font-size: 1.25rem; - --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); - --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); - --bs-navbar-nav-link-padding-x: 0.5rem; - --bs-navbar-toggler-padding-y: 0.25rem; - --bs-navbar-toggler-padding-x: 0.75rem; - --bs-navbar-toggler-font-size: 1.25rem; - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); - --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); - --bs-navbar-toggler-border-radius: var(--bs-border-radius); - --bs-navbar-toggler-focus-width: 0.25rem; - --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); - background-image: var(--bs-gradient); } - .navbar > .container, .td-navbar > .container, - .navbar > .container-fluid, - .td-navbar > .container-fluid, - .navbar > .container-sm, - .td-navbar > .container-sm, - .navbar > .container-md, - .td-navbar > .container-md, - .navbar > .container-lg, - .td-navbar > .container-lg, - .navbar > .container-xl, - .td-navbar > .container-xl, - .navbar > .container-xxl, - .td-navbar > .container-xxl { - display: flex; - flex-wrap: inherit; - align-items: center; - justify-content: space-between; } - -.navbar-brand { - padding-top: var(--bs-navbar-brand-padding-y); - padding-bottom: var(--bs-navbar-brand-padding-y); - margin-right: var(--bs-navbar-brand-margin-end); - font-size: var(--bs-navbar-brand-font-size); - color: var(--bs-navbar-brand-color); - text-decoration: none; - white-space: nowrap; } - .navbar-brand:hover, .navbar-brand:focus { - color: var(--bs-navbar-brand-hover-color); } - -.navbar-nav { - --bs-nav-link-padding-x: 0; - --bs-nav-link-padding-y: 0.5rem; - --bs-nav-link-font-weight: ; - --bs-nav-link-color: var(--bs-navbar-color); - --bs-nav-link-hover-color: var(--bs-navbar-hover-color); - --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link.active, .navbar-nav .nav-link.show { - color: var(--bs-navbar-active-color); } - .navbar-nav .dropdown-menu { - position: static; } - -.navbar-text { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-navbar-color); } - .navbar-text a, - .navbar-text a:hover, - .navbar-text a:focus { - color: var(--bs-navbar-active-color); } - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; } - -.navbar-toggler { - padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); - font-size: var(--bs-navbar-toggler-font-size); - line-height: 1; - color: var(--bs-navbar-color); - background-color: transparent; - border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); - border-radius: var(--bs-navbar-toggler-border-radius); - transition: var(--bs-navbar-toggler-transition); } - @media (prefers-reduced-motion: reduce) { - .navbar-toggler { - transition: none; } } - .navbar-toggler:hover { - text-decoration: none; } - .navbar-toggler:focus { - text-decoration: none; - outline: 0; - box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); } - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - background-image: var(--bs-navbar-toggler-icon-bg); - background-repeat: no-repeat; - background-position: center; - background-size: 100%; } - -.navbar-nav-scroll { - max-height: var(--bs-scroll-height, 75vh); - overflow-y: auto; } - -@media (min-width: 576px) { - .navbar-expand-sm { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-sm .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-sm .navbar-toggler { - display: none; } - .navbar-expand-sm .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-sm .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-sm .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 768px) { - .navbar-expand-md { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-md .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-md .navbar-toggler { - display: none; } - .navbar-expand-md .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-md .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-md .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 992px) { - .navbar-expand-lg { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-lg .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-lg .navbar-toggler { - display: none; } - .navbar-expand-lg .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-lg .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-lg .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-xl .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xl .navbar-toggler { - display: none; } - .navbar-expand-xl .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-xl .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-xl .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -@media (min-width: 1400px) { - .navbar-expand-xxl { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand-xxl .navbar-nav { - flex-direction: row; } - .navbar-expand-xxl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xxl .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand-xxl .navbar-nav-scroll { - overflow: visible; } - .navbar-expand-xxl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xxl .navbar-toggler { - display: none; } - .navbar-expand-xxl .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand-xxl .offcanvas .offcanvas-header { - display: none; } - .navbar-expand-xxl .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } } - -.navbar-expand, .td-navbar { - flex-wrap: nowrap; - justify-content: flex-start; } - .navbar-expand .navbar-nav, .td-navbar .navbar-nav { - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu, .td-navbar .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .nav-link, .td-navbar .navbar-nav .nav-link { - padding-right: var(--bs-navbar-nav-link-padding-x); - padding-left: var(--bs-navbar-nav-link-padding-x); } - .navbar-expand .navbar-nav-scroll, .td-navbar .navbar-nav-scroll { - overflow: visible; } - .navbar-expand .navbar-collapse, .td-navbar .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand .navbar-toggler, .td-navbar .navbar-toggler { - display: none; } - .navbar-expand .offcanvas, .td-navbar .offcanvas { - position: static; - z-index: auto; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: transparent !important; - border: 0 !important; - transform: none !important; - box-shadow: none; - transition: none; } - .navbar-expand .offcanvas .offcanvas-header, .td-navbar .offcanvas .offcanvas-header { - display: none; } - .navbar-expand .offcanvas .offcanvas-body, .td-navbar .offcanvas .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; } - -.navbar-dark, -.navbar[data-bs-theme="dark"], -[data-bs-theme="dark"].td-navbar { - --bs-navbar-color: rgba(255, 255, 255, 0.55); - --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); - --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); - --bs-navbar-active-color: #fff; - --bs-navbar-brand-color: #fff; - --bs-navbar-brand-hover-color: #fff; - --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } - -[data-bs-theme="dark"] .navbar-toggler-icon { - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } - -.card { - --bs-card-spacer-y: 1rem; - --bs-card-spacer-x: 1rem; - --bs-card-title-spacer-y: 0.5rem; - --bs-card-title-color: ; - --bs-card-subtitle-color: ; - --bs-card-border-width: var(--bs-border-width); - --bs-card-border-color: var(--bs-border-color-translucent); - --bs-card-border-radius: var(--bs-border-radius); - --bs-card-box-shadow: ; - --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); - --bs-card-cap-padding-y: 0.5rem; - --bs-card-cap-padding-x: 1rem; - --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); - --bs-card-cap-color: ; - --bs-card-height: ; - --bs-card-color: ; - --bs-card-bg: var(--bs-body-bg); - --bs-card-img-overlay-padding: 1rem; - --bs-card-group-margin: 0.75rem; - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - height: var(--bs-card-height); - color: var(--bs-body-color); - word-wrap: break-word; - background-color: var(--bs-card-bg); - background-clip: border-box; - border: var(--bs-card-border-width) solid var(--bs-card-border-color); - border-radius: var(--bs-card-border-radius); - box-shadow: var(--bs-card-box-shadow); } - .card > hr { - margin-right: 0; - margin-left: 0; } - .card > .list-group { - border-top: inherit; - border-bottom: inherit; } - .card > .list-group:first-child { - border-top-width: 0; - border-top-left-radius: var(--bs-card-inner-border-radius); - border-top-right-radius: var(--bs-card-inner-border-radius); } - .card > .list-group:last-child { - border-bottom-width: 0; - border-bottom-right-radius: var(--bs-card-inner-border-radius); - border-bottom-left-radius: var(--bs-card-inner-border-radius); } - .card > .card-header + .list-group, - .card > .list-group + .card-footer { - border-top: 0; } - -.card-body { - flex: 1 1 auto; - padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); - color: var(--bs-card-color); } - -.card-title { - margin-bottom: var(--bs-card-title-spacer-y); - color: var(--bs-card-title-color); } - -.card-subtitle { - margin-top: calc(-.5 * var(--bs-card-title-spacer-y)); - margin-bottom: 0; - color: var(--bs-card-subtitle-color); } - -.card-text:last-child { - margin-bottom: 0; } - -.card-link + .card-link { - margin-left: var(--bs-card-spacer-x); } - -.card-header { - padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); - margin-bottom: 0; - color: var(--bs-card-cap-color); - background-color: var(--bs-card-cap-bg); - border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); } - .card-header:first-child { - border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; } - -.card-footer { - padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); - color: var(--bs-card-cap-color); - background-color: var(--bs-card-cap-bg); - border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); } - .card-footer:last-child { - border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); } - -.card-header-tabs { - margin-right: calc(-.5 * var(--bs-card-cap-padding-x)); - margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); - margin-left: calc(-.5 * var(--bs-card-cap-padding-x)); - border-bottom: 0; } - .card-header-tabs .nav-link.active { - background-color: var(--bs-card-bg); - border-bottom-color: var(--bs-card-bg); } - -.card-header-pills { - margin-right: calc(-.5 * var(--bs-card-cap-padding-x)); - margin-left: calc(-.5 * var(--bs-card-cap-padding-x)); } - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: var(--bs-card-img-overlay-padding); - border-radius: var(--bs-card-inner-border-radius); } - -.card-img, -.card-img-top, -.card-img-bottom { - width: 100%; } - -.card-img, -.card-img-top { - border-top-left-radius: var(--bs-card-inner-border-radius); - border-top-right-radius: var(--bs-card-inner-border-radius); } - -.card-img, -.card-img-bottom { - border-bottom-right-radius: var(--bs-card-inner-border-radius); - border-bottom-left-radius: var(--bs-card-inner-border-radius); } - -.card-group > .card { - margin-bottom: var(--bs-card-group-margin); } - -@media (min-width: 576px) { - .card-group { - display: flex; - flex-flow: row wrap; } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; } } - -.accordion { - --bs-accordion-color: var(--bs-body-color); - --bs-accordion-bg: var(--bs-body-bg); - --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; - --bs-accordion-border-color: var(--bs-border-color); - --bs-accordion-border-width: var(--bs-border-width); - --bs-accordion-border-radius: var(--bs-border-radius); - --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); - --bs-accordion-btn-padding-x: 1.25rem; - --bs-accordion-btn-padding-y: 1rem; - --bs-accordion-btn-color: var(--bs-body-color); - --bs-accordion-btn-bg: var(--bs-accordion-bg); - --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); - --bs-accordion-btn-icon-width: 1.25rem; - --bs-accordion-btn-icon-transform: rotate(-180deg); - --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; - --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23132839' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); - --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); - --bs-accordion-body-padding-x: 1.25rem; - --bs-accordion-body-padding-y: 1rem; - --bs-accordion-active-color: var(--bs-primary-text-emphasis); - --bs-accordion-active-bg: var(--bs-primary-bg-subtle); } - -.accordion-button { - position: relative; - display: flex; - align-items: center; - width: 100%; - padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); - font-size: 1rem; - color: var(--bs-accordion-btn-color); - text-align: left; - background-color: var(--bs-accordion-btn-bg); - border: 0; - border-radius: 0; - overflow-anchor: none; - transition: var(--bs-accordion-transition); } - @media (prefers-reduced-motion: reduce) { - .accordion-button { - transition: none; } } - .accordion-button:not(.collapsed) { - color: var(--bs-accordion-active-color); - background-color: var(--bs-accordion-active-bg); - box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); } - .accordion-button:not(.collapsed)::after { - background-image: var(--bs-accordion-btn-active-icon); - transform: var(--bs-accordion-btn-icon-transform); } - .accordion-button::after { - flex-shrink: 0; - width: var(--bs-accordion-btn-icon-width); - height: var(--bs-accordion-btn-icon-width); - margin-left: auto; - content: ""; - background-image: var(--bs-accordion-btn-icon); - background-repeat: no-repeat; - background-size: var(--bs-accordion-btn-icon-width); - transition: var(--bs-accordion-btn-icon-transition); } - @media (prefers-reduced-motion: reduce) { - .accordion-button::after { - transition: none; } } - .accordion-button:hover { - z-index: 2; } - .accordion-button:focus { - z-index: 3; - outline: 0; - box-shadow: var(--bs-accordion-btn-focus-box-shadow); } - -.accordion-header { - margin-bottom: 0; } - -.accordion-item { - color: var(--bs-accordion-color); - background-color: var(--bs-accordion-bg); - border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); } - .accordion-item:first-of-type { - border-top-left-radius: var(--bs-accordion-border-radius); - border-top-right-radius: var(--bs-accordion-border-radius); } - .accordion-item:first-of-type > .accordion-header .accordion-button { - border-top-left-radius: var(--bs-accordion-inner-border-radius); - border-top-right-radius: var(--bs-accordion-inner-border-radius); } - .accordion-item:not(:first-of-type) { - border-top: 0; } - .accordion-item:last-of-type { - border-bottom-right-radius: var(--bs-accordion-border-radius); - border-bottom-left-radius: var(--bs-accordion-border-radius); } - .accordion-item:last-of-type > .accordion-header .accordion-button.collapsed { - border-bottom-right-radius: var(--bs-accordion-inner-border-radius); - border-bottom-left-radius: var(--bs-accordion-inner-border-radius); } - .accordion-item:last-of-type > .accordion-collapse { - border-bottom-right-radius: var(--bs-accordion-border-radius); - border-bottom-left-radius: var(--bs-accordion-border-radius); } - -.accordion-body { - padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); } - -.accordion-flush > .accordion-item { - border-right: 0; - border-left: 0; - border-radius: 0; } - .accordion-flush > .accordion-item:first-child { - border-top: 0; } - .accordion-flush > .accordion-item:last-child { - border-bottom: 0; } - .accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed { - border-radius: 0; } - .accordion-flush > .accordion-item > .accordion-collapse { - border-radius: 0; } - -[data-bs-theme="dark"] .accordion-button::after { - --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2383a1bb'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); - --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2383a1bb'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); } - -.breadcrumb { - --bs-breadcrumb-padding-x: 0; - --bs-breadcrumb-padding-y: 0; - --bs-breadcrumb-margin-bottom: 1rem; - --bs-breadcrumb-bg: ; - --bs-breadcrumb-border-radius: ; - --bs-breadcrumb-divider-color: var(--bs-secondary-color); - --bs-breadcrumb-item-padding-x: 0.5rem; - --bs-breadcrumb-item-active-color: var(--bs-secondary-color); - display: flex; - flex-wrap: wrap; - padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); - margin-bottom: var(--bs-breadcrumb-margin-bottom); - font-size: var(--bs-breadcrumb-font-size); - list-style: none; - background-color: var(--bs-breadcrumb-bg); - border-radius: var(--bs-breadcrumb-border-radius); } - -.breadcrumb-item + .breadcrumb-item { - padding-left: var(--bs-breadcrumb-item-padding-x); } - .breadcrumb-item + .breadcrumb-item::before { - float: left; - padding-right: var(--bs-breadcrumb-item-padding-x); - color: var(--bs-breadcrumb-divider-color); - content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; } - -.breadcrumb-item.active { - color: var(--bs-breadcrumb-item-active-color); } - -.pagination { - --bs-pagination-padding-x: 0.75rem; - --bs-pagination-padding-y: 0.375rem; - --bs-pagination-font-size: 1rem; - --bs-pagination-color: #6c757d; - --bs-pagination-bg: var(--bs-body-bg); - --bs-pagination-border-width: var(--bs-border-width); - --bs-pagination-border-color: var(--bs-border-color); - --bs-pagination-border-radius: var(--bs-border-radius); - --bs-pagination-hover-color: var(--bs-link-hover-color); - --bs-pagination-hover-bg: var(--bs-tertiary-bg); - --bs-pagination-hover-border-color: var(--bs-border-color); - --bs-pagination-focus-color: var(--bs-link-hover-color); - --bs-pagination-focus-bg: var(--bs-secondary-bg); - --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); - --bs-pagination-active-color: #fff; - --bs-pagination-active-bg: #30638e; - --bs-pagination-active-border-color: #30638e; - --bs-pagination-disabled-color: #dee2e6; - --bs-pagination-disabled-bg: var(--bs-secondary-bg); - --bs-pagination-disabled-border-color: var(--bs-border-color); - display: flex; - padding-left: 0; - list-style: none; } - -.page-link { - position: relative; - display: block; - padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); - font-size: var(--bs-pagination-font-size); - color: var(--bs-pagination-color); - text-decoration: none; - background-color: var(--bs-pagination-bg); - border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .page-link { - transition: none; } } - .page-link:hover { - z-index: 2; - color: var(--bs-pagination-hover-color); - background-color: var(--bs-pagination-hover-bg); - border-color: var(--bs-pagination-hover-border-color); } - .page-link:focus { - z-index: 3; - color: var(--bs-pagination-focus-color); - background-color: var(--bs-pagination-focus-bg); - outline: 0; - box-shadow: var(--bs-pagination-focus-box-shadow); } - .page-link.active, .active > .page-link { - z-index: 3; - color: var(--bs-pagination-active-color); - background-color: var(--bs-pagination-active-bg); - background-image: var(--bs-gradient); - border-color: var(--bs-pagination-active-border-color); } - .page-link.disabled, .disabled > .page-link { - color: var(--bs-pagination-disabled-color); - pointer-events: none; - background-color: var(--bs-pagination-disabled-bg); - border-color: var(--bs-pagination-disabled-border-color); } - -.page-item:not(:first-child) .page-link { - margin-left: calc(var(--bs-border-width) * -1); } - -.page-item:first-child .page-link { - border-top-left-radius: var(--bs-pagination-border-radius); - border-bottom-left-radius: var(--bs-pagination-border-radius); } - -.page-item:last-child .page-link { - border-top-right-radius: var(--bs-pagination-border-radius); - border-bottom-right-radius: var(--bs-pagination-border-radius); } - -.pagination-lg { - --bs-pagination-padding-x: 1.5rem; - --bs-pagination-padding-y: 0.75rem; - --bs-pagination-font-size: 1.25rem; - --bs-pagination-border-radius: var(--bs-border-radius-lg); } - -.pagination-sm { - --bs-pagination-padding-x: 0.5rem; - --bs-pagination-padding-y: 0.25rem; - --bs-pagination-font-size: 0.875rem; - --bs-pagination-border-radius: var(--bs-border-radius-sm); } - -.badge { - --bs-badge-padding-x: 0.65em; - --bs-badge-padding-y: 0.35em; - --bs-badge-font-size: 0.75em; - --bs-badge-font-weight: 700; - --bs-badge-color: #fff; - --bs-badge-border-radius: var(--bs-border-radius); - display: inline-block; - padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); - font-size: var(--bs-badge-font-size); - font-weight: var(--bs-badge-font-weight); - line-height: 1; - color: var(--bs-badge-color); - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: var(--bs-badge-border-radius); - background-image: var(--bs-gradient); } - .badge:empty { - display: none; } - -.btn .badge, div.drawio button .badge, .td-blog .td-rss-button .badge { - position: relative; - top: -1px; } - -.alert { - --bs-alert-bg: transparent; - --bs-alert-padding-x: 1rem; - --bs-alert-padding-y: 1rem; - --bs-alert-margin-bottom: 1rem; - --bs-alert-color: inherit; - --bs-alert-border-color: transparent; - --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); - --bs-alert-border-radius: var(--bs-border-radius); - --bs-alert-link-color: inherit; - position: relative; - padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); - margin-bottom: var(--bs-alert-margin-bottom); - color: var(--bs-alert-color); - background-color: var(--bs-alert-bg); - border: var(--bs-alert-border); - border-radius: var(--bs-alert-border-radius); } - -.alert-heading { - color: inherit; } - -.alert-link { - font-weight: 700; - color: var(--bs-alert-link-color); } - -.alert-dismissible { - padding-right: 3rem; } - .alert-dismissible .btn-close { - position: absolute; - top: 0; - right: 0; - z-index: 2; - padding: 1.25rem 1rem; } - -.alert-primary, .pageinfo-primary { - --bs-alert-color: var(--bs-primary-text-emphasis); - --bs-alert-bg: var(--bs-primary-bg-subtle); - --bs-alert-border-color: var(--bs-primary-border-subtle); - --bs-alert-link-color: var(--bs-primary-text-emphasis); } - -.alert-secondary, .pageinfo-secondary { - --bs-alert-color: var(--bs-secondary-text-emphasis); - --bs-alert-bg: var(--bs-secondary-bg-subtle); - --bs-alert-border-color: var(--bs-secondary-border-subtle); - --bs-alert-link-color: var(--bs-secondary-text-emphasis); } - -.alert-success, .pageinfo-success { - --bs-alert-color: var(--bs-success-text-emphasis); - --bs-alert-bg: var(--bs-success-bg-subtle); - --bs-alert-border-color: var(--bs-success-border-subtle); - --bs-alert-link-color: var(--bs-success-text-emphasis); } - -.alert-info, .pageinfo-info { - --bs-alert-color: var(--bs-info-text-emphasis); - --bs-alert-bg: var(--bs-info-bg-subtle); - --bs-alert-border-color: var(--bs-info-border-subtle); - --bs-alert-link-color: var(--bs-info-text-emphasis); } - -.alert-warning, .pageinfo-warning { - --bs-alert-color: var(--bs-warning-text-emphasis); - --bs-alert-bg: var(--bs-warning-bg-subtle); - --bs-alert-border-color: var(--bs-warning-border-subtle); - --bs-alert-link-color: var(--bs-warning-text-emphasis); } - -.alert-danger, .pageinfo-danger { - --bs-alert-color: var(--bs-danger-text-emphasis); - --bs-alert-bg: var(--bs-danger-bg-subtle); - --bs-alert-border-color: var(--bs-danger-border-subtle); - --bs-alert-link-color: var(--bs-danger-text-emphasis); } - -.alert-light, .pageinfo-light { - --bs-alert-color: var(--bs-light-text-emphasis); - --bs-alert-bg: var(--bs-light-bg-subtle); - --bs-alert-border-color: var(--bs-light-border-subtle); - --bs-alert-link-color: var(--bs-light-text-emphasis); } - -.alert-dark, .pageinfo-dark { - --bs-alert-color: var(--bs-dark-text-emphasis); - --bs-alert-bg: var(--bs-dark-bg-subtle); - --bs-alert-border-color: var(--bs-dark-border-subtle); - --bs-alert-link-color: var(--bs-dark-text-emphasis); } - -@keyframes progress-bar-stripes { - 0% { - background-position-x: 1rem; } } - -.progress, -.progress-stacked { - --bs-progress-height: 1rem; - --bs-progress-font-size: 0.75rem; - --bs-progress-bg: var(--bs-secondary-bg); - --bs-progress-border-radius: var(--bs-border-radius); - --bs-progress-box-shadow: var(--bs-box-shadow-inset); - --bs-progress-bar-color: #fff; - --bs-progress-bar-bg: #30638e; - --bs-progress-bar-transition: width 0.6s ease; - display: flex; - height: var(--bs-progress-height); - overflow: hidden; - font-size: var(--bs-progress-font-size); - background-color: var(--bs-progress-bg); - border-radius: var(--bs-progress-border-radius); - box-shadow: var(--bs-progress-box-shadow); } - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - overflow: hidden; - color: var(--bs-progress-bar-color); - text-align: center; - white-space: nowrap; - background-color: var(--bs-progress-bar-bg); - transition: var(--bs-progress-bar-transition); } - @media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; } } -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: var(--bs-progress-height) var(--bs-progress-height); } - -.progress-stacked > .progress { - overflow: visible; } - -.progress-stacked > .progress > .progress-bar { - width: 100%; } - -.progress-bar-animated { - animation: 1s linear infinite progress-bar-stripes; } - @media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; } } -.list-group { - --bs-list-group-color: var(--bs-body-color); - --bs-list-group-bg: var(--bs-body-bg); - --bs-list-group-border-color: var(--bs-border-color); - --bs-list-group-border-width: var(--bs-border-width); - --bs-list-group-border-radius: var(--bs-border-radius); - --bs-list-group-item-padding-x: 1rem; - --bs-list-group-item-padding-y: 0.5rem; - --bs-list-group-action-color: var(--bs-secondary-color); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); - --bs-list-group-action-active-color: var(--bs-body-color); - --bs-list-group-action-active-bg: var(--bs-secondary-bg); - --bs-list-group-disabled-color: var(--bs-secondary-color); - --bs-list-group-disabled-bg: var(--bs-body-bg); - --bs-list-group-active-color: #fff; - --bs-list-group-active-bg: #30638e; - --bs-list-group-active-border-color: #30638e; - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - border-radius: var(--bs-list-group-border-radius); } - -.list-group-numbered { - list-style-type: none; - counter-reset: section; } - .list-group-numbered > .list-group-item::before { - content: counters(section, ".") ". "; - counter-increment: section; } - -.list-group-item-action { - width: 100%; - color: var(--bs-list-group-action-color); - text-align: inherit; } - .list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: var(--bs-list-group-action-hover-color); - text-decoration: none; - background-color: var(--bs-list-group-action-hover-bg); } - .list-group-item-action:active { - color: var(--bs-list-group-action-active-color); - background-color: var(--bs-list-group-action-active-bg); } - -.list-group-item { - position: relative; - display: block; - padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); - color: var(--bs-list-group-color); - text-decoration: none; - background-color: var(--bs-list-group-bg); - border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); } - .list-group-item:first-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit; } - .list-group-item:last-child { - border-bottom-right-radius: inherit; - border-bottom-left-radius: inherit; } - .list-group-item.disabled, .list-group-item:disabled { - color: var(--bs-list-group-disabled-color); - pointer-events: none; - background-color: var(--bs-list-group-disabled-bg); } - .list-group-item.active { - z-index: 2; - color: var(--bs-list-group-active-color); - background-color: var(--bs-list-group-active-bg); - border-color: var(--bs-list-group-active-border-color); } - .list-group-item + .list-group-item { - border-top-width: 0; } - .list-group-item + .list-group-item.active { - margin-top: calc(-1 * var(--bs-list-group-border-width)); - border-top-width: var(--bs-list-group-border-width); } - -.list-group-horizontal { - flex-direction: row; } - .list-group-horizontal > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; } - .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-sm > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-sm > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-sm > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; } - .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-md > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-md > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-md > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; } - .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-lg > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-lg > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-lg > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; } - .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-xl > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-xl > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-xl > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -@media (min-width: 1400px) { - .list-group-horizontal-xxl { - flex-direction: row; } - .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { - border-bottom-left-radius: var(--bs-list-group-border-radius); - border-top-right-radius: 0; } - .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { - border-top-right-radius: var(--bs-list-group-border-radius); - border-bottom-left-radius: 0; } - .list-group-horizontal-xxl > .list-group-item.active { - margin-top: 0; } - .list-group-horizontal-xxl > .list-group-item + .list-group-item { - border-top-width: var(--bs-list-group-border-width); - border-left-width: 0; } - .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { - margin-left: calc(-1 * var(--bs-list-group-border-width)); - border-left-width: var(--bs-list-group-border-width); } } - -.list-group-flush { - border-radius: 0; } - .list-group-flush > .list-group-item { - border-width: 0 0 var(--bs-list-group-border-width); } - .list-group-flush > .list-group-item:last-child { - border-bottom-width: 0; } - -.list-group-item-primary { - --bs-list-group-color: var(--bs-primary-text-emphasis); - --bs-list-group-bg: var(--bs-primary-bg-subtle); - --bs-list-group-border-color: var(--bs-primary-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); - --bs-list-group-active-color: var(--bs-primary-bg-subtle); - --bs-list-group-active-bg: var(--bs-primary-text-emphasis); - --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); } - -.list-group-item-secondary { - --bs-list-group-color: var(--bs-secondary-text-emphasis); - --bs-list-group-bg: var(--bs-secondary-bg-subtle); - --bs-list-group-border-color: var(--bs-secondary-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); - --bs-list-group-active-color: var(--bs-secondary-bg-subtle); - --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); - --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); } - -.list-group-item-success { - --bs-list-group-color: var(--bs-success-text-emphasis); - --bs-list-group-bg: var(--bs-success-bg-subtle); - --bs-list-group-border-color: var(--bs-success-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-success-border-subtle); - --bs-list-group-active-color: var(--bs-success-bg-subtle); - --bs-list-group-active-bg: var(--bs-success-text-emphasis); - --bs-list-group-active-border-color: var(--bs-success-text-emphasis); } - -.list-group-item-info { - --bs-list-group-color: var(--bs-info-text-emphasis); - --bs-list-group-bg: var(--bs-info-bg-subtle); - --bs-list-group-border-color: var(--bs-info-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-info-border-subtle); - --bs-list-group-active-color: var(--bs-info-bg-subtle); - --bs-list-group-active-bg: var(--bs-info-text-emphasis); - --bs-list-group-active-border-color: var(--bs-info-text-emphasis); } - -.list-group-item-warning { - --bs-list-group-color: var(--bs-warning-text-emphasis); - --bs-list-group-bg: var(--bs-warning-bg-subtle); - --bs-list-group-border-color: var(--bs-warning-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); - --bs-list-group-active-color: var(--bs-warning-bg-subtle); - --bs-list-group-active-bg: var(--bs-warning-text-emphasis); - --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); } - -.list-group-item-danger { - --bs-list-group-color: var(--bs-danger-text-emphasis); - --bs-list-group-bg: var(--bs-danger-bg-subtle); - --bs-list-group-border-color: var(--bs-danger-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); - --bs-list-group-active-color: var(--bs-danger-bg-subtle); - --bs-list-group-active-bg: var(--bs-danger-text-emphasis); - --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); } - -.list-group-item-light { - --bs-list-group-color: var(--bs-light-text-emphasis); - --bs-list-group-bg: var(--bs-light-bg-subtle); - --bs-list-group-border-color: var(--bs-light-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-light-border-subtle); - --bs-list-group-active-color: var(--bs-light-bg-subtle); - --bs-list-group-active-bg: var(--bs-light-text-emphasis); - --bs-list-group-active-border-color: var(--bs-light-text-emphasis); } - -.list-group-item-dark { - --bs-list-group-color: var(--bs-dark-text-emphasis); - --bs-list-group-bg: var(--bs-dark-bg-subtle); - --bs-list-group-border-color: var(--bs-dark-border-subtle); - --bs-list-group-action-hover-color: var(--bs-emphasis-color); - --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); - --bs-list-group-action-active-color: var(--bs-emphasis-color); - --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); - --bs-list-group-active-color: var(--bs-dark-bg-subtle); - --bs-list-group-active-bg: var(--bs-dark-text-emphasis); - --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); } - -.btn-close { - --bs-btn-close-color: #000; - --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); - --bs-btn-close-opacity: 0.5; - --bs-btn-close-hover-opacity: 0.75; - --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(48, 99, 142, 0.25); - --bs-btn-close-focus-opacity: 1; - --bs-btn-close-disabled-opacity: 0.25; - --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); - box-sizing: content-box; - width: 1em; - height: 1em; - padding: 0.25em 0.25em; - color: var(--bs-btn-close-color); - background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; - border: 0; - border-radius: 0.375rem; - opacity: var(--bs-btn-close-opacity); } - .btn-close:hover { - color: var(--bs-btn-close-color); - text-decoration: none; - opacity: var(--bs-btn-close-hover-opacity); } - .btn-close:focus { - outline: 0; - box-shadow: var(--bs-btn-close-focus-shadow); - opacity: var(--bs-btn-close-focus-opacity); } - .btn-close:disabled, .btn-close.disabled { - pointer-events: none; - user-select: none; - opacity: var(--bs-btn-close-disabled-opacity); } - -.btn-close-white { - filter: var(--bs-btn-close-white-filter); } - -[data-bs-theme="dark"] .btn-close { - filter: var(--bs-btn-close-white-filter); } - -.toast { - --bs-toast-zindex: 1090; - --bs-toast-padding-x: 0.75rem; - --bs-toast-padding-y: 0.5rem; - --bs-toast-spacing: 1.5rem; - --bs-toast-max-width: 350px; - --bs-toast-font-size: 0.875rem; - --bs-toast-color: ; - --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); - --bs-toast-border-width: var(--bs-border-width); - --bs-toast-border-color: var(--bs-border-color-translucent); - --bs-toast-border-radius: var(--bs-border-radius); - --bs-toast-box-shadow: var(--bs-box-shadow); - --bs-toast-header-color: var(--bs-secondary-color); - --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); - --bs-toast-header-border-color: var(--bs-border-color-translucent); - width: var(--bs-toast-max-width); - max-width: 100%; - font-size: var(--bs-toast-font-size); - color: var(--bs-toast-color); - pointer-events: auto; - background-color: var(--bs-toast-bg); - background-clip: padding-box; - border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); - box-shadow: var(--bs-toast-box-shadow); - border-radius: var(--bs-toast-border-radius); } - .toast.showing { - opacity: 0; } - .toast:not(.show) { - display: none; } - -.toast-container { - --bs-toast-zindex: 1090; - position: absolute; - z-index: var(--bs-toast-zindex); - width: max-content; - max-width: 100%; - pointer-events: none; } - .toast-container > :not(:last-child) { - margin-bottom: var(--bs-toast-spacing); } - -.toast-header { - display: flex; - align-items: center; - padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); - color: var(--bs-toast-header-color); - background-color: var(--bs-toast-header-bg); - background-clip: padding-box; - border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); - border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); - border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); } - .toast-header .btn-close { - margin-right: calc(-.5 * var(--bs-toast-padding-x)); - margin-left: var(--bs-toast-padding-x); } - -.toast-body { - padding: var(--bs-toast-padding-x); - word-wrap: break-word; } - -.modal { - --bs-modal-zindex: 1055; - --bs-modal-width: 500px; - --bs-modal-padding: 1rem; - --bs-modal-margin: 0.5rem; - --bs-modal-color: ; - --bs-modal-bg: var(--bs-body-bg); - --bs-modal-border-color: var(--bs-border-color-translucent); - --bs-modal-border-width: var(--bs-border-width); - --bs-modal-border-radius: var(--bs-border-radius-lg); - --bs-modal-box-shadow: var(--bs-box-shadow-sm); - --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width))); - --bs-modal-header-padding-x: 1rem; - --bs-modal-header-padding-y: 1rem; - --bs-modal-header-padding: 1rem 1rem; - --bs-modal-header-border-color: var(--bs-border-color); - --bs-modal-header-border-width: var(--bs-border-width); - --bs-modal-title-line-height: 1.5; - --bs-modal-footer-gap: 0.5rem; - --bs-modal-footer-bg: ; - --bs-modal-footer-border-color: var(--bs-border-color); - --bs-modal-footer-border-width: var(--bs-border-width); - position: fixed; - top: 0; - left: 0; - z-index: var(--bs-modal-zindex); - display: none; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - outline: 0; } - -.modal-dialog { - position: relative; - width: auto; - margin: var(--bs-modal-margin); - pointer-events: none; } - .modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); } - @media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; } } - .modal.show .modal-dialog { - transform: none; } - .modal.modal-static .modal-dialog { - transform: scale(1.02); } - -.modal-dialog-scrollable { - height: calc(100% - var(--bs-modal-margin) * 2); } - .modal-dialog-scrollable .modal-content { - max-height: 100%; - overflow: hidden; } - .modal-dialog-scrollable .modal-body { - overflow-y: auto; } - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - var(--bs-modal-margin) * 2); } - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - color: var(--bs-modal-color); - pointer-events: auto; - background-color: var(--bs-modal-bg); - background-clip: padding-box; - border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); - border-radius: var(--bs-modal-border-radius); - box-shadow: var(--bs-modal-box-shadow); - outline: 0; } - -.modal-backdrop { - --bs-backdrop-zindex: 1050; - --bs-backdrop-bg: #000; - --bs-backdrop-opacity: 0.5; - position: fixed; - top: 0; - left: 0; - z-index: var(--bs-backdrop-zindex); - width: 100vw; - height: 100vh; - background-color: var(--bs-backdrop-bg); } - .modal-backdrop.fade { - opacity: 0; } - .modal-backdrop.show { - opacity: var(--bs-backdrop-opacity); } - -.modal-header { - display: flex; - flex-shrink: 0; - align-items: center; - padding: var(--bs-modal-header-padding); - border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); - border-top-left-radius: var(--bs-modal-inner-border-radius); - border-top-right-radius: var(--bs-modal-inner-border-radius); } - .modal-header .btn-close { - padding: calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5); - margin: calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto; } - -.modal-title { - margin-bottom: 0; - line-height: var(--bs-modal-title-line-height); } - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: var(--bs-modal-padding); } - -.modal-footer { - display: flex; - flex-shrink: 0; - flex-wrap: wrap; - align-items: center; - justify-content: flex-end; - padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5); - background-color: var(--bs-modal-footer-bg); - border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); - border-bottom-right-radius: var(--bs-modal-inner-border-radius); - border-bottom-left-radius: var(--bs-modal-inner-border-radius); } - .modal-footer > * { - margin: calc(var(--bs-modal-footer-gap) * .5); } - -@media (min-width: 576px) { - .modal { - --bs-modal-margin: 1.75rem; - --bs-modal-box-shadow: var(--bs-box-shadow); } - .modal-dialog { - max-width: var(--bs-modal-width); - margin-right: auto; - margin-left: auto; } - .modal-sm { - --bs-modal-width: 300px; } } - -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - --bs-modal-width: 800px; } } - -@media (min-width: 1200px) { - .modal-xl { - --bs-modal-width: 1140px; } } - -.modal-fullscreen { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen .modal-header, - .modal-fullscreen .modal-footer { - border-radius: 0; } - .modal-fullscreen .modal-body { - overflow-y: auto; } - -@media (max-width: 575.98px) { - .modal-fullscreen-sm-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-sm-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-sm-down .modal-header, - .modal-fullscreen-sm-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-sm-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 767.98px) { - .modal-fullscreen-md-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-md-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-md-down .modal-header, - .modal-fullscreen-md-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-md-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 991.98px) { - .modal-fullscreen-lg-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-lg-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-lg-down .modal-header, - .modal-fullscreen-lg-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-lg-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 1199.98px) { - .modal-fullscreen-xl-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-xl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-xl-down .modal-header, - .modal-fullscreen-xl-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-xl-down .modal-body { - overflow-y: auto; } } - -@media (max-width: 1399.98px) { - .modal-fullscreen-xxl-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; } - .modal-fullscreen-xxl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; } - .modal-fullscreen-xxl-down .modal-header, - .modal-fullscreen-xxl-down .modal-footer { - border-radius: 0; } - .modal-fullscreen-xxl-down .modal-body { - overflow-y: auto; } } - -.tooltip { - --bs-tooltip-zindex: 1080; - --bs-tooltip-max-width: 200px; - --bs-tooltip-padding-x: 0.5rem; - --bs-tooltip-padding-y: 0.25rem; - --bs-tooltip-margin: ; - --bs-tooltip-font-size: 0.875rem; - --bs-tooltip-color: var(--bs-body-bg); - --bs-tooltip-bg: var(--bs-emphasis-color); - --bs-tooltip-border-radius: var(--bs-border-radius); - --bs-tooltip-opacity: 0.9; - --bs-tooltip-arrow-width: 0.8rem; - --bs-tooltip-arrow-height: 0.4rem; - z-index: var(--bs-tooltip-zindex); - display: block; - margin: var(--bs-tooltip-margin); - font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - white-space: normal; - word-spacing: normal; - line-break: auto; - font-size: var(--bs-tooltip-font-size); - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: var(--bs-tooltip-opacity); } - .tooltip .tooltip-arrow { - display: block; - width: var(--bs-tooltip-arrow-width); - height: var(--bs-tooltip-arrow-height); } - .tooltip .tooltip-arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow { - bottom: calc(-1 * var(--bs-tooltip-arrow-height)); } - .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before { - top: -1px; - border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0; - border-top-color: var(--bs-tooltip-bg); } - -/* rtl:begin:ignore */ -.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow { - left: calc(-1 * var(--bs-tooltip-arrow-height)); - width: var(--bs-tooltip-arrow-height); - height: var(--bs-tooltip-arrow-width); } - .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before { - right: -1px; - border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0; - border-right-color: var(--bs-tooltip-bg); } - -/* rtl:end:ignore */ -.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow { - top: calc(-1 * var(--bs-tooltip-arrow-height)); } - .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before { - bottom: -1px; - border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height); - border-bottom-color: var(--bs-tooltip-bg); } - -/* rtl:begin:ignore */ -.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow { - right: calc(-1 * var(--bs-tooltip-arrow-height)); - width: var(--bs-tooltip-arrow-height); - height: var(--bs-tooltip-arrow-width); } - .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before { - left: -1px; - border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height); - border-left-color: var(--bs-tooltip-bg); } - -/* rtl:end:ignore */ -.tooltip-inner { - max-width: var(--bs-tooltip-max-width); - padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); - color: var(--bs-tooltip-color); - text-align: center; - background-color: var(--bs-tooltip-bg); - border-radius: var(--bs-tooltip-border-radius); } - -.popover { - --bs-popover-zindex: 1070; - --bs-popover-max-width: 276px; - --bs-popover-font-size: 0.875rem; - --bs-popover-bg: var(--bs-body-bg); - --bs-popover-border-width: var(--bs-border-width); - --bs-popover-border-color: var(--bs-border-color-translucent); - --bs-popover-border-radius: var(--bs-border-radius-lg); - --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width)); - --bs-popover-box-shadow: var(--bs-box-shadow); - --bs-popover-header-padding-x: 1rem; - --bs-popover-header-padding-y: 0.5rem; - --bs-popover-header-font-size: 1rem; - --bs-popover-header-color: inherit; - --bs-popover-header-bg: var(--bs-secondary-bg); - --bs-popover-body-padding-x: 1rem; - --bs-popover-body-padding-y: 1rem; - --bs-popover-body-color: var(--bs-body-color); - --bs-popover-arrow-width: 1rem; - --bs-popover-arrow-height: 0.5rem; - --bs-popover-arrow-border: var(--bs-popover-border-color); - z-index: var(--bs-popover-zindex); - display: block; - max-width: var(--bs-popover-max-width); - font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - white-space: normal; - word-spacing: normal; - line-break: auto; - font-size: var(--bs-popover-font-size); - word-wrap: break-word; - background-color: var(--bs-popover-bg); - background-clip: padding-box; - border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); - border-radius: var(--bs-popover-border-radius); - box-shadow: var(--bs-popover-box-shadow); } - .popover .popover-arrow { - display: block; - width: var(--bs-popover-arrow-width); - height: var(--bs-popover-arrow-height); } - .popover .popover-arrow::before, .popover .popover-arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; - border-width: 0; } - -.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow { - bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); } - .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after { - border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0; } - .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before { - bottom: 0; - border-top-color: var(--bs-popover-arrow-border); } - .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after { - bottom: var(--bs-popover-border-width); - border-top-color: var(--bs-popover-bg); } - -/* rtl:begin:ignore */ -.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow { - left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); - width: var(--bs-popover-arrow-height); - height: var(--bs-popover-arrow-width); } - .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after { - border-width: calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0; } - .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before { - left: 0; - border-right-color: var(--bs-popover-arrow-border); } - .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after { - left: var(--bs-popover-border-width); - border-right-color: var(--bs-popover-bg); } - -/* rtl:end:ignore */ -.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow { - top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); } - .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after { - border-width: 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height); } - .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before { - top: 0; - border-bottom-color: var(--bs-popover-arrow-border); } - .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after { - top: var(--bs-popover-border-width); - border-bottom-color: var(--bs-popover-bg); } - -.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: var(--bs-popover-arrow-width); - margin-left: calc(-.5 * var(--bs-popover-arrow-width)); - content: ""; - border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); } - -/* rtl:begin:ignore */ -.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow { - right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); - width: var(--bs-popover-arrow-height); - height: var(--bs-popover-arrow-width); } - .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after { - border-width: calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height); } - .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before { - right: 0; - border-left-color: var(--bs-popover-arrow-border); } - .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after { - right: var(--bs-popover-border-width); - border-left-color: var(--bs-popover-bg); } - -/* rtl:end:ignore */ -.popover-header { - padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); - margin-bottom: 0; - font-size: var(--bs-popover-header-font-size); - color: var(--bs-popover-header-color); - background-color: var(--bs-popover-header-bg); - border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); - border-top-left-radius: var(--bs-popover-inner-border-radius); - border-top-right-radius: var(--bs-popover-inner-border-radius); } - .popover-header:empty { - display: none; } - -.popover-body { - padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); - color: var(--bs-popover-body-color); } - -.carousel { - position: relative; } - -.carousel.pointer-event { - touch-action: pan-y; } - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; } - .carousel-inner::after { - display: block; - clear: both; - content: ""; } - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; } } -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; } - -.carousel-item-next:not(.carousel-item-start), -.active.carousel-item-end { - transform: translateX(100%); } - -.carousel-item-prev:not(.carousel-item-end), -.active.carousel-item-start { - transform: translateX(-100%); } - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; } - -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-start, -.carousel-fade .carousel-item-prev.carousel-item-end { - z-index: 1; - opacity: 1; } - -.carousel-fade .active.carousel-item-start, -.carousel-fade .active.carousel-item-end { - z-index: 0; - opacity: 0; - transition: opacity 0s 0.6s; } - @media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-start, - .carousel-fade .active.carousel-item-end { - transition: none; } } -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - padding: 0; - color: #fff; - text-align: center; - background: none; - border: 0; - opacity: 0.5; - transition: opacity 0.15s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; } } - .carousel-control-prev:hover, .carousel-control-prev:focus, - .carousel-control-next:hover, - .carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; } - -.carousel-control-prev { - left: 0; - background-image: linear-gradient(90deg, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.001)); } - -.carousel-control-next { - right: 0; - background-image: linear-gradient(270deg, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.001)); } - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 2rem; - height: 2rem; - background-repeat: no-repeat; - background-position: 50%; - background-size: 100% 100%; } - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")*/; } - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")*/; } - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 2; - display: flex; - justify-content: center; - padding: 0; - margin-right: 15%; - margin-bottom: 1rem; - margin-left: 15%; } - .carousel-indicators [data-bs-target] { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - padding: 0; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border: 0; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: 0.5; - transition: opacity 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-indicators [data-bs-target] { - transition: none; } } - .carousel-indicators .active { - opacity: 1; } - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 1.25rem; - left: 15%; - padding-top: 1.25rem; - padding-bottom: 1.25rem; - color: #fff; - text-align: center; } - -.carousel-dark .carousel-control-prev-icon, -.carousel-dark .carousel-control-next-icon { - filter: invert(1) grayscale(100); } - -.carousel-dark .carousel-indicators [data-bs-target] { - background-color: #000; } - -.carousel-dark .carousel-caption { - color: #000; } - -[data-bs-theme="dark"] .carousel .carousel-control-prev-icon, -[data-bs-theme="dark"] .carousel .carousel-control-next-icon, [data-bs-theme="dark"].carousel .carousel-control-prev-icon, -[data-bs-theme="dark"].carousel .carousel-control-next-icon { - filter: invert(1) grayscale(100); } - -[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target], [data-bs-theme="dark"].carousel .carousel-indicators [data-bs-target] { - background-color: #000; } - -[data-bs-theme="dark"] .carousel .carousel-caption, [data-bs-theme="dark"].carousel .carousel-caption { - color: #000; } - -.spinner-grow, -.spinner-border { - display: inline-block; - width: var(--bs-spinner-width); - height: var(--bs-spinner-height); - vertical-align: var(--bs-spinner-vertical-align); - border-radius: 50%; - animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); } - -@keyframes spinner-border { - to { - transform: rotate(360deg) /* rtl:ignore */; } } - -.spinner-border { - --bs-spinner-width: 2rem; - --bs-spinner-height: 2rem; - --bs-spinner-vertical-align: -0.125em; - --bs-spinner-border-width: 0.25em; - --bs-spinner-animation-speed: 0.75s; - --bs-spinner-animation-name: spinner-border; - border: var(--bs-spinner-border-width) solid currentcolor; - border-right-color: transparent; } - -.spinner-border-sm { - --bs-spinner-width: 1rem; - --bs-spinner-height: 1rem; - --bs-spinner-border-width: 0.2em; } - -@keyframes spinner-grow { - 0% { - transform: scale(0); } - 50% { - opacity: 1; - transform: none; } } - -.spinner-grow { - --bs-spinner-width: 2rem; - --bs-spinner-height: 2rem; - --bs-spinner-vertical-align: -0.125em; - --bs-spinner-animation-speed: 0.75s; - --bs-spinner-animation-name: spinner-grow; - background-color: currentcolor; - opacity: 0; } - -.spinner-grow-sm { - --bs-spinner-width: 1rem; - --bs-spinner-height: 1rem; } - -@media (prefers-reduced-motion: reduce) { - .spinner-border, - .spinner-grow { - --bs-spinner-animation-speed: 1.5s; } } - -.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { - --bs-offcanvas-zindex: 1045; - --bs-offcanvas-width: 400px; - --bs-offcanvas-height: 30vh; - --bs-offcanvas-padding-x: 1rem; - --bs-offcanvas-padding-y: 1rem; - --bs-offcanvas-color: var(--bs-body-color); - --bs-offcanvas-bg: var(--bs-body-bg); - --bs-offcanvas-border-width: var(--bs-border-width); - --bs-offcanvas-border-color: var(--bs-border-color-translucent); - --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm); - --bs-offcanvas-transition: transform 0.3s ease-in-out; - --bs-offcanvas-title-line-height: 1.5; } - -@media (max-width: 575.98px) { - .offcanvas-sm { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-sm { - transition: none; } } -@media (max-width: 575.98px) { - .offcanvas-sm.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-sm.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-sm.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-sm.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { - transform: none; } - .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { - visibility: visible; } } - -@media (min-width: 576px) { - .offcanvas-sm { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-sm .offcanvas-header { - display: none; } - .offcanvas-sm .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 767.98px) { - .offcanvas-md { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-md { - transition: none; } } -@media (max-width: 767.98px) { - .offcanvas-md.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-md.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-md.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-md.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { - transform: none; } - .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { - visibility: visible; } } - -@media (min-width: 768px) { - .offcanvas-md { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-md .offcanvas-header { - display: none; } - .offcanvas-md .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 991.98px) { - .offcanvas-lg { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-lg { - transition: none; } } -@media (max-width: 991.98px) { - .offcanvas-lg.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-lg.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-lg.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-lg.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { - transform: none; } - .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { - visibility: visible; } } - -@media (min-width: 992px) { - .offcanvas-lg { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-lg .offcanvas-header { - display: none; } - .offcanvas-lg .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 1199.98px) { - .offcanvas-xl { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-xl { - transition: none; } } -@media (max-width: 1199.98px) { - .offcanvas-xl.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-xl.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-xl.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-xl.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { - transform: none; } - .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { - visibility: visible; } } - -@media (min-width: 1200px) { - .offcanvas-xl { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-xl .offcanvas-header { - display: none; } - .offcanvas-xl .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -@media (max-width: 1399.98px) { - .offcanvas-xxl { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } } - @media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { - .offcanvas-xxl { - transition: none; } } -@media (max-width: 1399.98px) { - .offcanvas-xxl.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas-xxl.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas-xxl.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas-xxl.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { - transform: none; } - .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { - visibility: visible; } } - -@media (min-width: 1400px) { - .offcanvas-xxl { - --bs-offcanvas-height: auto; - --bs-offcanvas-border-width: 0; - background-color: transparent !important; } - .offcanvas-xxl .offcanvas-header { - display: none; } - .offcanvas-xxl .offcanvas-body { - display: flex; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: transparent !important; } } - -.offcanvas { - position: fixed; - bottom: 0; - z-index: var(--bs-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--bs-offcanvas-color); - visibility: hidden; - background-color: var(--bs-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--bs-offcanvas-box-shadow); - transition: var(--bs-offcanvas-transition); } - @media (prefers-reduced-motion: reduce) { - .offcanvas { - transition: none; } } - .offcanvas.offcanvas-start { - top: 0; - left: 0; - width: var(--bs-offcanvas-width); - border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(-100%); } - .offcanvas.offcanvas-end { - top: 0; - right: 0; - width: var(--bs-offcanvas-width); - border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateX(100%); } - .offcanvas.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(-100%); } - .offcanvas.offcanvas-bottom { - right: 0; - left: 0; - height: var(--bs-offcanvas-height); - max-height: 100%; - border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); - transform: translateY(100%); } - .offcanvas.showing, .offcanvas.show:not(.hiding) { - transform: none; } - .offcanvas.showing, .offcanvas.hiding, .offcanvas.show { - visibility: visible; } - -.offcanvas-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; } - .offcanvas-backdrop.fade { - opacity: 0; } - .offcanvas-backdrop.show { - opacity: 0.5; } - -.offcanvas-header { - display: flex; - align-items: center; - padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); } - .offcanvas-header .btn-close { - padding: calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5); - margin: calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto; } - -.offcanvas-title { - margin-bottom: 0; - line-height: var(--bs-offcanvas-title-line-height); } - -.offcanvas-body { - flex-grow: 1; - padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); - overflow-y: auto; } - -.placeholder { - display: inline-block; - min-height: 1em; - vertical-align: middle; - cursor: wait; - background-color: currentcolor; - opacity: 0.5; } - .placeholder.btn::before, div.drawio button.placeholder::before, .td-blog .placeholder.td-rss-button::before { - display: inline-block; - content: ""; } - -.placeholder-xs { - min-height: .6em; } - -.placeholder-sm { - min-height: .8em; } - -.placeholder-lg { - min-height: 1.2em; } - -.placeholder-glow .placeholder { - animation: placeholder-glow 2s ease-in-out infinite; } - -@keyframes placeholder-glow { - 50% { - opacity: 0.2; } } - -.placeholder-wave { - mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); - mask-size: 200% 100%; - animation: placeholder-wave 2s linear infinite; } - -@keyframes placeholder-wave { - 100% { - mask-position: -200% 0%; } } - -.clearfix::after { - display: block; - clear: both; - content: ""; } - -.text-bg-primary { - color: #fff !important; - background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-secondary { - color: #000 !important; - background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-success { - color: #000 !important; - background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-info { - color: #000 !important; - background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-warning { - color: #000 !important; - background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-danger { - color: #000 !important; - background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-light { - color: #000 !important; - background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important; } - -.text-bg-dark { - color: #fff !important; - background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important; } - -.link-primary { - color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-primary:hover, .link-primary:focus { - color: RGBA(34, 69, 99, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(34, 69, 99, var(--bs-link-underline-opacity, 1)) !important; } - -.link-secondary { - color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-secondary:hover, .link-secondary:focus { - color: RGBA(255, 193, 110, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(255, 193, 110, var(--bs-link-underline-opacity, 1)) !important; } - -.link-success { - color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-success:hover, .link-success:focus { - color: RGBA(115, 156, 255, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(115, 156, 255, var(--bs-link-underline-opacity, 1)) !important; } - -.link-info { - color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-info:hover, .link-info:focus { - color: RGBA(211, 233, 232, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(211, 233, 232, var(--bs-link-underline-opacity, 1)) !important; } - -.link-warning { - color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-warning:hover, .link-warning:focus { - color: RGBA(242, 151, 140, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(242, 151, 140, var(--bs-link-underline-opacity, 1)) !important; } - -.link-danger { - color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-danger:hover, .link-danger:focus { - color: RGBA(242, 151, 140, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(242, 151, 140, var(--bs-link-underline-opacity, 1)) !important; } - -.link-light { - color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-light:hover, .link-light:focus { - color: RGBA(224, 247, 243, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(224, 247, 243, var(--bs-link-underline-opacity, 1)) !important; } - -.link-dark { - color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-dark:hover, .link-dark:focus { - color: RGBA(45, 44, 53, var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(45, 44, 53, var(--bs-link-underline-opacity, 1)) !important; } - -.link-body-emphasis { - color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important; - text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; } - .link-body-emphasis:hover, .link-body-emphasis:focus { - color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important; - text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; } - -.focus-ring:focus { - outline: 0; - box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color); } - -.icon-link { - display: inline-flex; - gap: 0.375rem; - align-items: center; - text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); - text-underline-offset: 0.25em; - backface-visibility: hidden; } - .icon-link > .bi { - flex-shrink: 0; - width: 1em; - height: 1em; - fill: currentcolor; - transition: 0.2s ease-in-out transform; } - @media (prefers-reduced-motion: reduce) { - .icon-link > .bi { - transition: none; } } -.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { - transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); } - -.ratio { - position: relative; - width: 100%; } - .ratio::before { - display: block; - padding-top: var(--bs-aspect-ratio); - content: ""; } - .ratio > * { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - -.ratio-1x1 { - --bs-aspect-ratio: 100%; } - -.ratio-4x3 { - --bs-aspect-ratio: calc(3 / 4 * 100%); } - -.ratio-16x9 { - --bs-aspect-ratio: calc(9 / 16 * 100%); } - -.ratio-21x9 { - --bs-aspect-ratio: calc(9 / 21 * 100%); } - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - -.sticky-top { - position: sticky; - top: 0; - z-index: 1020; } - -.sticky-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } - -@media (min-width: 576px) { - .sticky-sm-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-sm-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 768px) { - .sticky-md-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-md-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 992px) { - .sticky-lg-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-lg-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 1200px) { - .sticky-xl-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-xl-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -@media (min-width: 1400px) { - .sticky-xxl-top { - position: sticky; - top: 0; - z-index: 1020; } - .sticky-xxl-bottom { - position: sticky; - bottom: 0; - z-index: 1020; } } - -.hstack { - display: flex; - flex-direction: row; - align-items: center; - align-self: stretch; } - -.vstack { - display: flex; - flex: 1 1 auto; - flex-direction: column; - align-self: stretch; } - -.visually-hidden, -.visually-hidden-focusable:not(:focus):not(:focus-within) { - width: 1px !important; - height: 1px !important; - padding: 0 !important; - margin: -1px !important; - overflow: hidden !important; - clip: rect(0, 0, 0, 0) !important; - white-space: nowrap !important; - border: 0 !important; } - .visually-hidden:not(caption), - .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { - position: absolute !important; } - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - content: ""; } - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.vr { - display: inline-block; - align-self: stretch; - width: var(--bs-border-width); - min-height: 1em; - background-color: currentcolor; - opacity: 0.25; } - -.align-baseline { - vertical-align: baseline !important; } - -.align-top { - vertical-align: top !important; } - -.align-middle { - vertical-align: middle !important; } - -.align-bottom { - vertical-align: bottom !important; } - -.align-text-bottom { - vertical-align: text-bottom !important; } - -.align-text-top { - vertical-align: text-top !important; } - -.float-start { - float: left !important; } - -.float-end { - float: right !important; } - -.float-none { - float: none !important; } - -.object-fit-contain { - object-fit: contain !important; } - -.object-fit-cover { - object-fit: cover !important; } - -.object-fit-fill { - object-fit: fill !important; } - -.object-fit-scale { - object-fit: scale-down !important; } - -.object-fit-none { - object-fit: none !important; } - -.opacity-0 { - opacity: 0 !important; } - -.opacity-25 { - opacity: 0.25 !important; } - -.opacity-50 { - opacity: 0.5 !important; } - -.opacity-75 { - opacity: 0.75 !important; } - -.opacity-100 { - opacity: 1 !important; } - -.overflow-auto { - overflow: auto !important; } - -.overflow-hidden { - overflow: hidden !important; } - -.overflow-visible { - overflow: visible !important; } - -.overflow-scroll { - overflow: scroll !important; } - -.overflow-x-auto { - overflow-x: auto !important; } - -.overflow-x-hidden { - overflow-x: hidden !important; } - -.overflow-x-visible { - overflow-x: visible !important; } - -.overflow-x-scroll { - overflow-x: scroll !important; } - -.overflow-y-auto { - overflow-y: auto !important; } - -.overflow-y-hidden { - overflow-y: hidden !important; } - -.overflow-y-visible { - overflow-y: visible !important; } - -.overflow-y-scroll { - overflow-y: scroll !important; } - -.d-inline { - display: inline !important; } - -.d-inline-block { - display: inline-block !important; } - -.d-block { - display: block !important; } - -.d-grid { - display: grid !important; } - -.d-inline-grid { - display: inline-grid !important; } - -.d-table { - display: table !important; } - -.d-table-row { - display: table-row !important; } - -.d-table-cell { - display: table-cell !important; } - -.d-flex { - display: flex !important; } - -.d-inline-flex { - display: inline-flex !important; } - -.d-none { - display: none !important; } - -.shadow { - box-shadow: var(--bs-box-shadow) !important; } - -.shadow-sm { - box-shadow: var(--bs-box-shadow-sm) !important; } - -.shadow-lg { - box-shadow: var(--bs-box-shadow-lg) !important; } - -.shadow-none { - box-shadow: none !important; } - -.focus-ring-primary { - --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-secondary { - --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-success { - --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-info { - --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-warning { - --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-danger { - --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-light { - --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity)); } - -.focus-ring-dark { - --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); } - -.position-static { - position: static !important; } - -.position-relative { - position: relative !important; } - -.position-absolute { - position: absolute !important; } - -.position-fixed { - position: fixed !important; } - -.position-sticky { - position: sticky !important; } - -.top-0 { - top: 0 !important; } - -.top-50 { - top: 50% !important; } - -.top-100 { - top: 100% !important; } - -.bottom-0 { - bottom: 0 !important; } - -.bottom-50 { - bottom: 50% !important; } - -.bottom-100 { - bottom: 100% !important; } - -.start-0 { - left: 0 !important; } - -.start-50 { - left: 50% !important; } - -.start-100 { - left: 100% !important; } - -.end-0 { - right: 0 !important; } - -.end-50 { - right: 50% !important; } - -.end-100 { - right: 100% !important; } - -.translate-middle { - transform: translate(-50%, -50%) !important; } - -.translate-middle-x { - transform: translateX(-50%) !important; } - -.translate-middle-y { - transform: translateY(-50%) !important; } - -.border { - border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-0 { - border: 0 !important; } - -.border-top, .td-page-meta__lastmod { - border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-top-0 { - border-top: 0 !important; } - -.border-end { - border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-end-0 { - border-right: 0 !important; } - -.border-bottom { - border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-bottom-0 { - border-bottom: 0 !important; } - -.border-start { - border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } - -.border-start-0 { - border-left: 0 !important; } - -.border-primary { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; } - -.border-secondary { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; } - -.border-success { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; } - -.border-info { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; } - -.border-warning { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; } - -.border-danger { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; } - -.border-light { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; } - -.border-dark { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; } - -.border-black { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; } - -.border-white { - --bs-border-opacity: 1; - border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; } - -.border-primary-subtle { - border-color: var(--bs-primary-border-subtle) !important; } - -.border-secondary-subtle { - border-color: var(--bs-secondary-border-subtle) !important; } - -.border-success-subtle { - border-color: var(--bs-success-border-subtle) !important; } - -.border-info-subtle { - border-color: var(--bs-info-border-subtle) !important; } - -.border-warning-subtle { - border-color: var(--bs-warning-border-subtle) !important; } - -.border-danger-subtle { - border-color: var(--bs-danger-border-subtle) !important; } - -.border-light-subtle { - border-color: var(--bs-light-border-subtle) !important; } - -.border-dark-subtle { - border-color: var(--bs-dark-border-subtle) !important; } - -.border-1 { - border-width: 1px !important; } - -.border-2 { - border-width: 2px !important; } - -.border-3 { - border-width: 3px !important; } - -.border-4 { - border-width: 4px !important; } - -.border-5 { - border-width: 5px !important; } - -.border-opacity-10 { - --bs-border-opacity: 0.1; } - -.border-opacity-25 { - --bs-border-opacity: 0.25; } - -.border-opacity-50 { - --bs-border-opacity: 0.5; } - -.border-opacity-75 { - --bs-border-opacity: 0.75; } - -.border-opacity-100 { - --bs-border-opacity: 1; } - -.w-25 { - width: 25% !important; } - -.w-50 { - width: 50% !important; } - -.w-75 { - width: 75% !important; } - -.w-100 { - width: 100% !important; } - -.w-auto { - width: auto !important; } - -.mw-100 { - max-width: 100% !important; } - -.vw-100 { - width: 100vw !important; } - -.min-vw-100 { - min-width: 100vw !important; } - -.h-25 { - height: 25% !important; } - -.h-50 { - height: 50% !important; } - -.h-75 { - height: 75% !important; } - -.h-100 { - height: 100% !important; } - -.h-auto { - height: auto !important; } - -.mh-100 { - max-height: 100% !important; } - -.vh-100 { - height: 100vh !important; } - -.min-vh-100 { - min-height: 100vh !important; } - -.flex-fill { - flex: 1 1 auto !important; } - -.flex-row { - flex-direction: row !important; } - -.flex-column { - flex-direction: column !important; } - -.flex-row-reverse { - flex-direction: row-reverse !important; } - -.flex-column-reverse { - flex-direction: column-reverse !important; } - -.flex-grow-0 { - flex-grow: 0 !important; } - -.flex-grow-1 { - flex-grow: 1 !important; } - -.flex-shrink-0 { - flex-shrink: 0 !important; } - -.flex-shrink-1 { - flex-shrink: 1 !important; } - -.flex-wrap { - flex-wrap: wrap !important; } - -.flex-nowrap { - flex-wrap: nowrap !important; } - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; } - -.justify-content-start { - justify-content: flex-start !important; } - -.justify-content-end { - justify-content: flex-end !important; } - -.justify-content-center { - justify-content: center !important; } - -.justify-content-between { - justify-content: space-between !important; } - -.justify-content-around { - justify-content: space-around !important; } - -.justify-content-evenly { - justify-content: space-evenly !important; } - -.align-items-start { - align-items: flex-start !important; } - -.align-items-end { - align-items: flex-end !important; } - -.align-items-center { - align-items: center !important; } - -.align-items-baseline { - align-items: baseline !important; } - -.align-items-stretch { - align-items: stretch !important; } - -.align-content-start { - align-content: flex-start !important; } - -.align-content-end { - align-content: flex-end !important; } - -.align-content-center { - align-content: center !important; } - -.align-content-between { - align-content: space-between !important; } - -.align-content-around { - align-content: space-around !important; } - -.align-content-stretch { - align-content: stretch !important; } - -.align-self-auto { - align-self: auto !important; } - -.align-self-start { - align-self: flex-start !important; } - -.align-self-end { - align-self: flex-end !important; } - -.align-self-center { - align-self: center !important; } - -.align-self-baseline { - align-self: baseline !important; } - -.align-self-stretch { - align-self: stretch !important; } - -.order-first { - order: -1 !important; } - -.order-0 { - order: 0 !important; } - -.order-1 { - order: 1 !important; } - -.order-2 { - order: 2 !important; } - -.order-3 { - order: 3 !important; } - -.order-4 { - order: 4 !important; } - -.order-5 { - order: 5 !important; } - -.order-last { - order: 6 !important; } - -.m-0 { - margin: 0 !important; } - -.m-1 { - margin: 0.25rem !important; } - -.m-2 { - margin: 0.5rem !important; } - -.m-3 { - margin: 1rem !important; } - -.m-4 { - margin: 1.5rem !important; } - -.m-5 { - margin: 3rem !important; } - -.m-auto { - margin: auto !important; } - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; } - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - -.mt-0 { - margin-top: 0 !important; } - -.mt-1 { - margin-top: 0.25rem !important; } - -.mt-2 { - margin-top: 0.5rem !important; } - -.mt-3 { - margin-top: 1rem !important; } - -.mt-4 { - margin-top: 1.5rem !important; } - -.mt-5 { - margin-top: 3rem !important; } - -.mt-auto { - margin-top: auto !important; } - -.me-0 { - margin-right: 0 !important; } - -.me-1 { - margin-right: 0.25rem !important; } - -.me-2 { - margin-right: 0.5rem !important; } - -.me-3 { - margin-right: 1rem !important; } - -.me-4 { - margin-right: 1.5rem !important; } - -.me-5 { - margin-right: 3rem !important; } - -.me-auto { - margin-right: auto !important; } - -.mb-0 { - margin-bottom: 0 !important; } - -.mb-1 { - margin-bottom: 0.25rem !important; } - -.mb-2 { - margin-bottom: 0.5rem !important; } - -.mb-3 { - margin-bottom: 1rem !important; } - -.mb-4 { - margin-bottom: 1.5rem !important; } - -.mb-5 { - margin-bottom: 3rem !important; } - -.mb-auto { - margin-bottom: auto !important; } - -.ms-0 { - margin-left: 0 !important; } - -.ms-1 { - margin-left: 0.25rem !important; } - -.ms-2 { - margin-left: 0.5rem !important; } - -.ms-3 { - margin-left: 1rem !important; } - -.ms-4 { - margin-left: 1.5rem !important; } - -.ms-5 { - margin-left: 3rem !important; } - -.ms-auto { - margin-left: auto !important; } - -.p-0 { - padding: 0 !important; } - -.p-1 { - padding: 0.25rem !important; } - -.p-2 { - padding: 0.5rem !important; } - -.p-3 { - padding: 1rem !important; } - -.p-4 { - padding: 1.5rem !important; } - -.p-5 { - padding: 3rem !important; } - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - -.pt-0 { - padding-top: 0 !important; } - -.pt-1 { - padding-top: 0.25rem !important; } - -.pt-2 { - padding-top: 0.5rem !important; } - -.pt-3 { - padding-top: 1rem !important; } - -.pt-4 { - padding-top: 1.5rem !important; } - -.pt-5 { - padding-top: 3rem !important; } - -.pe-0 { - padding-right: 0 !important; } - -.pe-1 { - padding-right: 0.25rem !important; } - -.pe-2 { - padding-right: 0.5rem !important; } - -.pe-3 { - padding-right: 1rem !important; } - -.pe-4 { - padding-right: 1.5rem !important; } - -.pe-5 { - padding-right: 3rem !important; } - -.pb-0 { - padding-bottom: 0 !important; } - -.pb-1 { - padding-bottom: 0.25rem !important; } - -.pb-2 { - padding-bottom: 0.5rem !important; } - -.pb-3 { - padding-bottom: 1rem !important; } - -.pb-4 { - padding-bottom: 1.5rem !important; } - -.pb-5 { - padding-bottom: 3rem !important; } - -.ps-0 { - padding-left: 0 !important; } - -.ps-1 { - padding-left: 0.25rem !important; } - -.ps-2 { - padding-left: 0.5rem !important; } - -.ps-3 { - padding-left: 1rem !important; } - -.ps-4 { - padding-left: 1.5rem !important; } - -.ps-5 { - padding-left: 3rem !important; } - -.gap-0 { - gap: 0 !important; } - -.gap-1 { - gap: 0.25rem !important; } - -.gap-2 { - gap: 0.5rem !important; } - -.gap-3 { - gap: 1rem !important; } - -.gap-4 { - gap: 1.5rem !important; } - -.gap-5 { - gap: 3rem !important; } - -.row-gap-0 { - row-gap: 0 !important; } - -.row-gap-1 { - row-gap: 0.25rem !important; } - -.row-gap-2 { - row-gap: 0.5rem !important; } - -.row-gap-3 { - row-gap: 1rem !important; } - -.row-gap-4 { - row-gap: 1.5rem !important; } - -.row-gap-5 { - row-gap: 3rem !important; } - -.column-gap-0 { - column-gap: 0 !important; } - -.column-gap-1 { - column-gap: 0.25rem !important; } - -.column-gap-2 { - column-gap: 0.5rem !important; } - -.column-gap-3 { - column-gap: 1rem !important; } - -.column-gap-4 { - column-gap: 1.5rem !important; } - -.column-gap-5 { - column-gap: 3rem !important; } - -.font-monospace { - font-family: var(--bs-font-monospace) !important; } - -.fs-1 { - font-size: calc(1.375rem + 1.5vw) !important; } - -.fs-2 { - font-size: calc(1.325rem + 0.9vw) !important; } - -.fs-3 { - font-size: calc(1.275rem + 0.3vw) !important; } - -.fs-4 { - font-size: calc(1.26rem + 0.12vw) !important; } - -.fs-5 { - font-size: 1.15rem !important; } - -.fs-6 { - font-size: 1rem !important; } - -.fst-italic { - font-style: italic !important; } - -.fst-normal { - font-style: normal !important; } - -.fw-lighter { - font-weight: lighter !important; } - -.fw-light { - font-weight: 300 !important; } - -.fw-normal { - font-weight: 400 !important; } - -.fw-medium { - font-weight: 500 !important; } - -.fw-semibold { - font-weight: 600 !important; } - -.fw-bold { - font-weight: 700 !important; } - -.fw-bolder { - font-weight: bolder !important; } - -.lh-1 { - line-height: 1 !important; } - -.lh-sm { - line-height: 1.25 !important; } - -.lh-base { - line-height: 1.5 !important; } - -.lh-lg { - line-height: 2 !important; } - -.text-start { - text-align: left !important; } - -.text-end { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -.text-decoration-none { - text-decoration: none !important; } - -.text-decoration-underline { - text-decoration: underline !important; } - -.text-decoration-line-through { - text-decoration: line-through !important; } - -.text-lowercase { - text-transform: lowercase !important; } - -.text-uppercase { - text-transform: uppercase !important; } - -.text-capitalize { - text-transform: capitalize !important; } - -.text-wrap { - white-space: normal !important; } - -.text-nowrap { - white-space: nowrap !important; } - -/* rtl:begin:remove */ -.text-break { - word-wrap: break-word !important; - word-break: break-word !important; } - -/* rtl:end:remove */ -.text-primary { - --bs-text-opacity: 1; - color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; } - -.text-secondary { - --bs-text-opacity: 1; - color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; } - -.text-success { - --bs-text-opacity: 1; - color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; } - -.text-info { - --bs-text-opacity: 1; - color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; } - -.text-warning { - --bs-text-opacity: 1; - color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; } - -.text-danger { - --bs-text-opacity: 1; - color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; } - -.text-light { - --bs-text-opacity: 1; - color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; } - -.text-dark { - --bs-text-opacity: 1; - color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; } - -.text-black { - --bs-text-opacity: 1; - color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; } - -.text-white { - --bs-text-opacity: 1; - color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; } - -.text-body { - --bs-text-opacity: 1; - color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; } - -.text-muted { - --bs-text-opacity: 1; - color: var(--bs-secondary-color) !important; } - -.text-black-50 { - --bs-text-opacity: 1; - color: rgba(0, 0, 0, 0.5) !important; } - -.text-white-50 { - --bs-text-opacity: 1; - color: rgba(255, 255, 255, 0.5) !important; } - -.text-body-secondary, .td-page-meta__lastmod { - --bs-text-opacity: 1; - color: var(--bs-secondary-color) !important; } - -.text-body-tertiary { - --bs-text-opacity: 1; - color: var(--bs-tertiary-color) !important; } - -.text-body-emphasis { - --bs-text-opacity: 1; - color: var(--bs-emphasis-color) !important; } - -.text-reset { - --bs-text-opacity: 1; - color: inherit !important; } - -.text-opacity-25 { - --bs-text-opacity: 0.25; } - -.text-opacity-50 { - --bs-text-opacity: 0.5; } - -.text-opacity-75 { - --bs-text-opacity: 0.75; } - -.text-opacity-100 { - --bs-text-opacity: 1; } - -.text-primary-emphasis { - color: var(--bs-primary-text-emphasis) !important; } - -.text-secondary-emphasis { - color: var(--bs-secondary-text-emphasis) !important; } - -.text-success-emphasis { - color: var(--bs-success-text-emphasis) !important; } - -.text-info-emphasis { - color: var(--bs-info-text-emphasis) !important; } - -.text-warning-emphasis { - color: var(--bs-warning-text-emphasis) !important; } - -.text-danger-emphasis { - color: var(--bs-danger-text-emphasis) !important; } - -.text-light-emphasis { - color: var(--bs-light-text-emphasis) !important; } - -.text-dark-emphasis { - color: var(--bs-dark-text-emphasis) !important; } - -.link-opacity-10 { - --bs-link-opacity: 0.1; } - -.link-opacity-10-hover:hover { - --bs-link-opacity: 0.1; } - -.link-opacity-25 { - --bs-link-opacity: 0.25; } - -.link-opacity-25-hover:hover { - --bs-link-opacity: 0.25; } - -.link-opacity-50 { - --bs-link-opacity: 0.5; } - -.link-opacity-50-hover:hover { - --bs-link-opacity: 0.5; } - -.link-opacity-75 { - --bs-link-opacity: 0.75; } - -.link-opacity-75-hover:hover { - --bs-link-opacity: 0.75; } - -.link-opacity-100 { - --bs-link-opacity: 1; } - -.link-opacity-100-hover:hover { - --bs-link-opacity: 1; } - -.link-offset-1 { - text-underline-offset: 0.125em !important; } - -.link-offset-1-hover:hover { - text-underline-offset: 0.125em !important; } - -.link-offset-2 { - text-underline-offset: 0.25em !important; } - -.link-offset-2-hover:hover { - text-underline-offset: 0.25em !important; } - -.link-offset-3 { - text-underline-offset: 0.375em !important; } - -.link-offset-3-hover:hover { - text-underline-offset: 0.375em !important; } - -.link-underline-primary { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-secondary { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-success { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-info { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-warning { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-danger { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-light { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline-dark { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; } - -.link-underline { - --bs-link-underline-opacity: 1; - text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; } - -.link-underline-opacity-0 { - --bs-link-underline-opacity: 0; } - -.link-underline-opacity-0-hover:hover { - --bs-link-underline-opacity: 0; } - -.link-underline-opacity-10 { - --bs-link-underline-opacity: 0.1; } - -.link-underline-opacity-10-hover:hover { - --bs-link-underline-opacity: 0.1; } - -.link-underline-opacity-25 { - --bs-link-underline-opacity: 0.25; } - -.link-underline-opacity-25-hover:hover { - --bs-link-underline-opacity: 0.25; } - -.link-underline-opacity-50 { - --bs-link-underline-opacity: 0.5; } - -.link-underline-opacity-50-hover:hover { - --bs-link-underline-opacity: 0.5; } - -.link-underline-opacity-75 { - --bs-link-underline-opacity: 0.75; } - -.link-underline-opacity-75-hover:hover { - --bs-link-underline-opacity: 0.75; } - -.link-underline-opacity-100 { - --bs-link-underline-opacity: 1; } - -.link-underline-opacity-100-hover:hover { - --bs-link-underline-opacity: 1; } - -.bg-primary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; } - -.bg-secondary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; } - -.bg-success { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; } - -.bg-info { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; } - -.bg-warning { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; } - -.bg-danger { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; } - -.bg-light { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; } - -.bg-dark { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; } - -.bg-black { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; } - -.bg-white { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; } - -.bg-body { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; } - -.bg-transparent { - --bs-bg-opacity: 1; - background-color: transparent !important; } - -.bg-body-secondary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important; } - -.bg-body-tertiary { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; } - -.bg-opacity-10 { - --bs-bg-opacity: 0.1; } - -.bg-opacity-25 { - --bs-bg-opacity: 0.25; } - -.bg-opacity-50 { - --bs-bg-opacity: 0.5; } - -.bg-opacity-75 { - --bs-bg-opacity: 0.75; } - -.bg-opacity-100 { - --bs-bg-opacity: 1; } - -.bg-primary-subtle { - background-color: var(--bs-primary-bg-subtle) !important; } - -.bg-secondary-subtle { - background-color: var(--bs-secondary-bg-subtle) !important; } - -.bg-success-subtle { - background-color: var(--bs-success-bg-subtle) !important; } - -.bg-info-subtle { - background-color: var(--bs-info-bg-subtle) !important; } - -.bg-warning-subtle { - background-color: var(--bs-warning-bg-subtle) !important; } - -.bg-danger-subtle { - background-color: var(--bs-danger-bg-subtle) !important; } - -.bg-light-subtle { - background-color: var(--bs-light-bg-subtle) !important; } - -.bg-dark-subtle { - background-color: var(--bs-dark-bg-subtle) !important; } - -.bg-gradient { - background-image: var(--bs-gradient) !important; } - -.user-select-all { - user-select: all !important; } - -.user-select-auto { - user-select: auto !important; } - -.user-select-none { - user-select: none !important; } - -.pe-none { - pointer-events: none !important; } - -.pe-auto { - pointer-events: auto !important; } - -.rounded { - border-radius: var(--bs-border-radius) !important; } - -.rounded-0 { - border-radius: 0 !important; } - -.rounded-1 { - border-radius: var(--bs-border-radius-sm) !important; } - -.rounded-2 { - border-radius: var(--bs-border-radius) !important; } - -.rounded-3 { - border-radius: var(--bs-border-radius-lg) !important; } - -.rounded-4 { - border-radius: var(--bs-border-radius-xl) !important; } - -.rounded-5 { - border-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-circle { - border-radius: 50% !important; } - -.rounded-pill { - border-radius: var(--bs-border-radius-pill) !important; } - -.rounded-top { - border-top-left-radius: var(--bs-border-radius) !important; - border-top-right-radius: var(--bs-border-radius) !important; } - -.rounded-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; } - -.rounded-top-1 { - border-top-left-radius: var(--bs-border-radius-sm) !important; - border-top-right-radius: var(--bs-border-radius-sm) !important; } - -.rounded-top-2 { - border-top-left-radius: var(--bs-border-radius) !important; - border-top-right-radius: var(--bs-border-radius) !important; } - -.rounded-top-3 { - border-top-left-radius: var(--bs-border-radius-lg) !important; - border-top-right-radius: var(--bs-border-radius-lg) !important; } - -.rounded-top-4 { - border-top-left-radius: var(--bs-border-radius-xl) !important; - border-top-right-radius: var(--bs-border-radius-xl) !important; } - -.rounded-top-5 { - border-top-left-radius: var(--bs-border-radius-xxl) !important; - border-top-right-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-top-circle { - border-top-left-radius: 50% !important; - border-top-right-radius: 50% !important; } - -.rounded-top-pill { - border-top-left-radius: var(--bs-border-radius-pill) !important; - border-top-right-radius: var(--bs-border-radius-pill) !important; } - -.rounded-end { - border-top-right-radius: var(--bs-border-radius) !important; - border-bottom-right-radius: var(--bs-border-radius) !important; } - -.rounded-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; } - -.rounded-end-1 { - border-top-right-radius: var(--bs-border-radius-sm) !important; - border-bottom-right-radius: var(--bs-border-radius-sm) !important; } - -.rounded-end-2 { - border-top-right-radius: var(--bs-border-radius) !important; - border-bottom-right-radius: var(--bs-border-radius) !important; } - -.rounded-end-3 { - border-top-right-radius: var(--bs-border-radius-lg) !important; - border-bottom-right-radius: var(--bs-border-radius-lg) !important; } - -.rounded-end-4 { - border-top-right-radius: var(--bs-border-radius-xl) !important; - border-bottom-right-radius: var(--bs-border-radius-xl) !important; } - -.rounded-end-5 { - border-top-right-radius: var(--bs-border-radius-xxl) !important; - border-bottom-right-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-end-circle { - border-top-right-radius: 50% !important; - border-bottom-right-radius: 50% !important; } - -.rounded-end-pill { - border-top-right-radius: var(--bs-border-radius-pill) !important; - border-bottom-right-radius: var(--bs-border-radius-pill) !important; } - -.rounded-bottom { - border-bottom-right-radius: var(--bs-border-radius) !important; - border-bottom-left-radius: var(--bs-border-radius) !important; } - -.rounded-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; } - -.rounded-bottom-1 { - border-bottom-right-radius: var(--bs-border-radius-sm) !important; - border-bottom-left-radius: var(--bs-border-radius-sm) !important; } - -.rounded-bottom-2 { - border-bottom-right-radius: var(--bs-border-radius) !important; - border-bottom-left-radius: var(--bs-border-radius) !important; } - -.rounded-bottom-3 { - border-bottom-right-radius: var(--bs-border-radius-lg) !important; - border-bottom-left-radius: var(--bs-border-radius-lg) !important; } - -.rounded-bottom-4 { - border-bottom-right-radius: var(--bs-border-radius-xl) !important; - border-bottom-left-radius: var(--bs-border-radius-xl) !important; } - -.rounded-bottom-5 { - border-bottom-right-radius: var(--bs-border-radius-xxl) !important; - border-bottom-left-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-bottom-circle { - border-bottom-right-radius: 50% !important; - border-bottom-left-radius: 50% !important; } - -.rounded-bottom-pill { - border-bottom-right-radius: var(--bs-border-radius-pill) !important; - border-bottom-left-radius: var(--bs-border-radius-pill) !important; } - -.rounded-start { - border-bottom-left-radius: var(--bs-border-radius) !important; - border-top-left-radius: var(--bs-border-radius) !important; } - -.rounded-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; } - -.rounded-start-1 { - border-bottom-left-radius: var(--bs-border-radius-sm) !important; - border-top-left-radius: var(--bs-border-radius-sm) !important; } - -.rounded-start-2 { - border-bottom-left-radius: var(--bs-border-radius) !important; - border-top-left-radius: var(--bs-border-radius) !important; } - -.rounded-start-3 { - border-bottom-left-radius: var(--bs-border-radius-lg) !important; - border-top-left-radius: var(--bs-border-radius-lg) !important; } - -.rounded-start-4 { - border-bottom-left-radius: var(--bs-border-radius-xl) !important; - border-top-left-radius: var(--bs-border-radius-xl) !important; } - -.rounded-start-5 { - border-bottom-left-radius: var(--bs-border-radius-xxl) !important; - border-top-left-radius: var(--bs-border-radius-xxl) !important; } - -.rounded-start-circle { - border-bottom-left-radius: 50% !important; - border-top-left-radius: 50% !important; } - -.rounded-start-pill { - border-bottom-left-radius: var(--bs-border-radius-pill) !important; - border-top-left-radius: var(--bs-border-radius-pill) !important; } - -.visible { - visibility: visible !important; } - -.invisible { - visibility: hidden !important; } - -.z-n1 { - z-index: -1 !important; } - -.z-0 { - z-index: 0 !important; } - -.z-1 { - z-index: 1 !important; } - -.z-2 { - z-index: 2 !important; } - -.z-3 { - z-index: 3 !important; } - -@media (min-width: 576px) { - .float-sm-start { - float: left !important; } - .float-sm-end { - float: right !important; } - .float-sm-none { - float: none !important; } - .object-fit-sm-contain { - object-fit: contain !important; } - .object-fit-sm-cover { - object-fit: cover !important; } - .object-fit-sm-fill { - object-fit: fill !important; } - .object-fit-sm-scale { - object-fit: scale-down !important; } - .object-fit-sm-none { - object-fit: none !important; } - .d-sm-inline { - display: inline !important; } - .d-sm-inline-block { - display: inline-block !important; } - .d-sm-block { - display: block !important; } - .d-sm-grid { - display: grid !important; } - .d-sm-inline-grid { - display: inline-grid !important; } - .d-sm-table { - display: table !important; } - .d-sm-table-row { - display: table-row !important; } - .d-sm-table-cell { - display: table-cell !important; } - .d-sm-flex { - display: flex !important; } - .d-sm-inline-flex { - display: inline-flex !important; } - .d-sm-none { - display: none !important; } - .flex-sm-fill { - flex: 1 1 auto !important; } - .flex-sm-row { - flex-direction: row !important; } - .flex-sm-column { - flex-direction: column !important; } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; } - .flex-sm-grow-0 { - flex-grow: 0 !important; } - .flex-sm-grow-1 { - flex-grow: 1 !important; } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; } - .flex-sm-wrap { - flex-wrap: wrap !important; } - .flex-sm-nowrap { - flex-wrap: nowrap !important; } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-sm-start { - justify-content: flex-start !important; } - .justify-content-sm-end { - justify-content: flex-end !important; } - .justify-content-sm-center { - justify-content: center !important; } - .justify-content-sm-between { - justify-content: space-between !important; } - .justify-content-sm-around { - justify-content: space-around !important; } - .justify-content-sm-evenly { - justify-content: space-evenly !important; } - .align-items-sm-start { - align-items: flex-start !important; } - .align-items-sm-end { - align-items: flex-end !important; } - .align-items-sm-center { - align-items: center !important; } - .align-items-sm-baseline { - align-items: baseline !important; } - .align-items-sm-stretch { - align-items: stretch !important; } - .align-content-sm-start { - align-content: flex-start !important; } - .align-content-sm-end { - align-content: flex-end !important; } - .align-content-sm-center { - align-content: center !important; } - .align-content-sm-between { - align-content: space-between !important; } - .align-content-sm-around { - align-content: space-around !important; } - .align-content-sm-stretch { - align-content: stretch !important; } - .align-self-sm-auto { - align-self: auto !important; } - .align-self-sm-start { - align-self: flex-start !important; } - .align-self-sm-end { - align-self: flex-end !important; } - .align-self-sm-center { - align-self: center !important; } - .align-self-sm-baseline { - align-self: baseline !important; } - .align-self-sm-stretch { - align-self: stretch !important; } - .order-sm-first { - order: -1 !important; } - .order-sm-0 { - order: 0 !important; } - .order-sm-1 { - order: 1 !important; } - .order-sm-2 { - order: 2 !important; } - .order-sm-3 { - order: 3 !important; } - .order-sm-4 { - order: 4 !important; } - .order-sm-5 { - order: 5 !important; } - .order-sm-last { - order: 6 !important; } - .m-sm-0 { - margin: 0 !important; } - .m-sm-1 { - margin: 0.25rem !important; } - .m-sm-2 { - margin: 0.5rem !important; } - .m-sm-3 { - margin: 1rem !important; } - .m-sm-4 { - margin: 1.5rem !important; } - .m-sm-5 { - margin: 3rem !important; } - .m-sm-auto { - margin: auto !important; } - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-sm-0 { - margin-top: 0 !important; } - .mt-sm-1 { - margin-top: 0.25rem !important; } - .mt-sm-2 { - margin-top: 0.5rem !important; } - .mt-sm-3 { - margin-top: 1rem !important; } - .mt-sm-4 { - margin-top: 1.5rem !important; } - .mt-sm-5 { - margin-top: 3rem !important; } - .mt-sm-auto { - margin-top: auto !important; } - .me-sm-0 { - margin-right: 0 !important; } - .me-sm-1 { - margin-right: 0.25rem !important; } - .me-sm-2 { - margin-right: 0.5rem !important; } - .me-sm-3 { - margin-right: 1rem !important; } - .me-sm-4 { - margin-right: 1.5rem !important; } - .me-sm-5 { - margin-right: 3rem !important; } - .me-sm-auto { - margin-right: auto !important; } - .mb-sm-0 { - margin-bottom: 0 !important; } - .mb-sm-1 { - margin-bottom: 0.25rem !important; } - .mb-sm-2 { - margin-bottom: 0.5rem !important; } - .mb-sm-3 { - margin-bottom: 1rem !important; } - .mb-sm-4 { - margin-bottom: 1.5rem !important; } - .mb-sm-5 { - margin-bottom: 3rem !important; } - .mb-sm-auto { - margin-bottom: auto !important; } - .ms-sm-0 { - margin-left: 0 !important; } - .ms-sm-1 { - margin-left: 0.25rem !important; } - .ms-sm-2 { - margin-left: 0.5rem !important; } - .ms-sm-3 { - margin-left: 1rem !important; } - .ms-sm-4 { - margin-left: 1.5rem !important; } - .ms-sm-5 { - margin-left: 3rem !important; } - .ms-sm-auto { - margin-left: auto !important; } - .p-sm-0 { - padding: 0 !important; } - .p-sm-1 { - padding: 0.25rem !important; } - .p-sm-2 { - padding: 0.5rem !important; } - .p-sm-3 { - padding: 1rem !important; } - .p-sm-4 { - padding: 1.5rem !important; } - .p-sm-5 { - padding: 3rem !important; } - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-sm-0 { - padding-top: 0 !important; } - .pt-sm-1 { - padding-top: 0.25rem !important; } - .pt-sm-2 { - padding-top: 0.5rem !important; } - .pt-sm-3 { - padding-top: 1rem !important; } - .pt-sm-4 { - padding-top: 1.5rem !important; } - .pt-sm-5 { - padding-top: 3rem !important; } - .pe-sm-0 { - padding-right: 0 !important; } - .pe-sm-1 { - padding-right: 0.25rem !important; } - .pe-sm-2 { - padding-right: 0.5rem !important; } - .pe-sm-3 { - padding-right: 1rem !important; } - .pe-sm-4 { - padding-right: 1.5rem !important; } - .pe-sm-5 { - padding-right: 3rem !important; } - .pb-sm-0 { - padding-bottom: 0 !important; } - .pb-sm-1 { - padding-bottom: 0.25rem !important; } - .pb-sm-2 { - padding-bottom: 0.5rem !important; } - .pb-sm-3 { - padding-bottom: 1rem !important; } - .pb-sm-4 { - padding-bottom: 1.5rem !important; } - .pb-sm-5 { - padding-bottom: 3rem !important; } - .ps-sm-0 { - padding-left: 0 !important; } - .ps-sm-1 { - padding-left: 0.25rem !important; } - .ps-sm-2 { - padding-left: 0.5rem !important; } - .ps-sm-3 { - padding-left: 1rem !important; } - .ps-sm-4 { - padding-left: 1.5rem !important; } - .ps-sm-5 { - padding-left: 3rem !important; } - .gap-sm-0 { - gap: 0 !important; } - .gap-sm-1 { - gap: 0.25rem !important; } - .gap-sm-2 { - gap: 0.5rem !important; } - .gap-sm-3 { - gap: 1rem !important; } - .gap-sm-4 { - gap: 1.5rem !important; } - .gap-sm-5 { - gap: 3rem !important; } - .row-gap-sm-0 { - row-gap: 0 !important; } - .row-gap-sm-1 { - row-gap: 0.25rem !important; } - .row-gap-sm-2 { - row-gap: 0.5rem !important; } - .row-gap-sm-3 { - row-gap: 1rem !important; } - .row-gap-sm-4 { - row-gap: 1.5rem !important; } - .row-gap-sm-5 { - row-gap: 3rem !important; } - .column-gap-sm-0 { - column-gap: 0 !important; } - .column-gap-sm-1 { - column-gap: 0.25rem !important; } - .column-gap-sm-2 { - column-gap: 0.5rem !important; } - .column-gap-sm-3 { - column-gap: 1rem !important; } - .column-gap-sm-4 { - column-gap: 1.5rem !important; } - .column-gap-sm-5 { - column-gap: 3rem !important; } - .text-sm-start { - text-align: left !important; } - .text-sm-end { - text-align: right !important; } - .text-sm-center { - text-align: center !important; } } - -@media (min-width: 768px) { - .float-md-start { - float: left !important; } - .float-md-end { - float: right !important; } - .float-md-none { - float: none !important; } - .object-fit-md-contain { - object-fit: contain !important; } - .object-fit-md-cover { - object-fit: cover !important; } - .object-fit-md-fill { - object-fit: fill !important; } - .object-fit-md-scale { - object-fit: scale-down !important; } - .object-fit-md-none { - object-fit: none !important; } - .d-md-inline { - display: inline !important; } - .d-md-inline-block { - display: inline-block !important; } - .d-md-block { - display: block !important; } - .d-md-grid { - display: grid !important; } - .d-md-inline-grid { - display: inline-grid !important; } - .d-md-table { - display: table !important; } - .d-md-table-row { - display: table-row !important; } - .d-md-table-cell { - display: table-cell !important; } - .d-md-flex { - display: flex !important; } - .d-md-inline-flex { - display: inline-flex !important; } - .d-md-none { - display: none !important; } - .flex-md-fill { - flex: 1 1 auto !important; } - .flex-md-row { - flex-direction: row !important; } - .flex-md-column { - flex-direction: column !important; } - .flex-md-row-reverse { - flex-direction: row-reverse !important; } - .flex-md-column-reverse { - flex-direction: column-reverse !important; } - .flex-md-grow-0 { - flex-grow: 0 !important; } - .flex-md-grow-1 { - flex-grow: 1 !important; } - .flex-md-shrink-0 { - flex-shrink: 0 !important; } - .flex-md-shrink-1 { - flex-shrink: 1 !important; } - .flex-md-wrap { - flex-wrap: wrap !important; } - .flex-md-nowrap { - flex-wrap: nowrap !important; } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-md-start { - justify-content: flex-start !important; } - .justify-content-md-end { - justify-content: flex-end !important; } - .justify-content-md-center { - justify-content: center !important; } - .justify-content-md-between { - justify-content: space-between !important; } - .justify-content-md-around { - justify-content: space-around !important; } - .justify-content-md-evenly { - justify-content: space-evenly !important; } - .align-items-md-start { - align-items: flex-start !important; } - .align-items-md-end { - align-items: flex-end !important; } - .align-items-md-center { - align-items: center !important; } - .align-items-md-baseline { - align-items: baseline !important; } - .align-items-md-stretch { - align-items: stretch !important; } - .align-content-md-start { - align-content: flex-start !important; } - .align-content-md-end { - align-content: flex-end !important; } - .align-content-md-center { - align-content: center !important; } - .align-content-md-between { - align-content: space-between !important; } - .align-content-md-around { - align-content: space-around !important; } - .align-content-md-stretch { - align-content: stretch !important; } - .align-self-md-auto { - align-self: auto !important; } - .align-self-md-start { - align-self: flex-start !important; } - .align-self-md-end { - align-self: flex-end !important; } - .align-self-md-center { - align-self: center !important; } - .align-self-md-baseline { - align-self: baseline !important; } - .align-self-md-stretch { - align-self: stretch !important; } - .order-md-first { - order: -1 !important; } - .order-md-0 { - order: 0 !important; } - .order-md-1 { - order: 1 !important; } - .order-md-2 { - order: 2 !important; } - .order-md-3 { - order: 3 !important; } - .order-md-4 { - order: 4 !important; } - .order-md-5 { - order: 5 !important; } - .order-md-last { - order: 6 !important; } - .m-md-0 { - margin: 0 !important; } - .m-md-1 { - margin: 0.25rem !important; } - .m-md-2 { - margin: 0.5rem !important; } - .m-md-3 { - margin: 1rem !important; } - .m-md-4 { - margin: 1.5rem !important; } - .m-md-5 { - margin: 3rem !important; } - .m-md-auto { - margin: auto !important; } - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-md-0 { - margin-top: 0 !important; } - .mt-md-1 { - margin-top: 0.25rem !important; } - .mt-md-2 { - margin-top: 0.5rem !important; } - .mt-md-3 { - margin-top: 1rem !important; } - .mt-md-4 { - margin-top: 1.5rem !important; } - .mt-md-5 { - margin-top: 3rem !important; } - .mt-md-auto { - margin-top: auto !important; } - .me-md-0 { - margin-right: 0 !important; } - .me-md-1 { - margin-right: 0.25rem !important; } - .me-md-2 { - margin-right: 0.5rem !important; } - .me-md-3 { - margin-right: 1rem !important; } - .me-md-4 { - margin-right: 1.5rem !important; } - .me-md-5 { - margin-right: 3rem !important; } - .me-md-auto { - margin-right: auto !important; } - .mb-md-0 { - margin-bottom: 0 !important; } - .mb-md-1 { - margin-bottom: 0.25rem !important; } - .mb-md-2 { - margin-bottom: 0.5rem !important; } - .mb-md-3 { - margin-bottom: 1rem !important; } - .mb-md-4 { - margin-bottom: 1.5rem !important; } - .mb-md-5 { - margin-bottom: 3rem !important; } - .mb-md-auto { - margin-bottom: auto !important; } - .ms-md-0 { - margin-left: 0 !important; } - .ms-md-1 { - margin-left: 0.25rem !important; } - .ms-md-2 { - margin-left: 0.5rem !important; } - .ms-md-3 { - margin-left: 1rem !important; } - .ms-md-4 { - margin-left: 1.5rem !important; } - .ms-md-5 { - margin-left: 3rem !important; } - .ms-md-auto { - margin-left: auto !important; } - .p-md-0 { - padding: 0 !important; } - .p-md-1 { - padding: 0.25rem !important; } - .p-md-2 { - padding: 0.5rem !important; } - .p-md-3 { - padding: 1rem !important; } - .p-md-4 { - padding: 1.5rem !important; } - .p-md-5 { - padding: 3rem !important; } - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-md-0 { - padding-top: 0 !important; } - .pt-md-1 { - padding-top: 0.25rem !important; } - .pt-md-2 { - padding-top: 0.5rem !important; } - .pt-md-3 { - padding-top: 1rem !important; } - .pt-md-4 { - padding-top: 1.5rem !important; } - .pt-md-5 { - padding-top: 3rem !important; } - .pe-md-0 { - padding-right: 0 !important; } - .pe-md-1 { - padding-right: 0.25rem !important; } - .pe-md-2 { - padding-right: 0.5rem !important; } - .pe-md-3 { - padding-right: 1rem !important; } - .pe-md-4 { - padding-right: 1.5rem !important; } - .pe-md-5 { - padding-right: 3rem !important; } - .pb-md-0 { - padding-bottom: 0 !important; } - .pb-md-1 { - padding-bottom: 0.25rem !important; } - .pb-md-2 { - padding-bottom: 0.5rem !important; } - .pb-md-3 { - padding-bottom: 1rem !important; } - .pb-md-4 { - padding-bottom: 1.5rem !important; } - .pb-md-5 { - padding-bottom: 3rem !important; } - .ps-md-0 { - padding-left: 0 !important; } - .ps-md-1 { - padding-left: 0.25rem !important; } - .ps-md-2 { - padding-left: 0.5rem !important; } - .ps-md-3 { - padding-left: 1rem !important; } - .ps-md-4 { - padding-left: 1.5rem !important; } - .ps-md-5 { - padding-left: 3rem !important; } - .gap-md-0 { - gap: 0 !important; } - .gap-md-1 { - gap: 0.25rem !important; } - .gap-md-2 { - gap: 0.5rem !important; } - .gap-md-3 { - gap: 1rem !important; } - .gap-md-4 { - gap: 1.5rem !important; } - .gap-md-5 { - gap: 3rem !important; } - .row-gap-md-0 { - row-gap: 0 !important; } - .row-gap-md-1 { - row-gap: 0.25rem !important; } - .row-gap-md-2 { - row-gap: 0.5rem !important; } - .row-gap-md-3 { - row-gap: 1rem !important; } - .row-gap-md-4 { - row-gap: 1.5rem !important; } - .row-gap-md-5 { - row-gap: 3rem !important; } - .column-gap-md-0 { - column-gap: 0 !important; } - .column-gap-md-1 { - column-gap: 0.25rem !important; } - .column-gap-md-2 { - column-gap: 0.5rem !important; } - .column-gap-md-3 { - column-gap: 1rem !important; } - .column-gap-md-4 { - column-gap: 1.5rem !important; } - .column-gap-md-5 { - column-gap: 3rem !important; } - .text-md-start { - text-align: left !important; } - .text-md-end { - text-align: right !important; } - .text-md-center { - text-align: center !important; } } - -@media (min-width: 992px) { - .float-lg-start { - float: left !important; } - .float-lg-end { - float: right !important; } - .float-lg-none { - float: none !important; } - .object-fit-lg-contain { - object-fit: contain !important; } - .object-fit-lg-cover { - object-fit: cover !important; } - .object-fit-lg-fill { - object-fit: fill !important; } - .object-fit-lg-scale { - object-fit: scale-down !important; } - .object-fit-lg-none { - object-fit: none !important; } - .d-lg-inline { - display: inline !important; } - .d-lg-inline-block { - display: inline-block !important; } - .d-lg-block, .td-blog .td-rss-button { - display: block !important; } - .d-lg-grid { - display: grid !important; } - .d-lg-inline-grid { - display: inline-grid !important; } - .d-lg-table { - display: table !important; } - .d-lg-table-row { - display: table-row !important; } - .d-lg-table-cell { - display: table-cell !important; } - .d-lg-flex { - display: flex !important; } - .d-lg-inline-flex { - display: inline-flex !important; } - .d-lg-none { - display: none !important; } - .flex-lg-fill { - flex: 1 1 auto !important; } - .flex-lg-row { - flex-direction: row !important; } - .flex-lg-column { - flex-direction: column !important; } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; } - .flex-lg-grow-0 { - flex-grow: 0 !important; } - .flex-lg-grow-1 { - flex-grow: 1 !important; } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; } - .flex-lg-wrap { - flex-wrap: wrap !important; } - .flex-lg-nowrap { - flex-wrap: nowrap !important; } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-lg-start { - justify-content: flex-start !important; } - .justify-content-lg-end { - justify-content: flex-end !important; } - .justify-content-lg-center { - justify-content: center !important; } - .justify-content-lg-between { - justify-content: space-between !important; } - .justify-content-lg-around { - justify-content: space-around !important; } - .justify-content-lg-evenly { - justify-content: space-evenly !important; } - .align-items-lg-start { - align-items: flex-start !important; } - .align-items-lg-end { - align-items: flex-end !important; } - .align-items-lg-center { - align-items: center !important; } - .align-items-lg-baseline { - align-items: baseline !important; } - .align-items-lg-stretch { - align-items: stretch !important; } - .align-content-lg-start { - align-content: flex-start !important; } - .align-content-lg-end { - align-content: flex-end !important; } - .align-content-lg-center { - align-content: center !important; } - .align-content-lg-between { - align-content: space-between !important; } - .align-content-lg-around { - align-content: space-around !important; } - .align-content-lg-stretch { - align-content: stretch !important; } - .align-self-lg-auto { - align-self: auto !important; } - .align-self-lg-start { - align-self: flex-start !important; } - .align-self-lg-end { - align-self: flex-end !important; } - .align-self-lg-center { - align-self: center !important; } - .align-self-lg-baseline { - align-self: baseline !important; } - .align-self-lg-stretch { - align-self: stretch !important; } - .order-lg-first { - order: -1 !important; } - .order-lg-0 { - order: 0 !important; } - .order-lg-1 { - order: 1 !important; } - .order-lg-2 { - order: 2 !important; } - .order-lg-3 { - order: 3 !important; } - .order-lg-4 { - order: 4 !important; } - .order-lg-5 { - order: 5 !important; } - .order-lg-last { - order: 6 !important; } - .m-lg-0 { - margin: 0 !important; } - .m-lg-1 { - margin: 0.25rem !important; } - .m-lg-2 { - margin: 0.5rem !important; } - .m-lg-3 { - margin: 1rem !important; } - .m-lg-4 { - margin: 1.5rem !important; } - .m-lg-5 { - margin: 3rem !important; } - .m-lg-auto { - margin: auto !important; } - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-lg-0 { - margin-top: 0 !important; } - .mt-lg-1 { - margin-top: 0.25rem !important; } - .mt-lg-2 { - margin-top: 0.5rem !important; } - .mt-lg-3 { - margin-top: 1rem !important; } - .mt-lg-4 { - margin-top: 1.5rem !important; } - .mt-lg-5 { - margin-top: 3rem !important; } - .mt-lg-auto { - margin-top: auto !important; } - .me-lg-0 { - margin-right: 0 !important; } - .me-lg-1 { - margin-right: 0.25rem !important; } - .me-lg-2 { - margin-right: 0.5rem !important; } - .me-lg-3 { - margin-right: 1rem !important; } - .me-lg-4 { - margin-right: 1.5rem !important; } - .me-lg-5 { - margin-right: 3rem !important; } - .me-lg-auto { - margin-right: auto !important; } - .mb-lg-0 { - margin-bottom: 0 !important; } - .mb-lg-1 { - margin-bottom: 0.25rem !important; } - .mb-lg-2 { - margin-bottom: 0.5rem !important; } - .mb-lg-3 { - margin-bottom: 1rem !important; } - .mb-lg-4 { - margin-bottom: 1.5rem !important; } - .mb-lg-5 { - margin-bottom: 3rem !important; } - .mb-lg-auto { - margin-bottom: auto !important; } - .ms-lg-0 { - margin-left: 0 !important; } - .ms-lg-1 { - margin-left: 0.25rem !important; } - .ms-lg-2 { - margin-left: 0.5rem !important; } - .ms-lg-3 { - margin-left: 1rem !important; } - .ms-lg-4 { - margin-left: 1.5rem !important; } - .ms-lg-5 { - margin-left: 3rem !important; } - .ms-lg-auto { - margin-left: auto !important; } - .p-lg-0 { - padding: 0 !important; } - .p-lg-1 { - padding: 0.25rem !important; } - .p-lg-2 { - padding: 0.5rem !important; } - .p-lg-3 { - padding: 1rem !important; } - .p-lg-4 { - padding: 1.5rem !important; } - .p-lg-5 { - padding: 3rem !important; } - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-lg-0 { - padding-top: 0 !important; } - .pt-lg-1 { - padding-top: 0.25rem !important; } - .pt-lg-2 { - padding-top: 0.5rem !important; } - .pt-lg-3 { - padding-top: 1rem !important; } - .pt-lg-4 { - padding-top: 1.5rem !important; } - .pt-lg-5 { - padding-top: 3rem !important; } - .pe-lg-0 { - padding-right: 0 !important; } - .pe-lg-1 { - padding-right: 0.25rem !important; } - .pe-lg-2 { - padding-right: 0.5rem !important; } - .pe-lg-3 { - padding-right: 1rem !important; } - .pe-lg-4 { - padding-right: 1.5rem !important; } - .pe-lg-5 { - padding-right: 3rem !important; } - .pb-lg-0 { - padding-bottom: 0 !important; } - .pb-lg-1 { - padding-bottom: 0.25rem !important; } - .pb-lg-2 { - padding-bottom: 0.5rem !important; } - .pb-lg-3 { - padding-bottom: 1rem !important; } - .pb-lg-4 { - padding-bottom: 1.5rem !important; } - .pb-lg-5 { - padding-bottom: 3rem !important; } - .ps-lg-0 { - padding-left: 0 !important; } - .ps-lg-1 { - padding-left: 0.25rem !important; } - .ps-lg-2 { - padding-left: 0.5rem !important; } - .ps-lg-3 { - padding-left: 1rem !important; } - .ps-lg-4 { - padding-left: 1.5rem !important; } - .ps-lg-5 { - padding-left: 3rem !important; } - .gap-lg-0 { - gap: 0 !important; } - .gap-lg-1 { - gap: 0.25rem !important; } - .gap-lg-2 { - gap: 0.5rem !important; } - .gap-lg-3 { - gap: 1rem !important; } - .gap-lg-4 { - gap: 1.5rem !important; } - .gap-lg-5 { - gap: 3rem !important; } - .row-gap-lg-0 { - row-gap: 0 !important; } - .row-gap-lg-1 { - row-gap: 0.25rem !important; } - .row-gap-lg-2 { - row-gap: 0.5rem !important; } - .row-gap-lg-3 { - row-gap: 1rem !important; } - .row-gap-lg-4 { - row-gap: 1.5rem !important; } - .row-gap-lg-5 { - row-gap: 3rem !important; } - .column-gap-lg-0 { - column-gap: 0 !important; } - .column-gap-lg-1 { - column-gap: 0.25rem !important; } - .column-gap-lg-2 { - column-gap: 0.5rem !important; } - .column-gap-lg-3 { - column-gap: 1rem !important; } - .column-gap-lg-4 { - column-gap: 1.5rem !important; } - .column-gap-lg-5 { - column-gap: 3rem !important; } - .text-lg-start { - text-align: left !important; } - .text-lg-end { - text-align: right !important; } - .text-lg-center { - text-align: center !important; } } - -@media (min-width: 1200px) { - .float-xl-start { - float: left !important; } - .float-xl-end { - float: right !important; } - .float-xl-none { - float: none !important; } - .object-fit-xl-contain { - object-fit: contain !important; } - .object-fit-xl-cover { - object-fit: cover !important; } - .object-fit-xl-fill { - object-fit: fill !important; } - .object-fit-xl-scale { - object-fit: scale-down !important; } - .object-fit-xl-none { - object-fit: none !important; } - .d-xl-inline { - display: inline !important; } - .d-xl-inline-block { - display: inline-block !important; } - .d-xl-block { - display: block !important; } - .d-xl-grid { - display: grid !important; } - .d-xl-inline-grid { - display: inline-grid !important; } - .d-xl-table { - display: table !important; } - .d-xl-table-row { - display: table-row !important; } - .d-xl-table-cell { - display: table-cell !important; } - .d-xl-flex { - display: flex !important; } - .d-xl-inline-flex { - display: inline-flex !important; } - .d-xl-none { - display: none !important; } - .flex-xl-fill { - flex: 1 1 auto !important; } - .flex-xl-row { - flex-direction: row !important; } - .flex-xl-column { - flex-direction: column !important; } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; } - .flex-xl-grow-0 { - flex-grow: 0 !important; } - .flex-xl-grow-1 { - flex-grow: 1 !important; } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; } - .flex-xl-wrap { - flex-wrap: wrap !important; } - .flex-xl-nowrap { - flex-wrap: nowrap !important; } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-xl-start { - justify-content: flex-start !important; } - .justify-content-xl-end { - justify-content: flex-end !important; } - .justify-content-xl-center { - justify-content: center !important; } - .justify-content-xl-between { - justify-content: space-between !important; } - .justify-content-xl-around { - justify-content: space-around !important; } - .justify-content-xl-evenly { - justify-content: space-evenly !important; } - .align-items-xl-start { - align-items: flex-start !important; } - .align-items-xl-end { - align-items: flex-end !important; } - .align-items-xl-center { - align-items: center !important; } - .align-items-xl-baseline { - align-items: baseline !important; } - .align-items-xl-stretch { - align-items: stretch !important; } - .align-content-xl-start { - align-content: flex-start !important; } - .align-content-xl-end { - align-content: flex-end !important; } - .align-content-xl-center { - align-content: center !important; } - .align-content-xl-between { - align-content: space-between !important; } - .align-content-xl-around { - align-content: space-around !important; } - .align-content-xl-stretch { - align-content: stretch !important; } - .align-self-xl-auto { - align-self: auto !important; } - .align-self-xl-start { - align-self: flex-start !important; } - .align-self-xl-end { - align-self: flex-end !important; } - .align-self-xl-center { - align-self: center !important; } - .align-self-xl-baseline { - align-self: baseline !important; } - .align-self-xl-stretch { - align-self: stretch !important; } - .order-xl-first { - order: -1 !important; } - .order-xl-0 { - order: 0 !important; } - .order-xl-1 { - order: 1 !important; } - .order-xl-2 { - order: 2 !important; } - .order-xl-3 { - order: 3 !important; } - .order-xl-4 { - order: 4 !important; } - .order-xl-5 { - order: 5 !important; } - .order-xl-last { - order: 6 !important; } - .m-xl-0 { - margin: 0 !important; } - .m-xl-1 { - margin: 0.25rem !important; } - .m-xl-2 { - margin: 0.5rem !important; } - .m-xl-3 { - margin: 1rem !important; } - .m-xl-4 { - margin: 1.5rem !important; } - .m-xl-5 { - margin: 3rem !important; } - .m-xl-auto { - margin: auto !important; } - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-xl-0 { - margin-top: 0 !important; } - .mt-xl-1 { - margin-top: 0.25rem !important; } - .mt-xl-2 { - margin-top: 0.5rem !important; } - .mt-xl-3 { - margin-top: 1rem !important; } - .mt-xl-4 { - margin-top: 1.5rem !important; } - .mt-xl-5 { - margin-top: 3rem !important; } - .mt-xl-auto { - margin-top: auto !important; } - .me-xl-0 { - margin-right: 0 !important; } - .me-xl-1 { - margin-right: 0.25rem !important; } - .me-xl-2 { - margin-right: 0.5rem !important; } - .me-xl-3 { - margin-right: 1rem !important; } - .me-xl-4 { - margin-right: 1.5rem !important; } - .me-xl-5 { - margin-right: 3rem !important; } - .me-xl-auto { - margin-right: auto !important; } - .mb-xl-0 { - margin-bottom: 0 !important; } - .mb-xl-1 { - margin-bottom: 0.25rem !important; } - .mb-xl-2 { - margin-bottom: 0.5rem !important; } - .mb-xl-3 { - margin-bottom: 1rem !important; } - .mb-xl-4 { - margin-bottom: 1.5rem !important; } - .mb-xl-5 { - margin-bottom: 3rem !important; } - .mb-xl-auto { - margin-bottom: auto !important; } - .ms-xl-0 { - margin-left: 0 !important; } - .ms-xl-1 { - margin-left: 0.25rem !important; } - .ms-xl-2 { - margin-left: 0.5rem !important; } - .ms-xl-3 { - margin-left: 1rem !important; } - .ms-xl-4 { - margin-left: 1.5rem !important; } - .ms-xl-5 { - margin-left: 3rem !important; } - .ms-xl-auto { - margin-left: auto !important; } - .p-xl-0 { - padding: 0 !important; } - .p-xl-1 { - padding: 0.25rem !important; } - .p-xl-2 { - padding: 0.5rem !important; } - .p-xl-3 { - padding: 1rem !important; } - .p-xl-4 { - padding: 1.5rem !important; } - .p-xl-5 { - padding: 3rem !important; } - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-xl-0 { - padding-top: 0 !important; } - .pt-xl-1 { - padding-top: 0.25rem !important; } - .pt-xl-2 { - padding-top: 0.5rem !important; } - .pt-xl-3 { - padding-top: 1rem !important; } - .pt-xl-4 { - padding-top: 1.5rem !important; } - .pt-xl-5 { - padding-top: 3rem !important; } - .pe-xl-0 { - padding-right: 0 !important; } - .pe-xl-1 { - padding-right: 0.25rem !important; } - .pe-xl-2 { - padding-right: 0.5rem !important; } - .pe-xl-3 { - padding-right: 1rem !important; } - .pe-xl-4 { - padding-right: 1.5rem !important; } - .pe-xl-5 { - padding-right: 3rem !important; } - .pb-xl-0 { - padding-bottom: 0 !important; } - .pb-xl-1 { - padding-bottom: 0.25rem !important; } - .pb-xl-2 { - padding-bottom: 0.5rem !important; } - .pb-xl-3 { - padding-bottom: 1rem !important; } - .pb-xl-4 { - padding-bottom: 1.5rem !important; } - .pb-xl-5 { - padding-bottom: 3rem !important; } - .ps-xl-0 { - padding-left: 0 !important; } - .ps-xl-1 { - padding-left: 0.25rem !important; } - .ps-xl-2 { - padding-left: 0.5rem !important; } - .ps-xl-3 { - padding-left: 1rem !important; } - .ps-xl-4 { - padding-left: 1.5rem !important; } - .ps-xl-5 { - padding-left: 3rem !important; } - .gap-xl-0 { - gap: 0 !important; } - .gap-xl-1 { - gap: 0.25rem !important; } - .gap-xl-2 { - gap: 0.5rem !important; } - .gap-xl-3 { - gap: 1rem !important; } - .gap-xl-4 { - gap: 1.5rem !important; } - .gap-xl-5 { - gap: 3rem !important; } - .row-gap-xl-0 { - row-gap: 0 !important; } - .row-gap-xl-1 { - row-gap: 0.25rem !important; } - .row-gap-xl-2 { - row-gap: 0.5rem !important; } - .row-gap-xl-3 { - row-gap: 1rem !important; } - .row-gap-xl-4 { - row-gap: 1.5rem !important; } - .row-gap-xl-5 { - row-gap: 3rem !important; } - .column-gap-xl-0 { - column-gap: 0 !important; } - .column-gap-xl-1 { - column-gap: 0.25rem !important; } - .column-gap-xl-2 { - column-gap: 0.5rem !important; } - .column-gap-xl-3 { - column-gap: 1rem !important; } - .column-gap-xl-4 { - column-gap: 1.5rem !important; } - .column-gap-xl-5 { - column-gap: 3rem !important; } - .text-xl-start { - text-align: left !important; } - .text-xl-end { - text-align: right !important; } - .text-xl-center { - text-align: center !important; } } - -@media (min-width: 1400px) { - .float-xxl-start { - float: left !important; } - .float-xxl-end { - float: right !important; } - .float-xxl-none { - float: none !important; } - .object-fit-xxl-contain { - object-fit: contain !important; } - .object-fit-xxl-cover { - object-fit: cover !important; } - .object-fit-xxl-fill { - object-fit: fill !important; } - .object-fit-xxl-scale { - object-fit: scale-down !important; } - .object-fit-xxl-none { - object-fit: none !important; } - .d-xxl-inline { - display: inline !important; } - .d-xxl-inline-block { - display: inline-block !important; } - .d-xxl-block { - display: block !important; } - .d-xxl-grid { - display: grid !important; } - .d-xxl-inline-grid { - display: inline-grid !important; } - .d-xxl-table { - display: table !important; } - .d-xxl-table-row { - display: table-row !important; } - .d-xxl-table-cell { - display: table-cell !important; } - .d-xxl-flex { - display: flex !important; } - .d-xxl-inline-flex { - display: inline-flex !important; } - .d-xxl-none { - display: none !important; } - .flex-xxl-fill { - flex: 1 1 auto !important; } - .flex-xxl-row { - flex-direction: row !important; } - .flex-xxl-column { - flex-direction: column !important; } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; } - .flex-xxl-grow-0 { - flex-grow: 0 !important; } - .flex-xxl-grow-1 { - flex-grow: 1 !important; } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; } - .flex-xxl-wrap { - flex-wrap: wrap !important; } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - .justify-content-xxl-start { - justify-content: flex-start !important; } - .justify-content-xxl-end { - justify-content: flex-end !important; } - .justify-content-xxl-center { - justify-content: center !important; } - .justify-content-xxl-between { - justify-content: space-between !important; } - .justify-content-xxl-around { - justify-content: space-around !important; } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; } - .align-items-xxl-start { - align-items: flex-start !important; } - .align-items-xxl-end { - align-items: flex-end !important; } - .align-items-xxl-center { - align-items: center !important; } - .align-items-xxl-baseline { - align-items: baseline !important; } - .align-items-xxl-stretch { - align-items: stretch !important; } - .align-content-xxl-start { - align-content: flex-start !important; } - .align-content-xxl-end { - align-content: flex-end !important; } - .align-content-xxl-center { - align-content: center !important; } - .align-content-xxl-between { - align-content: space-between !important; } - .align-content-xxl-around { - align-content: space-around !important; } - .align-content-xxl-stretch { - align-content: stretch !important; } - .align-self-xxl-auto { - align-self: auto !important; } - .align-self-xxl-start { - align-self: flex-start !important; } - .align-self-xxl-end { - align-self: flex-end !important; } - .align-self-xxl-center { - align-self: center !important; } - .align-self-xxl-baseline { - align-self: baseline !important; } - .align-self-xxl-stretch { - align-self: stretch !important; } - .order-xxl-first { - order: -1 !important; } - .order-xxl-0 { - order: 0 !important; } - .order-xxl-1 { - order: 1 !important; } - .order-xxl-2 { - order: 2 !important; } - .order-xxl-3 { - order: 3 !important; } - .order-xxl-4 { - order: 4 !important; } - .order-xxl-5 { - order: 5 !important; } - .order-xxl-last { - order: 6 !important; } - .m-xxl-0 { - margin: 0 !important; } - .m-xxl-1 { - margin: 0.25rem !important; } - .m-xxl-2 { - margin: 0.5rem !important; } - .m-xxl-3 { - margin: 1rem !important; } - .m-xxl-4 { - margin: 1.5rem !important; } - .m-xxl-5 { - margin: 3rem !important; } - .m-xxl-auto { - margin: auto !important; } - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; } - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; } - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; } - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; } - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; } - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; } - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; } - .mt-xxl-0 { - margin-top: 0 !important; } - .mt-xxl-1 { - margin-top: 0.25rem !important; } - .mt-xxl-2 { - margin-top: 0.5rem !important; } - .mt-xxl-3 { - margin-top: 1rem !important; } - .mt-xxl-4 { - margin-top: 1.5rem !important; } - .mt-xxl-5 { - margin-top: 3rem !important; } - .mt-xxl-auto { - margin-top: auto !important; } - .me-xxl-0 { - margin-right: 0 !important; } - .me-xxl-1 { - margin-right: 0.25rem !important; } - .me-xxl-2 { - margin-right: 0.5rem !important; } - .me-xxl-3 { - margin-right: 1rem !important; } - .me-xxl-4 { - margin-right: 1.5rem !important; } - .me-xxl-5 { - margin-right: 3rem !important; } - .me-xxl-auto { - margin-right: auto !important; } - .mb-xxl-0 { - margin-bottom: 0 !important; } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; } - .mb-xxl-3 { - margin-bottom: 1rem !important; } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; } - .mb-xxl-5 { - margin-bottom: 3rem !important; } - .mb-xxl-auto { - margin-bottom: auto !important; } - .ms-xxl-0 { - margin-left: 0 !important; } - .ms-xxl-1 { - margin-left: 0.25rem !important; } - .ms-xxl-2 { - margin-left: 0.5rem !important; } - .ms-xxl-3 { - margin-left: 1rem !important; } - .ms-xxl-4 { - margin-left: 1.5rem !important; } - .ms-xxl-5 { - margin-left: 3rem !important; } - .ms-xxl-auto { - margin-left: auto !important; } - .p-xxl-0 { - padding: 0 !important; } - .p-xxl-1 { - padding: 0.25rem !important; } - .p-xxl-2 { - padding: 0.5rem !important; } - .p-xxl-3 { - padding: 1rem !important; } - .p-xxl-4 { - padding: 1.5rem !important; } - .p-xxl-5 { - padding: 3rem !important; } - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; } - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; } - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; } - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; } - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; } - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; } - .pt-xxl-0 { - padding-top: 0 !important; } - .pt-xxl-1 { - padding-top: 0.25rem !important; } - .pt-xxl-2 { - padding-top: 0.5rem !important; } - .pt-xxl-3 { - padding-top: 1rem !important; } - .pt-xxl-4 { - padding-top: 1.5rem !important; } - .pt-xxl-5 { - padding-top: 3rem !important; } - .pe-xxl-0 { - padding-right: 0 !important; } - .pe-xxl-1 { - padding-right: 0.25rem !important; } - .pe-xxl-2 { - padding-right: 0.5rem !important; } - .pe-xxl-3 { - padding-right: 1rem !important; } - .pe-xxl-4 { - padding-right: 1.5rem !important; } - .pe-xxl-5 { - padding-right: 3rem !important; } - .pb-xxl-0 { - padding-bottom: 0 !important; } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; } - .pb-xxl-3 { - padding-bottom: 1rem !important; } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; } - .pb-xxl-5 { - padding-bottom: 3rem !important; } - .ps-xxl-0 { - padding-left: 0 !important; } - .ps-xxl-1 { - padding-left: 0.25rem !important; } - .ps-xxl-2 { - padding-left: 0.5rem !important; } - .ps-xxl-3 { - padding-left: 1rem !important; } - .ps-xxl-4 { - padding-left: 1.5rem !important; } - .ps-xxl-5 { - padding-left: 3rem !important; } - .gap-xxl-0 { - gap: 0 !important; } - .gap-xxl-1 { - gap: 0.25rem !important; } - .gap-xxl-2 { - gap: 0.5rem !important; } - .gap-xxl-3 { - gap: 1rem !important; } - .gap-xxl-4 { - gap: 1.5rem !important; } - .gap-xxl-5 { - gap: 3rem !important; } - .row-gap-xxl-0 { - row-gap: 0 !important; } - .row-gap-xxl-1 { - row-gap: 0.25rem !important; } - .row-gap-xxl-2 { - row-gap: 0.5rem !important; } - .row-gap-xxl-3 { - row-gap: 1rem !important; } - .row-gap-xxl-4 { - row-gap: 1.5rem !important; } - .row-gap-xxl-5 { - row-gap: 3rem !important; } - .column-gap-xxl-0 { - column-gap: 0 !important; } - .column-gap-xxl-1 { - column-gap: 0.25rem !important; } - .column-gap-xxl-2 { - column-gap: 0.5rem !important; } - .column-gap-xxl-3 { - column-gap: 1rem !important; } - .column-gap-xxl-4 { - column-gap: 1.5rem !important; } - .column-gap-xxl-5 { - column-gap: 3rem !important; } - .text-xxl-start { - text-align: left !important; } - .text-xxl-end { - text-align: right !important; } - .text-xxl-center { - text-align: center !important; } } - -@media (min-width: 1200px) { - .fs-1 { - font-size: 2.5rem !important; } - .fs-2 { - font-size: 2rem !important; } - .fs-3 { - font-size: 1.5rem !important; } - .fs-4 { - font-size: 1.35rem !important; } } - -@media print { - .d-print-inline { - display: inline !important; } - .d-print-inline-block { - display: inline-block !important; } - .d-print-block { - display: block !important; } - .d-print-grid { - display: grid !important; } - .d-print-inline-grid { - display: inline-grid !important; } - .d-print-table { - display: table !important; } - .d-print-table-row { - display: table-row !important; } - .d-print-table-cell { - display: table-cell !important; } - .d-print-flex { - display: flex !important; } - .d-print-inline-flex { - display: inline-flex !important; } - .d-print-none { - display: none !important; } } - -/*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2024 Fonticons, Inc. - */ -.fa, .td-search__icon:before { - font-family: var(--fa-style-family, "Font Awesome 6 Free"); - font-weight: var(--fa-style, 900); } - -.fa, .td-search__icon:before, -.fa-classic, -.fa-sharp, -.fas, -.td-offline-search-results__close-button:after, -.fa-solid, -.far, -.fa-regular, -.fab, -.fa-brands { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: var(--fa-display, inline-block); - font-style: normal; - font-variant: normal; - line-height: 1; - text-rendering: auto; } - -.fas, .td-offline-search-results__close-button:after, -.fa-classic, -.fa-solid, -.far, -.fa-regular { - font-family: 'Font Awesome 6 Free'; } - -.fab, -.fa-brands { - font-family: 'Font Awesome 6 Brands'; } - -.fa-1x { - font-size: 1em; } - -.fa-2x { - font-size: 2em; } - -.fa-3x { - font-size: 3em; } - -.fa-4x { - font-size: 4em; } - -.fa-5x { - font-size: 5em; } - -.fa-6x { - font-size: 6em; } - -.fa-7x { - font-size: 7em; } - -.fa-8x { - font-size: 8em; } - -.fa-9x { - font-size: 9em; } - -.fa-10x { - font-size: 10em; } - -.fa-2xs { - font-size: 0.625em; - line-height: 0.1em; - vertical-align: 0.225em; } - -.fa-xs { - font-size: 0.75em; - line-height: 0.08333333em; - vertical-align: 0.125em; } - -.fa-sm { - font-size: 0.875em; - line-height: 0.07142857em; - vertical-align: 0.05357143em; } - -.fa-lg { - font-size: 1.25em; - line-height: 0.05em; - vertical-align: -0.075em; } - -.fa-xl { - font-size: 1.5em; - line-height: 0.04166667em; - vertical-align: -0.125em; } - -.fa-2xl { - font-size: 2em; - line-height: 0.03125em; - vertical-align: -0.1875em; } - -.fa-fw { - text-align: center; - width: 1.25em; } - -.fa-ul { - list-style-type: none; - margin-left: var(--fa-li-margin, 2.5em); - padding-left: 0; } - .fa-ul > li { - position: relative; } - -.fa-li { - left: calc(var(--fa-li-width, 2em) * -1); - position: absolute; - text-align: center; - width: var(--fa-li-width, 2em); - line-height: inherit; } - -.fa-border { - border-color: var(--fa-border-color, #eee); - border-radius: var(--fa-border-radius, 0.1em); - border-style: var(--fa-border-style, solid); - border-width: var(--fa-border-width, 0.08em); - padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } - -.fa-pull-left { - float: left; - margin-right: var(--fa-pull-margin, 0.3em); } - -.fa-pull-right { - float: right; - margin-left: var(--fa-pull-margin, 0.3em); } - -.fa-beat { - animation-name: fa-beat; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } - -.fa-bounce { - animation-name: fa-bounce; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } - -.fa-fade { - animation-name: fa-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } - -.fa-beat-fade { - animation-name: fa-beat-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } - -.fa-flip { - animation-name: fa-flip; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } - -.fa-shake { - animation-name: fa-shake; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); } - -.fa-spin { - animation-name: fa-spin; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 2s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); } - -.fa-spin-reverse { - --fa-animation-direction: reverse; } - -.fa-pulse, -.fa-spin-pulse { - animation-name: fa-spin; - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, steps(8)); } - -@media (prefers-reduced-motion: reduce) { - .fa-beat, - .fa-bounce, - .fa-fade, - .fa-beat-fade, - .fa-flip, - .fa-pulse, - .fa-shake, - .fa-spin, - .fa-spin-pulse { - animation-delay: -1ms; - animation-duration: 1ms; - animation-iteration-count: 1; - transition-delay: 0s; - transition-duration: 0s; } } - -@keyframes fa-beat { - 0%, 90% { - transform: scale(1); } - 45% { - transform: scale(var(--fa-beat-scale, 1.25)); } } - -@keyframes fa-bounce { - 0% { - transform: scale(1, 1) translateY(0); } - 10% { - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } - 30% { - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } - 50% { - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } - 57% { - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } - 64% { - transform: scale(1, 1) translateY(0); } - 100% { - transform: scale(1, 1) translateY(0); } } - -@keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); } } - -@keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - transform: scale(1); } - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - -@keyframes fa-flip { - 50% { - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } - -@keyframes fa-shake { - 0% { - transform: rotate(-15deg); } - 4% { - transform: rotate(15deg); } - 8%, 24% { - transform: rotate(-18deg); } - 12%, 28% { - transform: rotate(18deg); } - 16% { - transform: rotate(-22deg); } - 20% { - transform: rotate(22deg); } - 32% { - transform: rotate(-12deg); } - 36% { - transform: rotate(12deg); } - 40%, 100% { - transform: rotate(0deg); } } - -@keyframes fa-spin { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(360deg); } } - -.fa-rotate-90 { - transform: rotate(90deg); } - -.fa-rotate-180 { - transform: rotate(180deg); } - -.fa-rotate-270 { - transform: rotate(270deg); } - -.fa-flip-horizontal { - transform: scale(-1, 1); } - -.fa-flip-vertical { - transform: scale(1, -1); } - -.fa-flip-both, -.fa-flip-horizontal.fa-flip-vertical { - transform: scale(-1, -1); } - -.fa-rotate-by { - transform: rotate(var(--fa-rotate-angle, 0)); } - -.fa-stack { - display: inline-block; - height: 2em; - line-height: 2em; - position: relative; - vertical-align: middle; - width: 2.5em; } - -.fa-stack-1x, -.fa-stack-2x { - left: 0; - position: absolute; - text-align: center; - width: 100%; - z-index: var(--fa-stack-z-index, auto); } - -.fa-stack-1x { - line-height: inherit; } - -.fa-stack-2x { - font-size: 2em; } - -.fa-inverse { - color: var(--fa-inverse, #fff); } - -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen -readers do not read off random characters that represent icons */ -.fa-0::before { - content: "\30"; } - -.fa-1::before { - content: "\31"; } - -.fa-2::before { - content: "\32"; } - -.fa-3::before { - content: "\33"; } - -.fa-4::before { - content: "\34"; } - -.fa-5::before { - content: "\35"; } - -.fa-6::before { - content: "\36"; } - -.fa-7::before { - content: "\37"; } - -.fa-8::before { - content: "\38"; } - -.fa-9::before { - content: "\39"; } - -.fa-fill-drip::before { - content: "\f576"; } - -.fa-arrows-to-circle::before { - content: "\e4bd"; } - -.fa-circle-chevron-right::before { - content: "\f138"; } - -.fa-chevron-circle-right::before { - content: "\f138"; } - -.fa-at::before { - content: "\40"; } - -.fa-trash-can::before { - content: "\f2ed"; } - -.fa-trash-alt::before { - content: "\f2ed"; } - -.fa-text-height::before { - content: "\f034"; } - -.fa-user-xmark::before { - content: "\f235"; } - -.fa-user-times::before { - content: "\f235"; } - -.fa-stethoscope::before { - content: "\f0f1"; } - -.fa-message::before { - content: "\f27a"; } - -.fa-comment-alt::before { - content: "\f27a"; } - -.fa-info::before { - content: "\f129"; } - -.fa-down-left-and-up-right-to-center::before { - content: "\f422"; } - -.fa-compress-alt::before { - content: "\f422"; } - -.fa-explosion::before { - content: "\e4e9"; } - -.fa-file-lines::before { - content: "\f15c"; } - -.fa-file-alt::before { - content: "\f15c"; } - -.fa-file-text::before { - content: "\f15c"; } - -.fa-wave-square::before { - content: "\f83e"; } - -.fa-ring::before { - content: "\f70b"; } - -.fa-building-un::before { - content: "\e4d9"; } - -.fa-dice-three::before { - content: "\f527"; } - -.fa-calendar-days::before { - content: "\f073"; } - -.fa-calendar-alt::before { - content: "\f073"; } - -.fa-anchor-circle-check::before { - content: "\e4aa"; } - -.fa-building-circle-arrow-right::before { - content: "\e4d1"; } - -.fa-volleyball::before { - content: "\f45f"; } - -.fa-volleyball-ball::before { - content: "\f45f"; } - -.fa-arrows-up-to-line::before { - content: "\e4c2"; } - -.fa-sort-down::before { - content: "\f0dd"; } - -.fa-sort-desc::before { - content: "\f0dd"; } - -.fa-circle-minus::before { - content: "\f056"; } - -.fa-minus-circle::before { - content: "\f056"; } - -.fa-door-open::before { - content: "\f52b"; } - -.fa-right-from-bracket::before { - content: "\f2f5"; } - -.fa-sign-out-alt::before { - content: "\f2f5"; } - -.fa-atom::before { - content: "\f5d2"; } - -.fa-soap::before { - content: "\e06e"; } - -.fa-icons::before { - content: "\f86d"; } - -.fa-heart-music-camera-bolt::before { - content: "\f86d"; } - -.fa-microphone-lines-slash::before { - content: "\f539"; } - -.fa-microphone-alt-slash::before { - content: "\f539"; } - -.fa-bridge-circle-check::before { - content: "\e4c9"; } - -.fa-pump-medical::before { - content: "\e06a"; } - -.fa-fingerprint::before { - content: "\f577"; } - -.fa-hand-point-right::before { - content: "\f0a4"; } - -.fa-magnifying-glass-location::before { - content: "\f689"; } - -.fa-search-location::before { - content: "\f689"; } - -.fa-forward-step::before { - content: "\f051"; } - -.fa-step-forward::before { - content: "\f051"; } - -.fa-face-smile-beam::before { - content: "\f5b8"; } - -.fa-smile-beam::before { - content: "\f5b8"; } - -.fa-flag-checkered::before { - content: "\f11e"; } - -.fa-football::before { - content: "\f44e"; } - -.fa-football-ball::before { - content: "\f44e"; } - -.fa-school-circle-exclamation::before { - content: "\e56c"; } - -.fa-crop::before { - content: "\f125"; } - -.fa-angles-down::before { - content: "\f103"; } - -.fa-angle-double-down::before { - content: "\f103"; } - -.fa-users-rectangle::before { - content: "\e594"; } - -.fa-people-roof::before { - content: "\e537"; } - -.fa-people-line::before { - content: "\e534"; } - -.fa-beer-mug-empty::before { - content: "\f0fc"; } - -.fa-beer::before { - content: "\f0fc"; } - -.fa-diagram-predecessor::before { - content: "\e477"; } - -.fa-arrow-up-long::before { - content: "\f176"; } - -.fa-long-arrow-up::before { - content: "\f176"; } - -.fa-fire-flame-simple::before { - content: "\f46a"; } - -.fa-burn::before { - content: "\f46a"; } - -.fa-person::before { - content: "\f183"; } - -.fa-male::before { - content: "\f183"; } - -.fa-laptop::before { - content: "\f109"; } - -.fa-file-csv::before { - content: "\f6dd"; } - -.fa-menorah::before { - content: "\f676"; } - -.fa-truck-plane::before { - content: "\e58f"; } - -.fa-record-vinyl::before { - content: "\f8d9"; } - -.fa-face-grin-stars::before { - content: "\f587"; } - -.fa-grin-stars::before { - content: "\f587"; } - -.fa-bong::before { - content: "\f55c"; } - -.fa-spaghetti-monster-flying::before { - content: "\f67b"; } - -.fa-pastafarianism::before { - content: "\f67b"; } - -.fa-arrow-down-up-across-line::before { - content: "\e4af"; } - -.fa-spoon::before { - content: "\f2e5"; } - -.fa-utensil-spoon::before { - content: "\f2e5"; } - -.fa-jar-wheat::before { - content: "\e517"; } - -.fa-envelopes-bulk::before { - content: "\f674"; } - -.fa-mail-bulk::before { - content: "\f674"; } - -.fa-file-circle-exclamation::before { - content: "\e4eb"; } - -.fa-circle-h::before { - content: "\f47e"; } - -.fa-hospital-symbol::before { - content: "\f47e"; } - -.fa-pager::before { - content: "\f815"; } - -.fa-address-book::before { - content: "\f2b9"; } - -.fa-contact-book::before { - content: "\f2b9"; } - -.fa-strikethrough::before { - content: "\f0cc"; } - -.fa-k::before { - content: "\4b"; } - -.fa-landmark-flag::before { - content: "\e51c"; } - -.fa-pencil::before { - content: "\f303"; } - -.fa-pencil-alt::before { - content: "\f303"; } - -.fa-backward::before { - content: "\f04a"; } - -.fa-caret-right::before { - content: "\f0da"; } - -.fa-comments::before { - content: "\f086"; } - -.fa-paste::before { - content: "\f0ea"; } - -.fa-file-clipboard::before { - content: "\f0ea"; } - -.fa-code-pull-request::before { - content: "\e13c"; } - -.fa-clipboard-list::before { - content: "\f46d"; } - -.fa-truck-ramp-box::before { - content: "\f4de"; } - -.fa-truck-loading::before { - content: "\f4de"; } - -.fa-user-check::before { - content: "\f4fc"; } - -.fa-vial-virus::before { - content: "\e597"; } - -.fa-sheet-plastic::before { - content: "\e571"; } - -.fa-blog::before { - content: "\f781"; } - -.fa-user-ninja::before { - content: "\f504"; } - -.fa-person-arrow-up-from-line::before { - content: "\e539"; } - -.fa-scroll-torah::before { - content: "\f6a0"; } - -.fa-torah::before { - content: "\f6a0"; } - -.fa-broom-ball::before { - content: "\f458"; } - -.fa-quidditch::before { - content: "\f458"; } - -.fa-quidditch-broom-ball::before { - content: "\f458"; } - -.fa-toggle-off::before { - content: "\f204"; } - -.fa-box-archive::before { - content: "\f187"; } - -.fa-archive::before { - content: "\f187"; } - -.fa-person-drowning::before { - content: "\e545"; } - -.fa-arrow-down-9-1::before { - content: "\f886"; } - -.fa-sort-numeric-desc::before { - content: "\f886"; } - -.fa-sort-numeric-down-alt::before { - content: "\f886"; } - -.fa-face-grin-tongue-squint::before { - content: "\f58a"; } - -.fa-grin-tongue-squint::before { - content: "\f58a"; } - -.fa-spray-can::before { - content: "\f5bd"; } - -.fa-truck-monster::before { - content: "\f63b"; } - -.fa-w::before { - content: "\57"; } - -.fa-earth-africa::before { - content: "\f57c"; } - -.fa-globe-africa::before { - content: "\f57c"; } - -.fa-rainbow::before { - content: "\f75b"; } - -.fa-circle-notch::before { - content: "\f1ce"; } - -.fa-tablet-screen-button::before { - content: "\f3fa"; } - -.fa-tablet-alt::before { - content: "\f3fa"; } - -.fa-paw::before { - content: "\f1b0"; } - -.fa-cloud::before { - content: "\f0c2"; } - -.fa-trowel-bricks::before { - content: "\e58a"; } - -.fa-face-flushed::before { - content: "\f579"; } - -.fa-flushed::before { - content: "\f579"; } - -.fa-hospital-user::before { - content: "\f80d"; } - -.fa-tent-arrow-left-right::before { - content: "\e57f"; } - -.fa-gavel::before { - content: "\f0e3"; } - -.fa-legal::before { - content: "\f0e3"; } - -.fa-binoculars::before { - content: "\f1e5"; } - -.fa-microphone-slash::before { - content: "\f131"; } - -.fa-box-tissue::before { - content: "\e05b"; } - -.fa-motorcycle::before { - content: "\f21c"; } - -.fa-bell-concierge::before { - content: "\f562"; } - -.fa-concierge-bell::before { - content: "\f562"; } - -.fa-pen-ruler::before { - content: "\f5ae"; } - -.fa-pencil-ruler::before { - content: "\f5ae"; } - -.fa-people-arrows::before { - content: "\e068"; } - -.fa-people-arrows-left-right::before { - content: "\e068"; } - -.fa-mars-and-venus-burst::before { - content: "\e523"; } - -.fa-square-caret-right::before { - content: "\f152"; } - -.fa-caret-square-right::before { - content: "\f152"; } - -.fa-scissors::before { - content: "\f0c4"; } - -.fa-cut::before { - content: "\f0c4"; } - -.fa-sun-plant-wilt::before { - content: "\e57a"; } - -.fa-toilets-portable::before { - content: "\e584"; } - -.fa-hockey-puck::before { - content: "\f453"; } - -.fa-table::before { - content: "\f0ce"; } - -.fa-magnifying-glass-arrow-right::before { - content: "\e521"; } - -.fa-tachograph-digital::before { - content: "\f566"; } - -.fa-digital-tachograph::before { - content: "\f566"; } - -.fa-users-slash::before { - content: "\e073"; } - -.fa-clover::before { - content: "\e139"; } - -.fa-reply::before { - content: "\f3e5"; } - -.fa-mail-reply::before { - content: "\f3e5"; } - -.fa-star-and-crescent::before { - content: "\f699"; } - -.fa-house-fire::before { - content: "\e50c"; } - -.fa-square-minus::before { - content: "\f146"; } - -.fa-minus-square::before { - content: "\f146"; } - -.fa-helicopter::before { - content: "\f533"; } - -.fa-compass::before { - content: "\f14e"; } - -.fa-square-caret-down::before { - content: "\f150"; } - -.fa-caret-square-down::before { - content: "\f150"; } - -.fa-file-circle-question::before { - content: "\e4ef"; } - -.fa-laptop-code::before { - content: "\f5fc"; } - -.fa-swatchbook::before { - content: "\f5c3"; } - -.fa-prescription-bottle::before { - content: "\f485"; } - -.fa-bars::before { - content: "\f0c9"; } - -.fa-navicon::before { - content: "\f0c9"; } - -.fa-people-group::before { - content: "\e533"; } - -.fa-hourglass-end::before { - content: "\f253"; } - -.fa-hourglass-3::before { - content: "\f253"; } - -.fa-heart-crack::before { - content: "\f7a9"; } - -.fa-heart-broken::before { - content: "\f7a9"; } - -.fa-square-up-right::before { - content: "\f360"; } - -.fa-external-link-square-alt::before { - content: "\f360"; } - -.fa-face-kiss-beam::before { - content: "\f597"; } - -.fa-kiss-beam::before { - content: "\f597"; } - -.fa-film::before { - content: "\f008"; } - -.fa-ruler-horizontal::before { - content: "\f547"; } - -.fa-people-robbery::before { - content: "\e536"; } - -.fa-lightbulb::before { - content: "\f0eb"; } - -.fa-caret-left::before { - content: "\f0d9"; } - -.fa-circle-exclamation::before { - content: "\f06a"; } - -.fa-exclamation-circle::before { - content: "\f06a"; } - -.fa-school-circle-xmark::before { - content: "\e56d"; } - -.fa-arrow-right-from-bracket::before { - content: "\f08b"; } - -.fa-sign-out::before { - content: "\f08b"; } - -.fa-circle-chevron-down::before { - content: "\f13a"; } - -.fa-chevron-circle-down::before { - content: "\f13a"; } - -.fa-unlock-keyhole::before { - content: "\f13e"; } - -.fa-unlock-alt::before { - content: "\f13e"; } - -.fa-cloud-showers-heavy::before { - content: "\f740"; } - -.fa-headphones-simple::before { - content: "\f58f"; } - -.fa-headphones-alt::before { - content: "\f58f"; } - -.fa-sitemap::before { - content: "\f0e8"; } - -.fa-circle-dollar-to-slot::before { - content: "\f4b9"; } - -.fa-donate::before { - content: "\f4b9"; } - -.fa-memory::before { - content: "\f538"; } - -.fa-road-spikes::before { - content: "\e568"; } - -.fa-fire-burner::before { - content: "\e4f1"; } - -.fa-flag::before { - content: "\f024"; } - -.fa-hanukiah::before { - content: "\f6e6"; } - -.fa-feather::before { - content: "\f52d"; } - -.fa-volume-low::before { - content: "\f027"; } - -.fa-volume-down::before { - content: "\f027"; } - -.fa-comment-slash::before { - content: "\f4b3"; } - -.fa-cloud-sun-rain::before { - content: "\f743"; } - -.fa-compress::before { - content: "\f066"; } - -.fa-wheat-awn::before { - content: "\e2cd"; } - -.fa-wheat-alt::before { - content: "\e2cd"; } - -.fa-ankh::before { - content: "\f644"; } - -.fa-hands-holding-child::before { - content: "\e4fa"; } - -.fa-asterisk::before { - content: "\2a"; } - -.fa-square-check::before { - content: "\f14a"; } - -.fa-check-square::before { - content: "\f14a"; } - -.fa-peseta-sign::before { - content: "\e221"; } - -.fa-heading::before { - content: "\f1dc"; } - -.fa-header::before { - content: "\f1dc"; } - -.fa-ghost::before { - content: "\f6e2"; } - -.fa-list::before { - content: "\f03a"; } - -.fa-list-squares::before { - content: "\f03a"; } - -.fa-square-phone-flip::before { - content: "\f87b"; } - -.fa-phone-square-alt::before { - content: "\f87b"; } - -.fa-cart-plus::before { - content: "\f217"; } - -.fa-gamepad::before { - content: "\f11b"; } - -.fa-circle-dot::before { - content: "\f192"; } - -.fa-dot-circle::before { - content: "\f192"; } - -.fa-face-dizzy::before { - content: "\f567"; } - -.fa-dizzy::before { - content: "\f567"; } - -.fa-egg::before { - content: "\f7fb"; } - -.fa-house-medical-circle-xmark::before { - content: "\e513"; } - -.fa-campground::before { - content: "\f6bb"; } - -.fa-folder-plus::before { - content: "\f65e"; } - -.fa-futbol::before { - content: "\f1e3"; } - -.fa-futbol-ball::before { - content: "\f1e3"; } - -.fa-soccer-ball::before { - content: "\f1e3"; } - -.fa-paintbrush::before { - content: "\f1fc"; } - -.fa-paint-brush::before { - content: "\f1fc"; } - -.fa-lock::before { - content: "\f023"; } - -.fa-gas-pump::before { - content: "\f52f"; } - -.fa-hot-tub-person::before { - content: "\f593"; } - -.fa-hot-tub::before { - content: "\f593"; } - -.fa-map-location::before { - content: "\f59f"; } - -.fa-map-marked::before { - content: "\f59f"; } - -.fa-house-flood-water::before { - content: "\e50e"; } - -.fa-tree::before { - content: "\f1bb"; } - -.fa-bridge-lock::before { - content: "\e4cc"; } - -.fa-sack-dollar::before { - content: "\f81d"; } - -.fa-pen-to-square::before { - content: "\f044"; } - -.fa-edit::before { - content: "\f044"; } - -.fa-car-side::before { - content: "\f5e4"; } - -.fa-share-nodes::before { - content: "\f1e0"; } - -.fa-share-alt::before { - content: "\f1e0"; } - -.fa-heart-circle-minus::before { - content: "\e4ff"; } - -.fa-hourglass-half::before { - content: "\f252"; } - -.fa-hourglass-2::before { - content: "\f252"; } - -.fa-microscope::before { - content: "\f610"; } - -.fa-sink::before { - content: "\e06d"; } - -.fa-bag-shopping::before { - content: "\f290"; } - -.fa-shopping-bag::before { - content: "\f290"; } - -.fa-arrow-down-z-a::before { - content: "\f881"; } - -.fa-sort-alpha-desc::before { - content: "\f881"; } - -.fa-sort-alpha-down-alt::before { - content: "\f881"; } - -.fa-mitten::before { - content: "\f7b5"; } - -.fa-person-rays::before { - content: "\e54d"; } - -.fa-users::before { - content: "\f0c0"; } - -.fa-eye-slash::before { - content: "\f070"; } - -.fa-flask-vial::before { - content: "\e4f3"; } - -.fa-hand::before { - content: "\f256"; } - -.fa-hand-paper::before { - content: "\f256"; } - -.fa-om::before { - content: "\f679"; } - -.fa-worm::before { - content: "\e599"; } - -.fa-house-circle-xmark::before { - content: "\e50b"; } - -.fa-plug::before { - content: "\f1e6"; } - -.fa-chevron-up::before { - content: "\f077"; } - -.fa-hand-spock::before { - content: "\f259"; } - -.fa-stopwatch::before { - content: "\f2f2"; } - -.fa-face-kiss::before { - content: "\f596"; } - -.fa-kiss::before { - content: "\f596"; } - -.fa-bridge-circle-xmark::before { - content: "\e4cb"; } - -.fa-face-grin-tongue::before { - content: "\f589"; } - -.fa-grin-tongue::before { - content: "\f589"; } - -.fa-chess-bishop::before { - content: "\f43a"; } - -.fa-face-grin-wink::before { - content: "\f58c"; } - -.fa-grin-wink::before { - content: "\f58c"; } - -.fa-ear-deaf::before { - content: "\f2a4"; } - -.fa-deaf::before { - content: "\f2a4"; } - -.fa-deafness::before { - content: "\f2a4"; } - -.fa-hard-of-hearing::before { - content: "\f2a4"; } - -.fa-road-circle-check::before { - content: "\e564"; } - -.fa-dice-five::before { - content: "\f523"; } - -.fa-square-rss::before { - content: "\f143"; } - -.fa-rss-square::before { - content: "\f143"; } - -.fa-land-mine-on::before { - content: "\e51b"; } - -.fa-i-cursor::before { - content: "\f246"; } - -.fa-stamp::before { - content: "\f5bf"; } - -.fa-stairs::before { - content: "\e289"; } - -.fa-i::before { - content: "\49"; } - -.fa-hryvnia-sign::before { - content: "\f6f2"; } - -.fa-hryvnia::before { - content: "\f6f2"; } - -.fa-pills::before { - content: "\f484"; } - -.fa-face-grin-wide::before { - content: "\f581"; } - -.fa-grin-alt::before { - content: "\f581"; } - -.fa-tooth::before { - content: "\f5c9"; } - -.fa-v::before { - content: "\56"; } - -.fa-bangladeshi-taka-sign::before { - content: "\e2e6"; } - -.fa-bicycle::before { - content: "\f206"; } - -.fa-staff-snake::before { - content: "\e579"; } - -.fa-rod-asclepius::before { - content: "\e579"; } - -.fa-rod-snake::before { - content: "\e579"; } - -.fa-staff-aesculapius::before { - content: "\e579"; } - -.fa-head-side-cough-slash::before { - content: "\e062"; } - -.fa-truck-medical::before { - content: "\f0f9"; } - -.fa-ambulance::before { - content: "\f0f9"; } - -.fa-wheat-awn-circle-exclamation::before { - content: "\e598"; } - -.fa-snowman::before { - content: "\f7d0"; } - -.fa-mortar-pestle::before { - content: "\f5a7"; } - -.fa-road-barrier::before { - content: "\e562"; } - -.fa-school::before { - content: "\f549"; } - -.fa-igloo::before { - content: "\f7ae"; } - -.fa-joint::before { - content: "\f595"; } - -.fa-angle-right::before { - content: "\f105"; } - -.fa-horse::before { - content: "\f6f0"; } - -.fa-q::before { - content: "\51"; } - -.fa-g::before { - content: "\47"; } - -.fa-notes-medical::before { - content: "\f481"; } - -.fa-temperature-half::before { - content: "\f2c9"; } - -.fa-temperature-2::before { - content: "\f2c9"; } - -.fa-thermometer-2::before { - content: "\f2c9"; } - -.fa-thermometer-half::before { - content: "\f2c9"; } - -.fa-dong-sign::before { - content: "\e169"; } - -.fa-capsules::before { - content: "\f46b"; } - -.fa-poo-storm::before { - content: "\f75a"; } - -.fa-poo-bolt::before { - content: "\f75a"; } - -.fa-face-frown-open::before { - content: "\f57a"; } - -.fa-frown-open::before { - content: "\f57a"; } - -.fa-hand-point-up::before { - content: "\f0a6"; } - -.fa-money-bill::before { - content: "\f0d6"; } - -.fa-bookmark::before { - content: "\f02e"; } - -.fa-align-justify::before { - content: "\f039"; } - -.fa-umbrella-beach::before { - content: "\f5ca"; } - -.fa-helmet-un::before { - content: "\e503"; } - -.fa-bullseye::before { - content: "\f140"; } - -.fa-bacon::before { - content: "\f7e5"; } - -.fa-hand-point-down::before { - content: "\f0a7"; } - -.fa-arrow-up-from-bracket::before { - content: "\e09a"; } - -.fa-folder::before { - content: "\f07b"; } - -.fa-folder-blank::before { - content: "\f07b"; } - -.fa-file-waveform::before { - content: "\f478"; } - -.fa-file-medical-alt::before { - content: "\f478"; } - -.fa-radiation::before { - content: "\f7b9"; } - -.fa-chart-simple::before { - content: "\e473"; } - -.fa-mars-stroke::before { - content: "\f229"; } - -.fa-vial::before { - content: "\f492"; } - -.fa-gauge::before { - content: "\f624"; } - -.fa-dashboard::before { - content: "\f624"; } - -.fa-gauge-med::before { - content: "\f624"; } - -.fa-tachometer-alt-average::before { - content: "\f624"; } - -.fa-wand-magic-sparkles::before { - content: "\e2ca"; } - -.fa-magic-wand-sparkles::before { - content: "\e2ca"; } - -.fa-e::before { - content: "\45"; } - -.fa-pen-clip::before { - content: "\f305"; } - -.fa-pen-alt::before { - content: "\f305"; } - -.fa-bridge-circle-exclamation::before { - content: "\e4ca"; } - -.fa-user::before { - content: "\f007"; } - -.fa-school-circle-check::before { - content: "\e56b"; } - -.fa-dumpster::before { - content: "\f793"; } - -.fa-van-shuttle::before { - content: "\f5b6"; } - -.fa-shuttle-van::before { - content: "\f5b6"; } - -.fa-building-user::before { - content: "\e4da"; } - -.fa-square-caret-left::before { - content: "\f191"; } - -.fa-caret-square-left::before { - content: "\f191"; } - -.fa-highlighter::before { - content: "\f591"; } - -.fa-key::before { - content: "\f084"; } - -.fa-bullhorn::before { - content: "\f0a1"; } - -.fa-globe::before { - content: "\f0ac"; } - -.fa-synagogue::before { - content: "\f69b"; } - -.fa-person-half-dress::before { - content: "\e548"; } - -.fa-road-bridge::before { - content: "\e563"; } - -.fa-location-arrow::before { - content: "\f124"; } - -.fa-c::before { - content: "\43"; } - -.fa-tablet-button::before { - content: "\f10a"; } - -.fa-building-lock::before { - content: "\e4d6"; } - -.fa-pizza-slice::before { - content: "\f818"; } - -.fa-money-bill-wave::before { - content: "\f53a"; } - -.fa-chart-area::before { - content: "\f1fe"; } - -.fa-area-chart::before { - content: "\f1fe"; } - -.fa-house-flag::before { - content: "\e50d"; } - -.fa-person-circle-minus::before { - content: "\e540"; } - -.fa-ban::before { - content: "\f05e"; } - -.fa-cancel::before { - content: "\f05e"; } - -.fa-camera-rotate::before { - content: "\e0d8"; } - -.fa-spray-can-sparkles::before { - content: "\f5d0"; } - -.fa-air-freshener::before { - content: "\f5d0"; } - -.fa-star::before { - content: "\f005"; } - -.fa-repeat::before { - content: "\f363"; } - -.fa-cross::before { - content: "\f654"; } - -.fa-box::before { - content: "\f466"; } - -.fa-venus-mars::before { - content: "\f228"; } - -.fa-arrow-pointer::before { - content: "\f245"; } - -.fa-mouse-pointer::before { - content: "\f245"; } - -.fa-maximize::before { - content: "\f31e"; } - -.fa-expand-arrows-alt::before { - content: "\f31e"; } - -.fa-charging-station::before { - content: "\f5e7"; } - -.fa-shapes::before { - content: "\f61f"; } - -.fa-triangle-circle-square::before { - content: "\f61f"; } - -.fa-shuffle::before { - content: "\f074"; } - -.fa-random::before { - content: "\f074"; } - -.fa-person-running::before { - content: "\f70c"; } - -.fa-running::before { - content: "\f70c"; } - -.fa-mobile-retro::before { - content: "\e527"; } - -.fa-grip-lines-vertical::before { - content: "\f7a5"; } - -.fa-spider::before { - content: "\f717"; } - -.fa-hands-bound::before { - content: "\e4f9"; } - -.fa-file-invoice-dollar::before { - content: "\f571"; } - -.fa-plane-circle-exclamation::before { - content: "\e556"; } - -.fa-x-ray::before { - content: "\f497"; } - -.fa-spell-check::before { - content: "\f891"; } - -.fa-slash::before { - content: "\f715"; } - -.fa-computer-mouse::before { - content: "\f8cc"; } - -.fa-mouse::before { - content: "\f8cc"; } - -.fa-arrow-right-to-bracket::before { - content: "\f090"; } - -.fa-sign-in::before { - content: "\f090"; } - -.fa-shop-slash::before { - content: "\e070"; } - -.fa-store-alt-slash::before { - content: "\e070"; } - -.fa-server::before { - content: "\f233"; } - -.fa-virus-covid-slash::before { - content: "\e4a9"; } - -.fa-shop-lock::before { - content: "\e4a5"; } - -.fa-hourglass-start::before { - content: "\f251"; } - -.fa-hourglass-1::before { - content: "\f251"; } - -.fa-blender-phone::before { - content: "\f6b6"; } - -.fa-building-wheat::before { - content: "\e4db"; } - -.fa-person-breastfeeding::before { - content: "\e53a"; } - -.fa-right-to-bracket::before { - content: "\f2f6"; } - -.fa-sign-in-alt::before { - content: "\f2f6"; } - -.fa-venus::before { - content: "\f221"; } - -.fa-passport::before { - content: "\f5ab"; } - -.fa-heart-pulse::before { - content: "\f21e"; } - -.fa-heartbeat::before { - content: "\f21e"; } - -.fa-people-carry-box::before { - content: "\f4ce"; } - -.fa-people-carry::before { - content: "\f4ce"; } - -.fa-temperature-high::before { - content: "\f769"; } - -.fa-microchip::before { - content: "\f2db"; } - -.fa-crown::before { - content: "\f521"; } - -.fa-weight-hanging::before { - content: "\f5cd"; } - -.fa-xmarks-lines::before { - content: "\e59a"; } - -.fa-file-prescription::before { - content: "\f572"; } - -.fa-weight-scale::before { - content: "\f496"; } - -.fa-weight::before { - content: "\f496"; } - -.fa-user-group::before { - content: "\f500"; } - -.fa-user-friends::before { - content: "\f500"; } - -.fa-arrow-up-a-z::before { - content: "\f15e"; } - -.fa-sort-alpha-up::before { - content: "\f15e"; } - -.fa-chess-knight::before { - content: "\f441"; } - -.fa-face-laugh-squint::before { - content: "\f59b"; } - -.fa-laugh-squint::before { - content: "\f59b"; } - -.fa-wheelchair::before { - content: "\f193"; } - -.fa-circle-arrow-up::before { - content: "\f0aa"; } - -.fa-arrow-circle-up::before { - content: "\f0aa"; } - -.fa-toggle-on::before { - content: "\f205"; } - -.fa-person-walking::before { - content: "\f554"; } - -.fa-walking::before { - content: "\f554"; } - -.fa-l::before { - content: "\4c"; } - -.fa-fire::before { - content: "\f06d"; } - -.fa-bed-pulse::before { - content: "\f487"; } - -.fa-procedures::before { - content: "\f487"; } - -.fa-shuttle-space::before { - content: "\f197"; } - -.fa-space-shuttle::before { - content: "\f197"; } - -.fa-face-laugh::before { - content: "\f599"; } - -.fa-laugh::before { - content: "\f599"; } - -.fa-folder-open::before { - content: "\f07c"; } - -.fa-heart-circle-plus::before { - content: "\e500"; } - -.fa-code-fork::before { - content: "\e13b"; } - -.fa-city::before { - content: "\f64f"; } - -.fa-microphone-lines::before { - content: "\f3c9"; } - -.fa-microphone-alt::before { - content: "\f3c9"; } - -.fa-pepper-hot::before { - content: "\f816"; } - -.fa-unlock::before { - content: "\f09c"; } - -.fa-colon-sign::before { - content: "\e140"; } - -.fa-headset::before { - content: "\f590"; } - -.fa-store-slash::before { - content: "\e071"; } - -.fa-road-circle-xmark::before { - content: "\e566"; } - -.fa-user-minus::before { - content: "\f503"; } - -.fa-mars-stroke-up::before { - content: "\f22a"; } - -.fa-mars-stroke-v::before { - content: "\f22a"; } - -.fa-champagne-glasses::before { - content: "\f79f"; } - -.fa-glass-cheers::before { - content: "\f79f"; } - -.fa-clipboard::before { - content: "\f328"; } - -.fa-house-circle-exclamation::before { - content: "\e50a"; } - -.fa-file-arrow-up::before { - content: "\f574"; } - -.fa-file-upload::before { - content: "\f574"; } - -.fa-wifi::before { - content: "\f1eb"; } - -.fa-wifi-3::before { - content: "\f1eb"; } - -.fa-wifi-strong::before { - content: "\f1eb"; } - -.fa-bath::before { - content: "\f2cd"; } - -.fa-bathtub::before { - content: "\f2cd"; } - -.fa-underline::before { - content: "\f0cd"; } - -.fa-user-pen::before { - content: "\f4ff"; } - -.fa-user-edit::before { - content: "\f4ff"; } - -.fa-signature::before { - content: "\f5b7"; } - -.fa-stroopwafel::before { - content: "\f551"; } - -.fa-bold::before { - content: "\f032"; } - -.fa-anchor-lock::before { - content: "\e4ad"; } - -.fa-building-ngo::before { - content: "\e4d7"; } - -.fa-manat-sign::before { - content: "\e1d5"; } - -.fa-not-equal::before { - content: "\f53e"; } - -.fa-border-top-left::before { - content: "\f853"; } - -.fa-border-style::before { - content: "\f853"; } - -.fa-map-location-dot::before { - content: "\f5a0"; } - -.fa-map-marked-alt::before { - content: "\f5a0"; } - -.fa-jedi::before { - content: "\f669"; } - -.fa-square-poll-vertical::before { - content: "\f681"; } - -.fa-poll::before { - content: "\f681"; } - -.fa-mug-hot::before { - content: "\f7b6"; } - -.fa-car-battery::before { - content: "\f5df"; } - -.fa-battery-car::before { - content: "\f5df"; } - -.fa-gift::before { - content: "\f06b"; } - -.fa-dice-two::before { - content: "\f528"; } - -.fa-chess-queen::before { - content: "\f445"; } - -.fa-glasses::before { - content: "\f530"; } - -.fa-chess-board::before { - content: "\f43c"; } - -.fa-building-circle-check::before { - content: "\e4d2"; } - -.fa-person-chalkboard::before { - content: "\e53d"; } - -.fa-mars-stroke-right::before { - content: "\f22b"; } - -.fa-mars-stroke-h::before { - content: "\f22b"; } - -.fa-hand-back-fist::before { - content: "\f255"; } - -.fa-hand-rock::before { - content: "\f255"; } - -.fa-square-caret-up::before { - content: "\f151"; } - -.fa-caret-square-up::before { - content: "\f151"; } - -.fa-cloud-showers-water::before { - content: "\e4e4"; } - -.fa-chart-bar::before { - content: "\f080"; } - -.fa-bar-chart::before { - content: "\f080"; } - -.fa-hands-bubbles::before { - content: "\e05e"; } - -.fa-hands-wash::before { - content: "\e05e"; } - -.fa-less-than-equal::before { - content: "\f537"; } - -.fa-train::before { - content: "\f238"; } - -.fa-eye-low-vision::before { - content: "\f2a8"; } - -.fa-low-vision::before { - content: "\f2a8"; } - -.fa-crow::before { - content: "\f520"; } - -.fa-sailboat::before { - content: "\e445"; } - -.fa-window-restore::before { - content: "\f2d2"; } - -.fa-square-plus::before { - content: "\f0fe"; } - -.fa-plus-square::before { - content: "\f0fe"; } - -.fa-torii-gate::before { - content: "\f6a1"; } - -.fa-frog::before { - content: "\f52e"; } - -.fa-bucket::before { - content: "\e4cf"; } - -.fa-image::before { - content: "\f03e"; } - -.fa-microphone::before { - content: "\f130"; } - -.fa-cow::before { - content: "\f6c8"; } - -.fa-caret-up::before { - content: "\f0d8"; } - -.fa-screwdriver::before { - content: "\f54a"; } - -.fa-folder-closed::before { - content: "\e185"; } - -.fa-house-tsunami::before { - content: "\e515"; } - -.fa-square-nfi::before { - content: "\e576"; } - -.fa-arrow-up-from-ground-water::before { - content: "\e4b5"; } - -.fa-martini-glass::before { - content: "\f57b"; } - -.fa-glass-martini-alt::before { - content: "\f57b"; } - -.fa-rotate-left::before { - content: "\f2ea"; } - -.fa-rotate-back::before { - content: "\f2ea"; } - -.fa-rotate-backward::before { - content: "\f2ea"; } - -.fa-undo-alt::before { - content: "\f2ea"; } - -.fa-table-columns::before { - content: "\f0db"; } - -.fa-columns::before { - content: "\f0db"; } - -.fa-lemon::before { - content: "\f094"; } - -.fa-head-side-mask::before { - content: "\e063"; } - -.fa-handshake::before { - content: "\f2b5"; } - -.fa-gem::before { - content: "\f3a5"; } - -.fa-dolly::before { - content: "\f472"; } - -.fa-dolly-box::before { - content: "\f472"; } - -.fa-smoking::before { - content: "\f48d"; } - -.fa-minimize::before { - content: "\f78c"; } - -.fa-compress-arrows-alt::before { - content: "\f78c"; } - -.fa-monument::before { - content: "\f5a6"; } - -.fa-snowplow::before { - content: "\f7d2"; } - -.fa-angles-right::before { - content: "\f101"; } - -.fa-angle-double-right::before { - content: "\f101"; } - -.fa-cannabis::before { - content: "\f55f"; } - -.fa-circle-play::before { - content: "\f144"; } - -.fa-play-circle::before { - content: "\f144"; } - -.fa-tablets::before { - content: "\f490"; } - -.fa-ethernet::before { - content: "\f796"; } - -.fa-euro-sign::before { - content: "\f153"; } - -.fa-eur::before { - content: "\f153"; } - -.fa-euro::before { - content: "\f153"; } - -.fa-chair::before { - content: "\f6c0"; } - -.fa-circle-check::before { - content: "\f058"; } - -.fa-check-circle::before { - content: "\f058"; } - -.fa-circle-stop::before { - content: "\f28d"; } - -.fa-stop-circle::before { - content: "\f28d"; } - -.fa-compass-drafting::before { - content: "\f568"; } - -.fa-drafting-compass::before { - content: "\f568"; } - -.fa-plate-wheat::before { - content: "\e55a"; } - -.fa-icicles::before { - content: "\f7ad"; } - -.fa-person-shelter::before { - content: "\e54f"; } - -.fa-neuter::before { - content: "\f22c"; } - -.fa-id-badge::before { - content: "\f2c1"; } - -.fa-marker::before { - content: "\f5a1"; } - -.fa-face-laugh-beam::before { - content: "\f59a"; } - -.fa-laugh-beam::before { - content: "\f59a"; } - -.fa-helicopter-symbol::before { - content: "\e502"; } - -.fa-universal-access::before { - content: "\f29a"; } - -.fa-circle-chevron-up::before { - content: "\f139"; } - -.fa-chevron-circle-up::before { - content: "\f139"; } - -.fa-lari-sign::before { - content: "\e1c8"; } - -.fa-volcano::before { - content: "\f770"; } - -.fa-person-walking-dashed-line-arrow-right::before { - content: "\e553"; } - -.fa-sterling-sign::before { - content: "\f154"; } - -.fa-gbp::before { - content: "\f154"; } - -.fa-pound-sign::before { - content: "\f154"; } - -.fa-viruses::before { - content: "\e076"; } - -.fa-square-person-confined::before { - content: "\e577"; } - -.fa-user-tie::before { - content: "\f508"; } - -.fa-arrow-down-long::before { - content: "\f175"; } - -.fa-long-arrow-down::before { - content: "\f175"; } - -.fa-tent-arrow-down-to-line::before { - content: "\e57e"; } - -.fa-certificate::before { - content: "\f0a3"; } - -.fa-reply-all::before { - content: "\f122"; } - -.fa-mail-reply-all::before { - content: "\f122"; } - -.fa-suitcase::before { - content: "\f0f2"; } - -.fa-person-skating::before { - content: "\f7c5"; } - -.fa-skating::before { - content: "\f7c5"; } - -.fa-filter-circle-dollar::before { - content: "\f662"; } - -.fa-funnel-dollar::before { - content: "\f662"; } - -.fa-camera-retro::before { - content: "\f083"; } - -.fa-circle-arrow-down::before { - content: "\f0ab"; } - -.fa-arrow-circle-down::before { - content: "\f0ab"; } - -.fa-file-import::before { - content: "\f56f"; } - -.fa-arrow-right-to-file::before { - content: "\f56f"; } - -.fa-square-arrow-up-right::before { - content: "\f14c"; } - -.fa-external-link-square::before { - content: "\f14c"; } - -.fa-box-open::before { - content: "\f49e"; } - -.fa-scroll::before { - content: "\f70e"; } - -.fa-spa::before { - content: "\f5bb"; } - -.fa-location-pin-lock::before { - content: "\e51f"; } - -.fa-pause::before { - content: "\f04c"; } - -.fa-hill-avalanche::before { - content: "\e507"; } - -.fa-temperature-empty::before { - content: "\f2cb"; } - -.fa-temperature-0::before { - content: "\f2cb"; } - -.fa-thermometer-0::before { - content: "\f2cb"; } - -.fa-thermometer-empty::before { - content: "\f2cb"; } - -.fa-bomb::before { - content: "\f1e2"; } - -.fa-registered::before { - content: "\f25d"; } - -.fa-address-card::before { - content: "\f2bb"; } - -.fa-contact-card::before { - content: "\f2bb"; } - -.fa-vcard::before { - content: "\f2bb"; } - -.fa-scale-unbalanced-flip::before { - content: "\f516"; } - -.fa-balance-scale-right::before { - content: "\f516"; } - -.fa-subscript::before { - content: "\f12c"; } - -.fa-diamond-turn-right::before { - content: "\f5eb"; } - -.fa-directions::before { - content: "\f5eb"; } - -.fa-burst::before { - content: "\e4dc"; } - -.fa-house-laptop::before { - content: "\e066"; } - -.fa-laptop-house::before { - content: "\e066"; } - -.fa-face-tired::before { - content: "\f5c8"; } - -.fa-tired::before { - content: "\f5c8"; } - -.fa-money-bills::before { - content: "\e1f3"; } - -.fa-smog::before { - content: "\f75f"; } - -.fa-crutch::before { - content: "\f7f7"; } - -.fa-cloud-arrow-up::before { - content: "\f0ee"; } - -.fa-cloud-upload::before { - content: "\f0ee"; } - -.fa-cloud-upload-alt::before { - content: "\f0ee"; } - -.fa-palette::before { - content: "\f53f"; } - -.fa-arrows-turn-right::before { - content: "\e4c0"; } - -.fa-vest::before { - content: "\e085"; } - -.fa-ferry::before { - content: "\e4ea"; } - -.fa-arrows-down-to-people::before { - content: "\e4b9"; } - -.fa-seedling::before { - content: "\f4d8"; } - -.fa-sprout::before { - content: "\f4d8"; } - -.fa-left-right::before { - content: "\f337"; } - -.fa-arrows-alt-h::before { - content: "\f337"; } - -.fa-boxes-packing::before { - content: "\e4c7"; } - -.fa-circle-arrow-left::before { - content: "\f0a8"; } - -.fa-arrow-circle-left::before { - content: "\f0a8"; } - -.fa-group-arrows-rotate::before { - content: "\e4f6"; } - -.fa-bowl-food::before { - content: "\e4c6"; } - -.fa-candy-cane::before { - content: "\f786"; } - -.fa-arrow-down-wide-short::before { - content: "\f160"; } - -.fa-sort-amount-asc::before { - content: "\f160"; } - -.fa-sort-amount-down::before { - content: "\f160"; } - -.fa-cloud-bolt::before { - content: "\f76c"; } - -.fa-thunderstorm::before { - content: "\f76c"; } - -.fa-text-slash::before { - content: "\f87d"; } - -.fa-remove-format::before { - content: "\f87d"; } - -.fa-face-smile-wink::before { - content: "\f4da"; } - -.fa-smile-wink::before { - content: "\f4da"; } - -.fa-file-word::before { - content: "\f1c2"; } - -.fa-file-powerpoint::before { - content: "\f1c4"; } - -.fa-arrows-left-right::before { - content: "\f07e"; } - -.fa-arrows-h::before { - content: "\f07e"; } - -.fa-house-lock::before { - content: "\e510"; } - -.fa-cloud-arrow-down::before { - content: "\f0ed"; } - -.fa-cloud-download::before { - content: "\f0ed"; } - -.fa-cloud-download-alt::before { - content: "\f0ed"; } - -.fa-children::before { - content: "\e4e1"; } - -.fa-chalkboard::before { - content: "\f51b"; } - -.fa-blackboard::before { - content: "\f51b"; } - -.fa-user-large-slash::before { - content: "\f4fa"; } - -.fa-user-alt-slash::before { - content: "\f4fa"; } - -.fa-envelope-open::before { - content: "\f2b6"; } - -.fa-handshake-simple-slash::before { - content: "\e05f"; } - -.fa-handshake-alt-slash::before { - content: "\e05f"; } - -.fa-mattress-pillow::before { - content: "\e525"; } - -.fa-guarani-sign::before { - content: "\e19a"; } - -.fa-arrows-rotate::before { - content: "\f021"; } - -.fa-refresh::before { - content: "\f021"; } - -.fa-sync::before { - content: "\f021"; } - -.fa-fire-extinguisher::before { - content: "\f134"; } - -.fa-cruzeiro-sign::before { - content: "\e152"; } - -.fa-greater-than-equal::before { - content: "\f532"; } - -.fa-shield-halved::before { - content: "\f3ed"; } - -.fa-shield-alt::before { - content: "\f3ed"; } - -.fa-book-atlas::before { - content: "\f558"; } - -.fa-atlas::before { - content: "\f558"; } - -.fa-virus::before { - content: "\e074"; } - -.fa-envelope-circle-check::before { - content: "\e4e8"; } - -.fa-layer-group::before { - content: "\f5fd"; } - -.fa-arrows-to-dot::before { - content: "\e4be"; } - -.fa-archway::before { - content: "\f557"; } - -.fa-heart-circle-check::before { - content: "\e4fd"; } - -.fa-house-chimney-crack::before { - content: "\f6f1"; } - -.fa-house-damage::before { - content: "\f6f1"; } - -.fa-file-zipper::before { - content: "\f1c6"; } - -.fa-file-archive::before { - content: "\f1c6"; } - -.fa-square::before { - content: "\f0c8"; } - -.fa-martini-glass-empty::before { - content: "\f000"; } - -.fa-glass-martini::before { - content: "\f000"; } - -.fa-couch::before { - content: "\f4b8"; } - -.fa-cedi-sign::before { - content: "\e0df"; } - -.fa-italic::before { - content: "\f033"; } - -.fa-table-cells-column-lock::before { - content: "\e678"; } - -.fa-church::before { - content: "\f51d"; } - -.fa-comments-dollar::before { - content: "\f653"; } - -.fa-democrat::before { - content: "\f747"; } - -.fa-z::before { - content: "\5a"; } - -.fa-person-skiing::before { - content: "\f7c9"; } - -.fa-skiing::before { - content: "\f7c9"; } - -.fa-road-lock::before { - content: "\e567"; } - -.fa-a::before { - content: "\41"; } - -.fa-temperature-arrow-down::before { - content: "\e03f"; } - -.fa-temperature-down::before { - content: "\e03f"; } - -.fa-feather-pointed::before { - content: "\f56b"; } - -.fa-feather-alt::before { - content: "\f56b"; } - -.fa-p::before { - content: "\50"; } - -.fa-snowflake::before { - content: "\f2dc"; } - -.fa-newspaper::before { - content: "\f1ea"; } - -.fa-rectangle-ad::before { - content: "\f641"; } - -.fa-ad::before { - content: "\f641"; } - -.fa-circle-arrow-right::before { - content: "\f0a9"; } - -.fa-arrow-circle-right::before { - content: "\f0a9"; } - -.fa-filter-circle-xmark::before { - content: "\e17b"; } - -.fa-locust::before { - content: "\e520"; } - -.fa-sort::before { - content: "\f0dc"; } - -.fa-unsorted::before { - content: "\f0dc"; } - -.fa-list-ol::before { - content: "\f0cb"; } - -.fa-list-1-2::before { - content: "\f0cb"; } - -.fa-list-numeric::before { - content: "\f0cb"; } - -.fa-person-dress-burst::before { - content: "\e544"; } - -.fa-money-check-dollar::before { - content: "\f53d"; } - -.fa-money-check-alt::before { - content: "\f53d"; } - -.fa-vector-square::before { - content: "\f5cb"; } - -.fa-bread-slice::before { - content: "\f7ec"; } - -.fa-language::before { - content: "\f1ab"; } - -.fa-face-kiss-wink-heart::before { - content: "\f598"; } - -.fa-kiss-wink-heart::before { - content: "\f598"; } - -.fa-filter::before { - content: "\f0b0"; } - -.fa-question::before { - content: "\3f"; } - -.fa-file-signature::before { - content: "\f573"; } - -.fa-up-down-left-right::before { - content: "\f0b2"; } - -.fa-arrows-alt::before { - content: "\f0b2"; } - -.fa-house-chimney-user::before { - content: "\e065"; } - -.fa-hand-holding-heart::before { - content: "\f4be"; } - -.fa-puzzle-piece::before { - content: "\f12e"; } - -.fa-money-check::before { - content: "\f53c"; } - -.fa-star-half-stroke::before { - content: "\f5c0"; } - -.fa-star-half-alt::before { - content: "\f5c0"; } - -.fa-code::before { - content: "\f121"; } - -.fa-whiskey-glass::before { - content: "\f7a0"; } - -.fa-glass-whiskey::before { - content: "\f7a0"; } - -.fa-building-circle-exclamation::before { - content: "\e4d3"; } - -.fa-magnifying-glass-chart::before { - content: "\e522"; } - -.fa-arrow-up-right-from-square::before { - content: "\f08e"; } - -.fa-external-link::before { - content: "\f08e"; } - -.fa-cubes-stacked::before { - content: "\e4e6"; } - -.fa-won-sign::before { - content: "\f159"; } - -.fa-krw::before { - content: "\f159"; } - -.fa-won::before { - content: "\f159"; } - -.fa-virus-covid::before { - content: "\e4a8"; } - -.fa-austral-sign::before { - content: "\e0a9"; } - -.fa-f::before { - content: "\46"; } - -.fa-leaf::before { - content: "\f06c"; } - -.fa-road::before { - content: "\f018"; } - -.fa-taxi::before { - content: "\f1ba"; } - -.fa-cab::before { - content: "\f1ba"; } - -.fa-person-circle-plus::before { - content: "\e541"; } - -.fa-chart-pie::before { - content: "\f200"; } - -.fa-pie-chart::before { - content: "\f200"; } - -.fa-bolt-lightning::before { - content: "\e0b7"; } - -.fa-sack-xmark::before { - content: "\e56a"; } - -.fa-file-excel::before { - content: "\f1c3"; } - -.fa-file-contract::before { - content: "\f56c"; } - -.fa-fish-fins::before { - content: "\e4f2"; } - -.fa-building-flag::before { - content: "\e4d5"; } - -.fa-face-grin-beam::before { - content: "\f582"; } - -.fa-grin-beam::before { - content: "\f582"; } - -.fa-object-ungroup::before { - content: "\f248"; } - -.fa-poop::before { - content: "\f619"; } - -.fa-location-pin::before { - content: "\f041"; } - -.fa-map-marker::before { - content: "\f041"; } - -.fa-kaaba::before { - content: "\f66b"; } - -.fa-toilet-paper::before { - content: "\f71e"; } - -.fa-helmet-safety::before { - content: "\f807"; } - -.fa-hard-hat::before { - content: "\f807"; } - -.fa-hat-hard::before { - content: "\f807"; } - -.fa-eject::before { - content: "\f052"; } - -.fa-circle-right::before { - content: "\f35a"; } - -.fa-arrow-alt-circle-right::before { - content: "\f35a"; } - -.fa-plane-circle-check::before { - content: "\e555"; } - -.fa-face-rolling-eyes::before { - content: "\f5a5"; } - -.fa-meh-rolling-eyes::before { - content: "\f5a5"; } - -.fa-object-group::before { - content: "\f247"; } - -.fa-chart-line::before { - content: "\f201"; } - -.fa-line-chart::before { - content: "\f201"; } - -.fa-mask-ventilator::before { - content: "\e524"; } - -.fa-arrow-right::before { - content: "\f061"; } - -.fa-signs-post::before { - content: "\f277"; } - -.fa-map-signs::before { - content: "\f277"; } - -.fa-cash-register::before { - content: "\f788"; } - -.fa-person-circle-question::before { - content: "\e542"; } - -.fa-h::before { - content: "\48"; } - -.fa-tarp::before { - content: "\e57b"; } - -.fa-screwdriver-wrench::before { - content: "\f7d9"; } - -.fa-tools::before { - content: "\f7d9"; } - -.fa-arrows-to-eye::before { - content: "\e4bf"; } - -.fa-plug-circle-bolt::before { - content: "\e55b"; } - -.fa-heart::before { - content: "\f004"; } - -.fa-mars-and-venus::before { - content: "\f224"; } - -.fa-house-user::before { - content: "\e1b0"; } - -.fa-home-user::before { - content: "\e1b0"; } - -.fa-dumpster-fire::before { - content: "\f794"; } - -.fa-house-crack::before { - content: "\e3b1"; } - -.fa-martini-glass-citrus::before { - content: "\f561"; } - -.fa-cocktail::before { - content: "\f561"; } - -.fa-face-surprise::before { - content: "\f5c2"; } - -.fa-surprise::before { - content: "\f5c2"; } - -.fa-bottle-water::before { - content: "\e4c5"; } - -.fa-circle-pause::before { - content: "\f28b"; } - -.fa-pause-circle::before { - content: "\f28b"; } - -.fa-toilet-paper-slash::before { - content: "\e072"; } - -.fa-apple-whole::before { - content: "\f5d1"; } - -.fa-apple-alt::before { - content: "\f5d1"; } - -.fa-kitchen-set::before { - content: "\e51a"; } - -.fa-r::before { - content: "\52"; } - -.fa-temperature-quarter::before { - content: "\f2ca"; } - -.fa-temperature-1::before { - content: "\f2ca"; } - -.fa-thermometer-1::before { - content: "\f2ca"; } - -.fa-thermometer-quarter::before { - content: "\f2ca"; } - -.fa-cube::before { - content: "\f1b2"; } - -.fa-bitcoin-sign::before { - content: "\e0b4"; } - -.fa-shield-dog::before { - content: "\e573"; } - -.fa-solar-panel::before { - content: "\f5ba"; } - -.fa-lock-open::before { - content: "\f3c1"; } - -.fa-elevator::before { - content: "\e16d"; } - -.fa-money-bill-transfer::before { - content: "\e528"; } - -.fa-money-bill-trend-up::before { - content: "\e529"; } - -.fa-house-flood-water-circle-arrow-right::before { - content: "\e50f"; } - -.fa-square-poll-horizontal::before { - content: "\f682"; } - -.fa-poll-h::before { - content: "\f682"; } - -.fa-circle::before { - content: "\f111"; } - -.fa-backward-fast::before { - content: "\f049"; } - -.fa-fast-backward::before { - content: "\f049"; } - -.fa-recycle::before { - content: "\f1b8"; } - -.fa-user-astronaut::before { - content: "\f4fb"; } - -.fa-plane-slash::before { - content: "\e069"; } - -.fa-trademark::before { - content: "\f25c"; } - -.fa-basketball::before { - content: "\f434"; } - -.fa-basketball-ball::before { - content: "\f434"; } - -.fa-satellite-dish::before { - content: "\f7c0"; } - -.fa-circle-up::before { - content: "\f35b"; } - -.fa-arrow-alt-circle-up::before { - content: "\f35b"; } - -.fa-mobile-screen-button::before { - content: "\f3cd"; } - -.fa-mobile-alt::before { - content: "\f3cd"; } - -.fa-volume-high::before { - content: "\f028"; } - -.fa-volume-up::before { - content: "\f028"; } - -.fa-users-rays::before { - content: "\e593"; } - -.fa-wallet::before { - content: "\f555"; } - -.fa-clipboard-check::before { - content: "\f46c"; } - -.fa-file-audio::before { - content: "\f1c7"; } - -.fa-burger::before { - content: "\f805"; } - -.fa-hamburger::before { - content: "\f805"; } - -.fa-wrench::before { - content: "\f0ad"; } - -.fa-bugs::before { - content: "\e4d0"; } - -.fa-rupee-sign::before { - content: "\f156"; } - -.fa-rupee::before { - content: "\f156"; } - -.fa-file-image::before { - content: "\f1c5"; } - -.fa-circle-question::before { - content: "\f059"; } - -.fa-question-circle::before { - content: "\f059"; } - -.fa-plane-departure::before { - content: "\f5b0"; } - -.fa-handshake-slash::before { - content: "\e060"; } - -.fa-book-bookmark::before { - content: "\e0bb"; } - -.fa-code-branch::before { - content: "\f126"; } - -.fa-hat-cowboy::before { - content: "\f8c0"; } - -.fa-bridge::before { - content: "\e4c8"; } - -.fa-phone-flip::before { - content: "\f879"; } - -.fa-phone-alt::before { - content: "\f879"; } - -.fa-truck-front::before { - content: "\e2b7"; } - -.fa-cat::before { - content: "\f6be"; } - -.fa-anchor-circle-exclamation::before { - content: "\e4ab"; } - -.fa-truck-field::before { - content: "\e58d"; } - -.fa-route::before { - content: "\f4d7"; } - -.fa-clipboard-question::before { - content: "\e4e3"; } - -.fa-panorama::before { - content: "\e209"; } - -.fa-comment-medical::before { - content: "\f7f5"; } - -.fa-teeth-open::before { - content: "\f62f"; } - -.fa-file-circle-minus::before { - content: "\e4ed"; } - -.fa-tags::before { - content: "\f02c"; } - -.fa-wine-glass::before { - content: "\f4e3"; } - -.fa-forward-fast::before { - content: "\f050"; } - -.fa-fast-forward::before { - content: "\f050"; } - -.fa-face-meh-blank::before { - content: "\f5a4"; } - -.fa-meh-blank::before { - content: "\f5a4"; } - -.fa-square-parking::before { - content: "\f540"; } - -.fa-parking::before { - content: "\f540"; } - -.fa-house-signal::before { - content: "\e012"; } - -.fa-bars-progress::before { - content: "\f828"; } - -.fa-tasks-alt::before { - content: "\f828"; } - -.fa-faucet-drip::before { - content: "\e006"; } - -.fa-cart-flatbed::before { - content: "\f474"; } - -.fa-dolly-flatbed::before { - content: "\f474"; } - -.fa-ban-smoking::before { - content: "\f54d"; } - -.fa-smoking-ban::before { - content: "\f54d"; } - -.fa-terminal::before { - content: "\f120"; } - -.fa-mobile-button::before { - content: "\f10b"; } - -.fa-house-medical-flag::before { - content: "\e514"; } - -.fa-basket-shopping::before { - content: "\f291"; } - -.fa-shopping-basket::before { - content: "\f291"; } - -.fa-tape::before { - content: "\f4db"; } - -.fa-bus-simple::before { - content: "\f55e"; } - -.fa-bus-alt::before { - content: "\f55e"; } - -.fa-eye::before { - content: "\f06e"; } - -.fa-face-sad-cry::before { - content: "\f5b3"; } - -.fa-sad-cry::before { - content: "\f5b3"; } - -.fa-audio-description::before { - content: "\f29e"; } - -.fa-person-military-to-person::before { - content: "\e54c"; } - -.fa-file-shield::before { - content: "\e4f0"; } - -.fa-user-slash::before { - content: "\f506"; } - -.fa-pen::before { - content: "\f304"; } - -.fa-tower-observation::before { - content: "\e586"; } - -.fa-file-code::before { - content: "\f1c9"; } - -.fa-signal::before { - content: "\f012"; } - -.fa-signal-5::before { - content: "\f012"; } - -.fa-signal-perfect::before { - content: "\f012"; } - -.fa-bus::before { - content: "\f207"; } - -.fa-heart-circle-xmark::before { - content: "\e501"; } - -.fa-house-chimney::before { - content: "\e3af"; } - -.fa-home-lg::before { - content: "\e3af"; } - -.fa-window-maximize::before { - content: "\f2d0"; } - -.fa-face-frown::before { - content: "\f119"; } - -.fa-frown::before { - content: "\f119"; } - -.fa-prescription::before { - content: "\f5b1"; } - -.fa-shop::before { - content: "\f54f"; } - -.fa-store-alt::before { - content: "\f54f"; } - -.fa-floppy-disk::before { - content: "\f0c7"; } - -.fa-save::before { - content: "\f0c7"; } - -.fa-vihara::before { - content: "\f6a7"; } - -.fa-scale-unbalanced::before { - content: "\f515"; } - -.fa-balance-scale-left::before { - content: "\f515"; } - -.fa-sort-up::before { - content: "\f0de"; } - -.fa-sort-asc::before { - content: "\f0de"; } - -.fa-comment-dots::before { - content: "\f4ad"; } - -.fa-commenting::before { - content: "\f4ad"; } - -.fa-plant-wilt::before { - content: "\e5aa"; } - -.fa-diamond::before { - content: "\f219"; } - -.fa-face-grin-squint::before { - content: "\f585"; } - -.fa-grin-squint::before { - content: "\f585"; } - -.fa-hand-holding-dollar::before { - content: "\f4c0"; } - -.fa-hand-holding-usd::before { - content: "\f4c0"; } - -.fa-bacterium::before { - content: "\e05a"; } - -.fa-hand-pointer::before { - content: "\f25a"; } - -.fa-drum-steelpan::before { - content: "\f56a"; } - -.fa-hand-scissors::before { - content: "\f257"; } - -.fa-hands-praying::before { - content: "\f684"; } - -.fa-praying-hands::before { - content: "\f684"; } - -.fa-arrow-rotate-right::before { - content: "\f01e"; } - -.fa-arrow-right-rotate::before { - content: "\f01e"; } - -.fa-arrow-rotate-forward::before { - content: "\f01e"; } - -.fa-redo::before { - content: "\f01e"; } - -.fa-biohazard::before { - content: "\f780"; } - -.fa-location-crosshairs::before { - content: "\f601"; } - -.fa-location::before { - content: "\f601"; } - -.fa-mars-double::before { - content: "\f227"; } - -.fa-child-dress::before { - content: "\e59c"; } - -.fa-users-between-lines::before { - content: "\e591"; } - -.fa-lungs-virus::before { - content: "\e067"; } - -.fa-face-grin-tears::before { - content: "\f588"; } - -.fa-grin-tears::before { - content: "\f588"; } - -.fa-phone::before { - content: "\f095"; } - -.fa-calendar-xmark::before { - content: "\f273"; } - -.fa-calendar-times::before { - content: "\f273"; } - -.fa-child-reaching::before { - content: "\e59d"; } - -.fa-head-side-virus::before { - content: "\e064"; } - -.fa-user-gear::before { - content: "\f4fe"; } - -.fa-user-cog::before { - content: "\f4fe"; } - -.fa-arrow-up-1-9::before { - content: "\f163"; } - -.fa-sort-numeric-up::before { - content: "\f163"; } - -.fa-door-closed::before { - content: "\f52a"; } - -.fa-shield-virus::before { - content: "\e06c"; } - -.fa-dice-six::before { - content: "\f526"; } - -.fa-mosquito-net::before { - content: "\e52c"; } - -.fa-bridge-water::before { - content: "\e4ce"; } - -.fa-person-booth::before { - content: "\f756"; } - -.fa-text-width::before { - content: "\f035"; } - -.fa-hat-wizard::before { - content: "\f6e8"; } - -.fa-pen-fancy::before { - content: "\f5ac"; } - -.fa-person-digging::before { - content: "\f85e"; } - -.fa-digging::before { - content: "\f85e"; } - -.fa-trash::before { - content: "\f1f8"; } - -.fa-gauge-simple::before { - content: "\f629"; } - -.fa-gauge-simple-med::before { - content: "\f629"; } - -.fa-tachometer-average::before { - content: "\f629"; } - -.fa-book-medical::before { - content: "\f7e6"; } - -.fa-poo::before { - content: "\f2fe"; } - -.fa-quote-right::before { - content: "\f10e"; } - -.fa-quote-right-alt::before { - content: "\f10e"; } - -.fa-shirt::before { - content: "\f553"; } - -.fa-t-shirt::before { - content: "\f553"; } - -.fa-tshirt::before { - content: "\f553"; } - -.fa-cubes::before { - content: "\f1b3"; } - -.fa-divide::before { - content: "\f529"; } - -.fa-tenge-sign::before { - content: "\f7d7"; } - -.fa-tenge::before { - content: "\f7d7"; } - -.fa-headphones::before { - content: "\f025"; } - -.fa-hands-holding::before { - content: "\f4c2"; } - -.fa-hands-clapping::before { - content: "\e1a8"; } - -.fa-republican::before { - content: "\f75e"; } - -.fa-arrow-left::before { - content: "\f060"; } - -.fa-person-circle-xmark::before { - content: "\e543"; } - -.fa-ruler::before { - content: "\f545"; } - -.fa-align-left::before { - content: "\f036"; } - -.fa-dice-d6::before { - content: "\f6d1"; } - -.fa-restroom::before { - content: "\f7bd"; } - -.fa-j::before { - content: "\4a"; } - -.fa-users-viewfinder::before { - content: "\e595"; } - -.fa-file-video::before { - content: "\f1c8"; } - -.fa-up-right-from-square::before { - content: "\f35d"; } - -.fa-external-link-alt::before { - content: "\f35d"; } - -.fa-table-cells::before { - content: "\f00a"; } - -.fa-th::before { - content: "\f00a"; } - -.fa-file-pdf::before { - content: "\f1c1"; } - -.fa-book-bible::before { - content: "\f647"; } - -.fa-bible::before { - content: "\f647"; } - -.fa-o::before { - content: "\4f"; } - -.fa-suitcase-medical::before { - content: "\f0fa"; } - -.fa-medkit::before { - content: "\f0fa"; } - -.fa-user-secret::before { - content: "\f21b"; } - -.fa-otter::before { - content: "\f700"; } - -.fa-person-dress::before { - content: "\f182"; } - -.fa-female::before { - content: "\f182"; } - -.fa-comment-dollar::before { - content: "\f651"; } - -.fa-business-time::before { - content: "\f64a"; } - -.fa-briefcase-clock::before { - content: "\f64a"; } - -.fa-table-cells-large::before { - content: "\f009"; } - -.fa-th-large::before { - content: "\f009"; } - -.fa-book-tanakh::before { - content: "\f827"; } - -.fa-tanakh::before { - content: "\f827"; } - -.fa-phone-volume::before { - content: "\f2a0"; } - -.fa-volume-control-phone::before { - content: "\f2a0"; } - -.fa-hat-cowboy-side::before { - content: "\f8c1"; } - -.fa-clipboard-user::before { - content: "\f7f3"; } - -.fa-child::before { - content: "\f1ae"; } - -.fa-lira-sign::before { - content: "\f195"; } - -.fa-satellite::before { - content: "\f7bf"; } - -.fa-plane-lock::before { - content: "\e558"; } - -.fa-tag::before { - content: "\f02b"; } - -.fa-comment::before { - content: "\f075"; } - -.fa-cake-candles::before { - content: "\f1fd"; } - -.fa-birthday-cake::before { - content: "\f1fd"; } - -.fa-cake::before { - content: "\f1fd"; } - -.fa-envelope::before { - content: "\f0e0"; } - -.fa-angles-up::before { - content: "\f102"; } - -.fa-angle-double-up::before { - content: "\f102"; } - -.fa-paperclip::before { - content: "\f0c6"; } - -.fa-arrow-right-to-city::before { - content: "\e4b3"; } - -.fa-ribbon::before { - content: "\f4d6"; } - -.fa-lungs::before { - content: "\f604"; } - -.fa-arrow-up-9-1::before { - content: "\f887"; } - -.fa-sort-numeric-up-alt::before { - content: "\f887"; } - -.fa-litecoin-sign::before { - content: "\e1d3"; } - -.fa-border-none::before { - content: "\f850"; } - -.fa-circle-nodes::before { - content: "\e4e2"; } - -.fa-parachute-box::before { - content: "\f4cd"; } - -.fa-indent::before { - content: "\f03c"; } - -.fa-truck-field-un::before { - content: "\e58e"; } - -.fa-hourglass::before { - content: "\f254"; } - -.fa-hourglass-empty::before { - content: "\f254"; } - -.fa-mountain::before { - content: "\f6fc"; } - -.fa-user-doctor::before { - content: "\f0f0"; } - -.fa-user-md::before { - content: "\f0f0"; } - -.fa-circle-info::before { - content: "\f05a"; } - -.fa-info-circle::before { - content: "\f05a"; } - -.fa-cloud-meatball::before { - content: "\f73b"; } - -.fa-camera::before { - content: "\f030"; } - -.fa-camera-alt::before { - content: "\f030"; } - -.fa-square-virus::before { - content: "\e578"; } - -.fa-meteor::before { - content: "\f753"; } - -.fa-car-on::before { - content: "\e4dd"; } - -.fa-sleigh::before { - content: "\f7cc"; } - -.fa-arrow-down-1-9::before { - content: "\f162"; } - -.fa-sort-numeric-asc::before { - content: "\f162"; } - -.fa-sort-numeric-down::before { - content: "\f162"; } - -.fa-hand-holding-droplet::before { - content: "\f4c1"; } - -.fa-hand-holding-water::before { - content: "\f4c1"; } - -.fa-water::before { - content: "\f773"; } - -.fa-calendar-check::before { - content: "\f274"; } - -.fa-braille::before { - content: "\f2a1"; } - -.fa-prescription-bottle-medical::before { - content: "\f486"; } - -.fa-prescription-bottle-alt::before { - content: "\f486"; } - -.fa-landmark::before { - content: "\f66f"; } - -.fa-truck::before { - content: "\f0d1"; } - -.fa-crosshairs::before { - content: "\f05b"; } - -.fa-person-cane::before { - content: "\e53c"; } - -.fa-tent::before { - content: "\e57d"; } - -.fa-vest-patches::before { - content: "\e086"; } - -.fa-check-double::before { - content: "\f560"; } - -.fa-arrow-down-a-z::before { - content: "\f15d"; } - -.fa-sort-alpha-asc::before { - content: "\f15d"; } - -.fa-sort-alpha-down::before { - content: "\f15d"; } - -.fa-money-bill-wheat::before { - content: "\e52a"; } - -.fa-cookie::before { - content: "\f563"; } - -.fa-arrow-rotate-left::before { - content: "\f0e2"; } - -.fa-arrow-left-rotate::before { - content: "\f0e2"; } - -.fa-arrow-rotate-back::before { - content: "\f0e2"; } - -.fa-arrow-rotate-backward::before { - content: "\f0e2"; } - -.fa-undo::before { - content: "\f0e2"; } - -.fa-hard-drive::before { - content: "\f0a0"; } - -.fa-hdd::before { - content: "\f0a0"; } - -.fa-face-grin-squint-tears::before { - content: "\f586"; } - -.fa-grin-squint-tears::before { - content: "\f586"; } - -.fa-dumbbell::before { - content: "\f44b"; } - -.fa-rectangle-list::before { - content: "\f022"; } - -.fa-list-alt::before { - content: "\f022"; } - -.fa-tarp-droplet::before { - content: "\e57c"; } - -.fa-house-medical-circle-check::before { - content: "\e511"; } - -.fa-person-skiing-nordic::before { - content: "\f7ca"; } - -.fa-skiing-nordic::before { - content: "\f7ca"; } - -.fa-calendar-plus::before { - content: "\f271"; } - -.fa-plane-arrival::before { - content: "\f5af"; } - -.fa-circle-left::before { - content: "\f359"; } - -.fa-arrow-alt-circle-left::before { - content: "\f359"; } - -.fa-train-subway::before { - content: "\f239"; } - -.fa-subway::before { - content: "\f239"; } - -.fa-chart-gantt::before { - content: "\e0e4"; } - -.fa-indian-rupee-sign::before { - content: "\e1bc"; } - -.fa-indian-rupee::before { - content: "\e1bc"; } - -.fa-inr::before { - content: "\e1bc"; } - -.fa-crop-simple::before { - content: "\f565"; } - -.fa-crop-alt::before { - content: "\f565"; } - -.fa-money-bill-1::before { - content: "\f3d1"; } - -.fa-money-bill-alt::before { - content: "\f3d1"; } - -.fa-left-long::before { - content: "\f30a"; } - -.fa-long-arrow-alt-left::before { - content: "\f30a"; } - -.fa-dna::before { - content: "\f471"; } - -.fa-virus-slash::before { - content: "\e075"; } - -.fa-minus::before { - content: "\f068"; } - -.fa-subtract::before { - content: "\f068"; } - -.fa-chess::before { - content: "\f439"; } - -.fa-arrow-left-long::before { - content: "\f177"; } - -.fa-long-arrow-left::before { - content: "\f177"; } - -.fa-plug-circle-check::before { - content: "\e55c"; } - -.fa-street-view::before { - content: "\f21d"; } - -.fa-franc-sign::before { - content: "\e18f"; } - -.fa-volume-off::before { - content: "\f026"; } - -.fa-hands-asl-interpreting::before { - content: "\f2a3"; } - -.fa-american-sign-language-interpreting::before { - content: "\f2a3"; } - -.fa-asl-interpreting::before { - content: "\f2a3"; } - -.fa-hands-american-sign-language-interpreting::before { - content: "\f2a3"; } - -.fa-gear::before { - content: "\f013"; } - -.fa-cog::before { - content: "\f013"; } - -.fa-droplet-slash::before { - content: "\f5c7"; } - -.fa-tint-slash::before { - content: "\f5c7"; } - -.fa-mosque::before { - content: "\f678"; } - -.fa-mosquito::before { - content: "\e52b"; } - -.fa-star-of-david::before { - content: "\f69a"; } - -.fa-person-military-rifle::before { - content: "\e54b"; } - -.fa-cart-shopping::before { - content: "\f07a"; } - -.fa-shopping-cart::before { - content: "\f07a"; } - -.fa-vials::before { - content: "\f493"; } - -.fa-plug-circle-plus::before { - content: "\e55f"; } - -.fa-place-of-worship::before { - content: "\f67f"; } - -.fa-grip-vertical::before { - content: "\f58e"; } - -.fa-arrow-turn-up::before { - content: "\f148"; } - -.fa-level-up::before { - content: "\f148"; } - -.fa-u::before { - content: "\55"; } - -.fa-square-root-variable::before { - content: "\f698"; } - -.fa-square-root-alt::before { - content: "\f698"; } - -.fa-clock::before { - content: "\f017"; } - -.fa-clock-four::before { - content: "\f017"; } - -.fa-backward-step::before { - content: "\f048"; } - -.fa-step-backward::before { - content: "\f048"; } - -.fa-pallet::before { - content: "\f482"; } - -.fa-faucet::before { - content: "\e005"; } - -.fa-baseball-bat-ball::before { - content: "\f432"; } - -.fa-s::before { - content: "\53"; } - -.fa-timeline::before { - content: "\e29c"; } - -.fa-keyboard::before { - content: "\f11c"; } - -.fa-caret-down::before { - content: "\f0d7"; } - -.fa-house-chimney-medical::before { - content: "\f7f2"; } - -.fa-clinic-medical::before { - content: "\f7f2"; } - -.fa-temperature-three-quarters::before { - content: "\f2c8"; } - -.fa-temperature-3::before { - content: "\f2c8"; } - -.fa-thermometer-3::before { - content: "\f2c8"; } - -.fa-thermometer-three-quarters::before { - content: "\f2c8"; } - -.fa-mobile-screen::before { - content: "\f3cf"; } - -.fa-mobile-android-alt::before { - content: "\f3cf"; } - -.fa-plane-up::before { - content: "\e22d"; } - -.fa-piggy-bank::before { - content: "\f4d3"; } - -.fa-battery-half::before { - content: "\f242"; } - -.fa-battery-3::before { - content: "\f242"; } - -.fa-mountain-city::before { - content: "\e52e"; } - -.fa-coins::before { - content: "\f51e"; } - -.fa-khanda::before { - content: "\f66d"; } - -.fa-sliders::before { - content: "\f1de"; } - -.fa-sliders-h::before { - content: "\f1de"; } - -.fa-folder-tree::before { - content: "\f802"; } - -.fa-network-wired::before { - content: "\f6ff"; } - -.fa-map-pin::before { - content: "\f276"; } - -.fa-hamsa::before { - content: "\f665"; } - -.fa-cent-sign::before { - content: "\e3f5"; } - -.fa-flask::before { - content: "\f0c3"; } - -.fa-person-pregnant::before { - content: "\e31e"; } - -.fa-wand-sparkles::before { - content: "\f72b"; } - -.fa-ellipsis-vertical::before { - content: "\f142"; } - -.fa-ellipsis-v::before { - content: "\f142"; } - -.fa-ticket::before { - content: "\f145"; } - -.fa-power-off::before { - content: "\f011"; } - -.fa-right-long::before { - content: "\f30b"; } - -.fa-long-arrow-alt-right::before { - content: "\f30b"; } - -.fa-flag-usa::before { - content: "\f74d"; } - -.fa-laptop-file::before { - content: "\e51d"; } - -.fa-tty::before { - content: "\f1e4"; } - -.fa-teletype::before { - content: "\f1e4"; } - -.fa-diagram-next::before { - content: "\e476"; } - -.fa-person-rifle::before { - content: "\e54e"; } - -.fa-house-medical-circle-exclamation::before { - content: "\e512"; } - -.fa-closed-captioning::before { - content: "\f20a"; } - -.fa-person-hiking::before { - content: "\f6ec"; } - -.fa-hiking::before { - content: "\f6ec"; } - -.fa-venus-double::before { - content: "\f226"; } - -.fa-images::before { - content: "\f302"; } - -.fa-calculator::before { - content: "\f1ec"; } - -.fa-people-pulling::before { - content: "\e535"; } - -.fa-n::before { - content: "\4e"; } - -.fa-cable-car::before { - content: "\f7da"; } - -.fa-tram::before { - content: "\f7da"; } - -.fa-cloud-rain::before { - content: "\f73d"; } - -.fa-building-circle-xmark::before { - content: "\e4d4"; } - -.fa-ship::before { - content: "\f21a"; } - -.fa-arrows-down-to-line::before { - content: "\e4b8"; } - -.fa-download::before { - content: "\f019"; } - -.fa-face-grin::before { - content: "\f580"; } - -.fa-grin::before { - content: "\f580"; } - -.fa-delete-left::before { - content: "\f55a"; } - -.fa-backspace::before { - content: "\f55a"; } - -.fa-eye-dropper::before { - content: "\f1fb"; } - -.fa-eye-dropper-empty::before { - content: "\f1fb"; } - -.fa-eyedropper::before { - content: "\f1fb"; } - -.fa-file-circle-check::before { - content: "\e5a0"; } - -.fa-forward::before { - content: "\f04e"; } - -.fa-mobile::before { - content: "\f3ce"; } - -.fa-mobile-android::before { - content: "\f3ce"; } - -.fa-mobile-phone::before { - content: "\f3ce"; } - -.fa-face-meh::before { - content: "\f11a"; } - -.fa-meh::before { - content: "\f11a"; } - -.fa-align-center::before { - content: "\f037"; } - -.fa-book-skull::before { - content: "\f6b7"; } - -.fa-book-dead::before { - content: "\f6b7"; } - -.fa-id-card::before { - content: "\f2c2"; } - -.fa-drivers-license::before { - content: "\f2c2"; } - -.fa-outdent::before { - content: "\f03b"; } - -.fa-dedent::before { - content: "\f03b"; } - -.fa-heart-circle-exclamation::before { - content: "\e4fe"; } - -.fa-house::before { - content: "\f015"; } - -.fa-home::before { - content: "\f015"; } - -.fa-home-alt::before { - content: "\f015"; } - -.fa-home-lg-alt::before { - content: "\f015"; } - -.fa-calendar-week::before { - content: "\f784"; } - -.fa-laptop-medical::before { - content: "\f812"; } - -.fa-b::before { - content: "\42"; } - -.fa-file-medical::before { - content: "\f477"; } - -.fa-dice-one::before { - content: "\f525"; } - -.fa-kiwi-bird::before { - content: "\f535"; } - -.fa-arrow-right-arrow-left::before { - content: "\f0ec"; } - -.fa-exchange::before { - content: "\f0ec"; } - -.fa-rotate-right::before { - content: "\f2f9"; } - -.fa-redo-alt::before { - content: "\f2f9"; } - -.fa-rotate-forward::before { - content: "\f2f9"; } - -.fa-utensils::before { - content: "\f2e7"; } - -.fa-cutlery::before { - content: "\f2e7"; } - -.fa-arrow-up-wide-short::before { - content: "\f161"; } - -.fa-sort-amount-up::before { - content: "\f161"; } - -.fa-mill-sign::before { - content: "\e1ed"; } - -.fa-bowl-rice::before { - content: "\e2eb"; } - -.fa-skull::before { - content: "\f54c"; } - -.fa-tower-broadcast::before { - content: "\f519"; } - -.fa-broadcast-tower::before { - content: "\f519"; } - -.fa-truck-pickup::before { - content: "\f63c"; } - -.fa-up-long::before { - content: "\f30c"; } - -.fa-long-arrow-alt-up::before { - content: "\f30c"; } - -.fa-stop::before { - content: "\f04d"; } - -.fa-code-merge::before { - content: "\f387"; } - -.fa-upload::before { - content: "\f093"; } - -.fa-hurricane::before { - content: "\f751"; } - -.fa-mound::before { - content: "\e52d"; } - -.fa-toilet-portable::before { - content: "\e583"; } - -.fa-compact-disc::before { - content: "\f51f"; } - -.fa-file-arrow-down::before { - content: "\f56d"; } - -.fa-file-download::before { - content: "\f56d"; } - -.fa-caravan::before { - content: "\f8ff"; } - -.fa-shield-cat::before { - content: "\e572"; } - -.fa-bolt::before { - content: "\f0e7"; } - -.fa-zap::before { - content: "\f0e7"; } - -.fa-glass-water::before { - content: "\e4f4"; } - -.fa-oil-well::before { - content: "\e532"; } - -.fa-vault::before { - content: "\e2c5"; } - -.fa-mars::before { - content: "\f222"; } - -.fa-toilet::before { - content: "\f7d8"; } - -.fa-plane-circle-xmark::before { - content: "\e557"; } - -.fa-yen-sign::before { - content: "\f157"; } - -.fa-cny::before { - content: "\f157"; } - -.fa-jpy::before { - content: "\f157"; } - -.fa-rmb::before { - content: "\f157"; } - -.fa-yen::before { - content: "\f157"; } - -.fa-ruble-sign::before { - content: "\f158"; } - -.fa-rouble::before { - content: "\f158"; } - -.fa-rub::before { - content: "\f158"; } - -.fa-ruble::before { - content: "\f158"; } - -.fa-sun::before { - content: "\f185"; } - -.fa-guitar::before { - content: "\f7a6"; } - -.fa-face-laugh-wink::before { - content: "\f59c"; } - -.fa-laugh-wink::before { - content: "\f59c"; } - -.fa-horse-head::before { - content: "\f7ab"; } - -.fa-bore-hole::before { - content: "\e4c3"; } - -.fa-industry::before { - content: "\f275"; } - -.fa-circle-down::before { - content: "\f358"; } - -.fa-arrow-alt-circle-down::before { - content: "\f358"; } - -.fa-arrows-turn-to-dots::before { - content: "\e4c1"; } - -.fa-florin-sign::before { - content: "\e184"; } - -.fa-arrow-down-short-wide::before { - content: "\f884"; } - -.fa-sort-amount-desc::before { - content: "\f884"; } - -.fa-sort-amount-down-alt::before { - content: "\f884"; } - -.fa-less-than::before { - content: "\3c"; } - -.fa-angle-down::before { - content: "\f107"; } - -.fa-car-tunnel::before { - content: "\e4de"; } - -.fa-head-side-cough::before { - content: "\e061"; } - -.fa-grip-lines::before { - content: "\f7a4"; } - -.fa-thumbs-down::before { - content: "\f165"; } - -.fa-user-lock::before { - content: "\f502"; } - -.fa-arrow-right-long::before { - content: "\f178"; } - -.fa-long-arrow-right::before { - content: "\f178"; } - -.fa-anchor-circle-xmark::before { - content: "\e4ac"; } - -.fa-ellipsis::before { - content: "\f141"; } - -.fa-ellipsis-h::before { - content: "\f141"; } - -.fa-chess-pawn::before { - content: "\f443"; } - -.fa-kit-medical::before { - content: "\f479"; } - -.fa-first-aid::before { - content: "\f479"; } - -.fa-person-through-window::before { - content: "\e5a9"; } - -.fa-toolbox::before { - content: "\f552"; } - -.fa-hands-holding-circle::before { - content: "\e4fb"; } - -.fa-bug::before { - content: "\f188"; } - -.fa-credit-card::before { - content: "\f09d"; } - -.fa-credit-card-alt::before { - content: "\f09d"; } - -.fa-car::before { - content: "\f1b9"; } - -.fa-automobile::before { - content: "\f1b9"; } - -.fa-hand-holding-hand::before { - content: "\e4f7"; } - -.fa-book-open-reader::before { - content: "\f5da"; } - -.fa-book-reader::before { - content: "\f5da"; } - -.fa-mountain-sun::before { - content: "\e52f"; } - -.fa-arrows-left-right-to-line::before { - content: "\e4ba"; } - -.fa-dice-d20::before { - content: "\f6cf"; } - -.fa-truck-droplet::before { - content: "\e58c"; } - -.fa-file-circle-xmark::before { - content: "\e5a1"; } - -.fa-temperature-arrow-up::before { - content: "\e040"; } - -.fa-temperature-up::before { - content: "\e040"; } - -.fa-medal::before { - content: "\f5a2"; } - -.fa-bed::before { - content: "\f236"; } - -.fa-square-h::before { - content: "\f0fd"; } - -.fa-h-square::before { - content: "\f0fd"; } - -.fa-podcast::before { - content: "\f2ce"; } - -.fa-temperature-full::before { - content: "\f2c7"; } - -.fa-temperature-4::before { - content: "\f2c7"; } - -.fa-thermometer-4::before { - content: "\f2c7"; } - -.fa-thermometer-full::before { - content: "\f2c7"; } - -.fa-bell::before { - content: "\f0f3"; } - -.fa-superscript::before { - content: "\f12b"; } - -.fa-plug-circle-xmark::before { - content: "\e560"; } - -.fa-star-of-life::before { - content: "\f621"; } - -.fa-phone-slash::before { - content: "\f3dd"; } - -.fa-paint-roller::before { - content: "\f5aa"; } - -.fa-handshake-angle::before { - content: "\f4c4"; } - -.fa-hands-helping::before { - content: "\f4c4"; } - -.fa-location-dot::before { - content: "\f3c5"; } - -.fa-map-marker-alt::before { - content: "\f3c5"; } - -.fa-file::before { - content: "\f15b"; } - -.fa-greater-than::before { - content: "\3e"; } - -.fa-person-swimming::before { - content: "\f5c4"; } - -.fa-swimmer::before { - content: "\f5c4"; } - -.fa-arrow-down::before { - content: "\f063"; } - -.fa-droplet::before { - content: "\f043"; } - -.fa-tint::before { - content: "\f043"; } - -.fa-eraser::before { - content: "\f12d"; } - -.fa-earth-americas::before { - content: "\f57d"; } - -.fa-earth::before { - content: "\f57d"; } - -.fa-earth-america::before { - content: "\f57d"; } - -.fa-globe-americas::before { - content: "\f57d"; } - -.fa-person-burst::before { - content: "\e53b"; } - -.fa-dove::before { - content: "\f4ba"; } - -.fa-battery-empty::before { - content: "\f244"; } - -.fa-battery-0::before { - content: "\f244"; } - -.fa-socks::before { - content: "\f696"; } - -.fa-inbox::before { - content: "\f01c"; } - -.fa-section::before { - content: "\e447"; } - -.fa-gauge-high::before { - content: "\f625"; } - -.fa-tachometer-alt::before { - content: "\f625"; } - -.fa-tachometer-alt-fast::before { - content: "\f625"; } - -.fa-envelope-open-text::before { - content: "\f658"; } - -.fa-hospital::before { - content: "\f0f8"; } - -.fa-hospital-alt::before { - content: "\f0f8"; } - -.fa-hospital-wide::before { - content: "\f0f8"; } - -.fa-wine-bottle::before { - content: "\f72f"; } - -.fa-chess-rook::before { - content: "\f447"; } - -.fa-bars-staggered::before { - content: "\f550"; } - -.fa-reorder::before { - content: "\f550"; } - -.fa-stream::before { - content: "\f550"; } - -.fa-dharmachakra::before { - content: "\f655"; } - -.fa-hotdog::before { - content: "\f80f"; } - -.fa-person-walking-with-cane::before { - content: "\f29d"; } - -.fa-blind::before { - content: "\f29d"; } - -.fa-drum::before { - content: "\f569"; } - -.fa-ice-cream::before { - content: "\f810"; } - -.fa-heart-circle-bolt::before { - content: "\e4fc"; } - -.fa-fax::before { - content: "\f1ac"; } - -.fa-paragraph::before { - content: "\f1dd"; } - -.fa-check-to-slot::before { - content: "\f772"; } - -.fa-vote-yea::before { - content: "\f772"; } - -.fa-star-half::before { - content: "\f089"; } - -.fa-boxes-stacked::before { - content: "\f468"; } - -.fa-boxes::before { - content: "\f468"; } - -.fa-boxes-alt::before { - content: "\f468"; } - -.fa-link::before { - content: "\f0c1"; } - -.fa-chain::before { - content: "\f0c1"; } - -.fa-ear-listen::before { - content: "\f2a2"; } - -.fa-assistive-listening-systems::before { - content: "\f2a2"; } - -.fa-tree-city::before { - content: "\e587"; } - -.fa-play::before { - content: "\f04b"; } - -.fa-font::before { - content: "\f031"; } - -.fa-table-cells-row-lock::before { - content: "\e67a"; } - -.fa-rupiah-sign::before { - content: "\e23d"; } - -.fa-magnifying-glass::before { - content: "\f002"; } - -.fa-search::before { - content: "\f002"; } - -.fa-table-tennis-paddle-ball::before { - content: "\f45d"; } - -.fa-ping-pong-paddle-ball::before { - content: "\f45d"; } - -.fa-table-tennis::before { - content: "\f45d"; } - -.fa-person-dots-from-line::before { - content: "\f470"; } - -.fa-diagnoses::before { - content: "\f470"; } - -.fa-trash-can-arrow-up::before { - content: "\f82a"; } - -.fa-trash-restore-alt::before { - content: "\f82a"; } - -.fa-naira-sign::before { - content: "\e1f6"; } - -.fa-cart-arrow-down::before { - content: "\f218"; } - -.fa-walkie-talkie::before { - content: "\f8ef"; } - -.fa-file-pen::before { - content: "\f31c"; } - -.fa-file-edit::before { - content: "\f31c"; } - -.fa-receipt::before { - content: "\f543"; } - -.fa-square-pen::before { - content: "\f14b"; } - -.fa-pen-square::before { - content: "\f14b"; } - -.fa-pencil-square::before { - content: "\f14b"; } - -.fa-suitcase-rolling::before { - content: "\f5c1"; } - -.fa-person-circle-exclamation::before { - content: "\e53f"; } - -.fa-chevron-down::before { - content: "\f078"; } - -.fa-battery-full::before { - content: "\f240"; } - -.fa-battery::before { - content: "\f240"; } - -.fa-battery-5::before { - content: "\f240"; } - -.fa-skull-crossbones::before { - content: "\f714"; } - -.fa-code-compare::before { - content: "\e13a"; } - -.fa-list-ul::before { - content: "\f0ca"; } - -.fa-list-dots::before { - content: "\f0ca"; } - -.fa-school-lock::before { - content: "\e56f"; } - -.fa-tower-cell::before { - content: "\e585"; } - -.fa-down-long::before { - content: "\f309"; } - -.fa-long-arrow-alt-down::before { - content: "\f309"; } - -.fa-ranking-star::before { - content: "\e561"; } - -.fa-chess-king::before { - content: "\f43f"; } - -.fa-person-harassing::before { - content: "\e549"; } - -.fa-brazilian-real-sign::before { - content: "\e46c"; } - -.fa-landmark-dome::before { - content: "\f752"; } - -.fa-landmark-alt::before { - content: "\f752"; } - -.fa-arrow-up::before { - content: "\f062"; } - -.fa-tv::before { - content: "\f26c"; } - -.fa-television::before { - content: "\f26c"; } - -.fa-tv-alt::before { - content: "\f26c"; } - -.fa-shrimp::before { - content: "\e448"; } - -.fa-list-check::before { - content: "\f0ae"; } - -.fa-tasks::before { - content: "\f0ae"; } - -.fa-jug-detergent::before { - content: "\e519"; } - -.fa-circle-user::before { - content: "\f2bd"; } - -.fa-user-circle::before { - content: "\f2bd"; } - -.fa-user-shield::before { - content: "\f505"; } - -.fa-wind::before { - content: "\f72e"; } - -.fa-car-burst::before { - content: "\f5e1"; } - -.fa-car-crash::before { - content: "\f5e1"; } - -.fa-y::before { - content: "\59"; } - -.fa-person-snowboarding::before { - content: "\f7ce"; } - -.fa-snowboarding::before { - content: "\f7ce"; } - -.fa-truck-fast::before { - content: "\f48b"; } - -.fa-shipping-fast::before { - content: "\f48b"; } - -.fa-fish::before { - content: "\f578"; } - -.fa-user-graduate::before { - content: "\f501"; } - -.fa-circle-half-stroke::before { - content: "\f042"; } - -.fa-adjust::before { - content: "\f042"; } - -.fa-clapperboard::before { - content: "\e131"; } - -.fa-circle-radiation::before { - content: "\f7ba"; } - -.fa-radiation-alt::before { - content: "\f7ba"; } - -.fa-baseball::before { - content: "\f433"; } - -.fa-baseball-ball::before { - content: "\f433"; } - -.fa-jet-fighter-up::before { - content: "\e518"; } - -.fa-diagram-project::before { - content: "\f542"; } - -.fa-project-diagram::before { - content: "\f542"; } - -.fa-copy::before { - content: "\f0c5"; } - -.fa-volume-xmark::before { - content: "\f6a9"; } - -.fa-volume-mute::before { - content: "\f6a9"; } - -.fa-volume-times::before { - content: "\f6a9"; } - -.fa-hand-sparkles::before { - content: "\e05d"; } - -.fa-grip::before { - content: "\f58d"; } - -.fa-grip-horizontal::before { - content: "\f58d"; } - -.fa-share-from-square::before { - content: "\f14d"; } - -.fa-share-square::before { - content: "\f14d"; } - -.fa-child-combatant::before { - content: "\e4e0"; } - -.fa-child-rifle::before { - content: "\e4e0"; } - -.fa-gun::before { - content: "\e19b"; } - -.fa-square-phone::before { - content: "\f098"; } - -.fa-phone-square::before { - content: "\f098"; } - -.fa-plus::before { - content: "\2b"; } - -.fa-add::before { - content: "\2b"; } - -.fa-expand::before { - content: "\f065"; } - -.fa-computer::before { - content: "\e4e5"; } - -.fa-xmark::before { - content: "\f00d"; } - -.fa-close::before { - content: "\f00d"; } - -.fa-multiply::before { - content: "\f00d"; } - -.fa-remove::before { - content: "\f00d"; } - -.fa-times::before { - content: "\f00d"; } - -.fa-arrows-up-down-left-right::before { - content: "\f047"; } - -.fa-arrows::before { - content: "\f047"; } - -.fa-chalkboard-user::before { - content: "\f51c"; } - -.fa-chalkboard-teacher::before { - content: "\f51c"; } - -.fa-peso-sign::before { - content: "\e222"; } - -.fa-building-shield::before { - content: "\e4d8"; } - -.fa-baby::before { - content: "\f77c"; } - -.fa-users-line::before { - content: "\e592"; } - -.fa-quote-left::before { - content: "\f10d"; } - -.fa-quote-left-alt::before { - content: "\f10d"; } - -.fa-tractor::before { - content: "\f722"; } - -.fa-trash-arrow-up::before { - content: "\f829"; } - -.fa-trash-restore::before { - content: "\f829"; } - -.fa-arrow-down-up-lock::before { - content: "\e4b0"; } - -.fa-lines-leaning::before { - content: "\e51e"; } - -.fa-ruler-combined::before { - content: "\f546"; } - -.fa-copyright::before { - content: "\f1f9"; } - -.fa-equals::before { - content: "\3d"; } - -.fa-blender::before { - content: "\f517"; } - -.fa-teeth::before { - content: "\f62e"; } - -.fa-shekel-sign::before { - content: "\f20b"; } - -.fa-ils::before { - content: "\f20b"; } - -.fa-shekel::before { - content: "\f20b"; } - -.fa-sheqel::before { - content: "\f20b"; } - -.fa-sheqel-sign::before { - content: "\f20b"; } - -.fa-map::before { - content: "\f279"; } - -.fa-rocket::before { - content: "\f135"; } - -.fa-photo-film::before { - content: "\f87c"; } - -.fa-photo-video::before { - content: "\f87c"; } - -.fa-folder-minus::before { - content: "\f65d"; } - -.fa-store::before { - content: "\f54e"; } - -.fa-arrow-trend-up::before { - content: "\e098"; } - -.fa-plug-circle-minus::before { - content: "\e55e"; } - -.fa-sign-hanging::before { - content: "\f4d9"; } - -.fa-sign::before { - content: "\f4d9"; } - -.fa-bezier-curve::before { - content: "\f55b"; } - -.fa-bell-slash::before { - content: "\f1f6"; } - -.fa-tablet::before { - content: "\f3fb"; } - -.fa-tablet-android::before { - content: "\f3fb"; } - -.fa-school-flag::before { - content: "\e56e"; } - -.fa-fill::before { - content: "\f575"; } - -.fa-angle-up::before { - content: "\f106"; } - -.fa-drumstick-bite::before { - content: "\f6d7"; } - -.fa-holly-berry::before { - content: "\f7aa"; } - -.fa-chevron-left::before { - content: "\f053"; } - -.fa-bacteria::before { - content: "\e059"; } - -.fa-hand-lizard::before { - content: "\f258"; } - -.fa-notdef::before { - content: "\e1fe"; } - -.fa-disease::before { - content: "\f7fa"; } - -.fa-briefcase-medical::before { - content: "\f469"; } - -.fa-genderless::before { - content: "\f22d"; } - -.fa-chevron-right::before { - content: "\f054"; } - -.fa-retweet::before { - content: "\f079"; } - -.fa-car-rear::before { - content: "\f5de"; } - -.fa-car-alt::before { - content: "\f5de"; } - -.fa-pump-soap::before { - content: "\e06b"; } - -.fa-video-slash::before { - content: "\f4e2"; } - -.fa-battery-quarter::before { - content: "\f243"; } - -.fa-battery-2::before { - content: "\f243"; } - -.fa-radio::before { - content: "\f8d7"; } - -.fa-baby-carriage::before { - content: "\f77d"; } - -.fa-carriage-baby::before { - content: "\f77d"; } - -.fa-traffic-light::before { - content: "\f637"; } - -.fa-thermometer::before { - content: "\f491"; } - -.fa-vr-cardboard::before { - content: "\f729"; } - -.fa-hand-middle-finger::before { - content: "\f806"; } - -.fa-percent::before { - content: "\25"; } - -.fa-percentage::before { - content: "\25"; } - -.fa-truck-moving::before { - content: "\f4df"; } - -.fa-glass-water-droplet::before { - content: "\e4f5"; } - -.fa-display::before { - content: "\e163"; } - -.fa-face-smile::before { - content: "\f118"; } - -.fa-smile::before { - content: "\f118"; } - -.fa-thumbtack::before { - content: "\f08d"; } - -.fa-thumb-tack::before { - content: "\f08d"; } - -.fa-trophy::before { - content: "\f091"; } - -.fa-person-praying::before { - content: "\f683"; } - -.fa-pray::before { - content: "\f683"; } - -.fa-hammer::before { - content: "\f6e3"; } - -.fa-hand-peace::before { - content: "\f25b"; } - -.fa-rotate::before { - content: "\f2f1"; } - -.fa-sync-alt::before { - content: "\f2f1"; } - -.fa-spinner::before { - content: "\f110"; } - -.fa-robot::before { - content: "\f544"; } - -.fa-peace::before { - content: "\f67c"; } - -.fa-gears::before { - content: "\f085"; } - -.fa-cogs::before { - content: "\f085"; } - -.fa-warehouse::before { - content: "\f494"; } - -.fa-arrow-up-right-dots::before { - content: "\e4b7"; } - -.fa-splotch::before { - content: "\f5bc"; } - -.fa-face-grin-hearts::before { - content: "\f584"; } - -.fa-grin-hearts::before { - content: "\f584"; } - -.fa-dice-four::before { - content: "\f524"; } - -.fa-sim-card::before { - content: "\f7c4"; } - -.fa-transgender::before { - content: "\f225"; } - -.fa-transgender-alt::before { - content: "\f225"; } - -.fa-mercury::before { - content: "\f223"; } - -.fa-arrow-turn-down::before { - content: "\f149"; } - -.fa-level-down::before { - content: "\f149"; } - -.fa-person-falling-burst::before { - content: "\e547"; } - -.fa-award::before { - content: "\f559"; } - -.fa-ticket-simple::before { - content: "\f3ff"; } - -.fa-ticket-alt::before { - content: "\f3ff"; } - -.fa-building::before { - content: "\f1ad"; } - -.fa-angles-left::before { - content: "\f100"; } - -.fa-angle-double-left::before { - content: "\f100"; } - -.fa-qrcode::before { - content: "\f029"; } - -.fa-clock-rotate-left::before { - content: "\f1da"; } - -.fa-history::before { - content: "\f1da"; } - -.fa-face-grin-beam-sweat::before { - content: "\f583"; } - -.fa-grin-beam-sweat::before { - content: "\f583"; } - -.fa-file-export::before { - content: "\f56e"; } - -.fa-arrow-right-from-file::before { - content: "\f56e"; } - -.fa-shield::before { - content: "\f132"; } - -.fa-shield-blank::before { - content: "\f132"; } - -.fa-arrow-up-short-wide::before { - content: "\f885"; } - -.fa-sort-amount-up-alt::before { - content: "\f885"; } - -.fa-house-medical::before { - content: "\e3b2"; } - -.fa-golf-ball-tee::before { - content: "\f450"; } - -.fa-golf-ball::before { - content: "\f450"; } - -.fa-circle-chevron-left::before { - content: "\f137"; } - -.fa-chevron-circle-left::before { - content: "\f137"; } - -.fa-house-chimney-window::before { - content: "\e00d"; } - -.fa-pen-nib::before { - content: "\f5ad"; } - -.fa-tent-arrow-turn-left::before { - content: "\e580"; } - -.fa-tents::before { - content: "\e582"; } - -.fa-wand-magic::before { - content: "\f0d0"; } - -.fa-magic::before { - content: "\f0d0"; } - -.fa-dog::before { - content: "\f6d3"; } - -.fa-carrot::before { - content: "\f787"; } - -.fa-moon::before { - content: "\f186"; } - -.fa-wine-glass-empty::before { - content: "\f5ce"; } - -.fa-wine-glass-alt::before { - content: "\f5ce"; } - -.fa-cheese::before { - content: "\f7ef"; } - -.fa-yin-yang::before { - content: "\f6ad"; } - -.fa-music::before { - content: "\f001"; } - -.fa-code-commit::before { - content: "\f386"; } - -.fa-temperature-low::before { - content: "\f76b"; } - -.fa-person-biking::before { - content: "\f84a"; } - -.fa-biking::before { - content: "\f84a"; } - -.fa-broom::before { - content: "\f51a"; } - -.fa-shield-heart::before { - content: "\e574"; } - -.fa-gopuram::before { - content: "\f664"; } - -.fa-earth-oceania::before { - content: "\e47b"; } - -.fa-globe-oceania::before { - content: "\e47b"; } - -.fa-square-xmark::before { - content: "\f2d3"; } - -.fa-times-square::before { - content: "\f2d3"; } - -.fa-xmark-square::before { - content: "\f2d3"; } - -.fa-hashtag::before { - content: "\23"; } - -.fa-up-right-and-down-left-from-center::before { - content: "\f424"; } - -.fa-expand-alt::before { - content: "\f424"; } - -.fa-oil-can::before { - content: "\f613"; } - -.fa-t::before { - content: "\54"; } - -.fa-hippo::before { - content: "\f6ed"; } - -.fa-chart-column::before { - content: "\e0e3"; } - -.fa-infinity::before { - content: "\f534"; } - -.fa-vial-circle-check::before { - content: "\e596"; } - -.fa-person-arrow-down-to-line::before { - content: "\e538"; } - -.fa-voicemail::before { - content: "\f897"; } - -.fa-fan::before { - content: "\f863"; } - -.fa-person-walking-luggage::before { - content: "\e554"; } - -.fa-up-down::before { - content: "\f338"; } - -.fa-arrows-alt-v::before { - content: "\f338"; } - -.fa-cloud-moon-rain::before { - content: "\f73c"; } - -.fa-calendar::before { - content: "\f133"; } - -.fa-trailer::before { - content: "\e041"; } - -.fa-bahai::before { - content: "\f666"; } - -.fa-haykal::before { - content: "\f666"; } - -.fa-sd-card::before { - content: "\f7c2"; } - -.fa-dragon::before { - content: "\f6d5"; } - -.fa-shoe-prints::before { - content: "\f54b"; } - -.fa-circle-plus::before { - content: "\f055"; } - -.fa-plus-circle::before { - content: "\f055"; } - -.fa-face-grin-tongue-wink::before { - content: "\f58b"; } - -.fa-grin-tongue-wink::before { - content: "\f58b"; } - -.fa-hand-holding::before { - content: "\f4bd"; } - -.fa-plug-circle-exclamation::before { - content: "\e55d"; } - -.fa-link-slash::before { - content: "\f127"; } - -.fa-chain-broken::before { - content: "\f127"; } - -.fa-chain-slash::before { - content: "\f127"; } - -.fa-unlink::before { - content: "\f127"; } - -.fa-clone::before { - content: "\f24d"; } - -.fa-person-walking-arrow-loop-left::before { - content: "\e551"; } - -.fa-arrow-up-z-a::before { - content: "\f882"; } - -.fa-sort-alpha-up-alt::before { - content: "\f882"; } - -.fa-fire-flame-curved::before { - content: "\f7e4"; } - -.fa-fire-alt::before { - content: "\f7e4"; } - -.fa-tornado::before { - content: "\f76f"; } - -.fa-file-circle-plus::before { - content: "\e494"; } - -.fa-book-quran::before { - content: "\f687"; } - -.fa-quran::before { - content: "\f687"; } - -.fa-anchor::before { - content: "\f13d"; } - -.fa-border-all::before { - content: "\f84c"; } - -.fa-face-angry::before { - content: "\f556"; } - -.fa-angry::before { - content: "\f556"; } - -.fa-cookie-bite::before { - content: "\f564"; } - -.fa-arrow-trend-down::before { - content: "\e097"; } - -.fa-rss::before { - content: "\f09e"; } - -.fa-feed::before { - content: "\f09e"; } - -.fa-draw-polygon::before { - content: "\f5ee"; } - -.fa-scale-balanced::before { - content: "\f24e"; } - -.fa-balance-scale::before { - content: "\f24e"; } - -.fa-gauge-simple-high::before { - content: "\f62a"; } - -.fa-tachometer::before { - content: "\f62a"; } - -.fa-tachometer-fast::before { - content: "\f62a"; } - -.fa-shower::before { - content: "\f2cc"; } - -.fa-desktop::before { - content: "\f390"; } - -.fa-desktop-alt::before { - content: "\f390"; } - -.fa-m::before { - content: "\4d"; } - -.fa-table-list::before { - content: "\f00b"; } - -.fa-th-list::before { - content: "\f00b"; } - -.fa-comment-sms::before { - content: "\f7cd"; } - -.fa-sms::before { - content: "\f7cd"; } - -.fa-book::before { - content: "\f02d"; } - -.fa-user-plus::before { - content: "\f234"; } - -.fa-check::before { - content: "\f00c"; } - -.fa-battery-three-quarters::before { - content: "\f241"; } - -.fa-battery-4::before { - content: "\f241"; } - -.fa-house-circle-check::before { - content: "\e509"; } - -.fa-angle-left::before { - content: "\f104"; } - -.fa-diagram-successor::before { - content: "\e47a"; } - -.fa-truck-arrow-right::before { - content: "\e58b"; } - -.fa-arrows-split-up-and-left::before { - content: "\e4bc"; } - -.fa-hand-fist::before { - content: "\f6de"; } - -.fa-fist-raised::before { - content: "\f6de"; } - -.fa-cloud-moon::before { - content: "\f6c3"; } - -.fa-briefcase::before { - content: "\f0b1"; } - -.fa-person-falling::before { - content: "\e546"; } - -.fa-image-portrait::before { - content: "\f3e0"; } - -.fa-portrait::before { - content: "\f3e0"; } - -.fa-user-tag::before { - content: "\f507"; } - -.fa-rug::before { - content: "\e569"; } - -.fa-earth-europe::before { - content: "\f7a2"; } - -.fa-globe-europe::before { - content: "\f7a2"; } - -.fa-cart-flatbed-suitcase::before { - content: "\f59d"; } - -.fa-luggage-cart::before { - content: "\f59d"; } - -.fa-rectangle-xmark::before { - content: "\f410"; } - -.fa-rectangle-times::before { - content: "\f410"; } - -.fa-times-rectangle::before { - content: "\f410"; } - -.fa-window-close::before { - content: "\f410"; } - -.fa-baht-sign::before { - content: "\e0ac"; } - -.fa-book-open::before { - content: "\f518"; } - -.fa-book-journal-whills::before { - content: "\f66a"; } - -.fa-journal-whills::before { - content: "\f66a"; } - -.fa-handcuffs::before { - content: "\e4f8"; } - -.fa-triangle-exclamation::before { - content: "\f071"; } - -.fa-exclamation-triangle::before { - content: "\f071"; } - -.fa-warning::before { - content: "\f071"; } - -.fa-database::before { - content: "\f1c0"; } - -.fa-share::before { - content: "\f064"; } - -.fa-mail-forward::before { - content: "\f064"; } - -.fa-bottle-droplet::before { - content: "\e4c4"; } - -.fa-mask-face::before { - content: "\e1d7"; } - -.fa-hill-rockslide::before { - content: "\e508"; } - -.fa-right-left::before { - content: "\f362"; } - -.fa-exchange-alt::before { - content: "\f362"; } - -.fa-paper-plane::before { - content: "\f1d8"; } - -.fa-road-circle-exclamation::before { - content: "\e565"; } - -.fa-dungeon::before { - content: "\f6d9"; } - -.fa-align-right::before { - content: "\f038"; } - -.fa-money-bill-1-wave::before { - content: "\f53b"; } - -.fa-money-bill-wave-alt::before { - content: "\f53b"; } - -.fa-life-ring::before { - content: "\f1cd"; } - -.fa-hands::before { - content: "\f2a7"; } - -.fa-sign-language::before { - content: "\f2a7"; } - -.fa-signing::before { - content: "\f2a7"; } - -.fa-calendar-day::before { - content: "\f783"; } - -.fa-water-ladder::before { - content: "\f5c5"; } - -.fa-ladder-water::before { - content: "\f5c5"; } - -.fa-swimming-pool::before { - content: "\f5c5"; } - -.fa-arrows-up-down::before { - content: "\f07d"; } - -.fa-arrows-v::before { - content: "\f07d"; } - -.fa-face-grimace::before { - content: "\f57f"; } - -.fa-grimace::before { - content: "\f57f"; } - -.fa-wheelchair-move::before { - content: "\e2ce"; } - -.fa-wheelchair-alt::before { - content: "\e2ce"; } - -.fa-turn-down::before { - content: "\f3be"; } - -.fa-level-down-alt::before { - content: "\f3be"; } - -.fa-person-walking-arrow-right::before { - content: "\e552"; } - -.fa-square-envelope::before { - content: "\f199"; } - -.fa-envelope-square::before { - content: "\f199"; } - -.fa-dice::before { - content: "\f522"; } - -.fa-bowling-ball::before { - content: "\f436"; } - -.fa-brain::before { - content: "\f5dc"; } - -.fa-bandage::before { - content: "\f462"; } - -.fa-band-aid::before { - content: "\f462"; } - -.fa-calendar-minus::before { - content: "\f272"; } - -.fa-circle-xmark::before { - content: "\f057"; } - -.fa-times-circle::before { - content: "\f057"; } - -.fa-xmark-circle::before { - content: "\f057"; } - -.fa-gifts::before { - content: "\f79c"; } - -.fa-hotel::before { - content: "\f594"; } - -.fa-earth-asia::before { - content: "\f57e"; } - -.fa-globe-asia::before { - content: "\f57e"; } - -.fa-id-card-clip::before { - content: "\f47f"; } - -.fa-id-card-alt::before { - content: "\f47f"; } - -.fa-magnifying-glass-plus::before { - content: "\f00e"; } - -.fa-search-plus::before { - content: "\f00e"; } - -.fa-thumbs-up::before { - content: "\f164"; } - -.fa-user-clock::before { - content: "\f4fd"; } - -.fa-hand-dots::before { - content: "\f461"; } - -.fa-allergies::before { - content: "\f461"; } - -.fa-file-invoice::before { - content: "\f570"; } - -.fa-window-minimize::before { - content: "\f2d1"; } - -.fa-mug-saucer::before { - content: "\f0f4"; } - -.fa-coffee::before { - content: "\f0f4"; } - -.fa-brush::before { - content: "\f55d"; } - -.fa-mask::before { - content: "\f6fa"; } - -.fa-magnifying-glass-minus::before { - content: "\f010"; } - -.fa-search-minus::before { - content: "\f010"; } - -.fa-ruler-vertical::before { - content: "\f548"; } - -.fa-user-large::before { - content: "\f406"; } - -.fa-user-alt::before { - content: "\f406"; } - -.fa-train-tram::before { - content: "\e5b4"; } - -.fa-user-nurse::before { - content: "\f82f"; } - -.fa-syringe::before { - content: "\f48e"; } - -.fa-cloud-sun::before { - content: "\f6c4"; } - -.fa-stopwatch-20::before { - content: "\e06f"; } - -.fa-square-full::before { - content: "\f45c"; } - -.fa-magnet::before { - content: "\f076"; } - -.fa-jar::before { - content: "\e516"; } - -.fa-note-sticky::before { - content: "\f249"; } - -.fa-sticky-note::before { - content: "\f249"; } - -.fa-bug-slash::before { - content: "\e490"; } - -.fa-arrow-up-from-water-pump::before { - content: "\e4b6"; } - -.fa-bone::before { - content: "\f5d7"; } - -.fa-user-injured::before { - content: "\f728"; } - -.fa-face-sad-tear::before { - content: "\f5b4"; } - -.fa-sad-tear::before { - content: "\f5b4"; } - -.fa-plane::before { - content: "\f072"; } - -.fa-tent-arrows-down::before { - content: "\e581"; } - -.fa-exclamation::before { - content: "\21"; } - -.fa-arrows-spin::before { - content: "\e4bb"; } - -.fa-print::before { - content: "\f02f"; } - -.fa-turkish-lira-sign::before { - content: "\e2bb"; } - -.fa-try::before { - content: "\e2bb"; } - -.fa-turkish-lira::before { - content: "\e2bb"; } - -.fa-dollar-sign::before { - content: "\24"; } - -.fa-dollar::before { - content: "\24"; } - -.fa-usd::before { - content: "\24"; } - -.fa-x::before { - content: "\58"; } - -.fa-magnifying-glass-dollar::before { - content: "\f688"; } - -.fa-search-dollar::before { - content: "\f688"; } - -.fa-users-gear::before { - content: "\f509"; } - -.fa-users-cog::before { - content: "\f509"; } - -.fa-person-military-pointing::before { - content: "\e54a"; } - -.fa-building-columns::before { - content: "\f19c"; } - -.fa-bank::before { - content: "\f19c"; } - -.fa-institution::before { - content: "\f19c"; } - -.fa-museum::before { - content: "\f19c"; } - -.fa-university::before { - content: "\f19c"; } - -.fa-umbrella::before { - content: "\f0e9"; } - -.fa-trowel::before { - content: "\e589"; } - -.fa-d::before { - content: "\44"; } - -.fa-stapler::before { - content: "\e5af"; } - -.fa-masks-theater::before { - content: "\f630"; } - -.fa-theater-masks::before { - content: "\f630"; } - -.fa-kip-sign::before { - content: "\e1c4"; } - -.fa-hand-point-left::before { - content: "\f0a5"; } - -.fa-handshake-simple::before { - content: "\f4c6"; } - -.fa-handshake-alt::before { - content: "\f4c6"; } - -.fa-jet-fighter::before { - content: "\f0fb"; } - -.fa-fighter-jet::before { - content: "\f0fb"; } - -.fa-square-share-nodes::before { - content: "\f1e1"; } - -.fa-share-alt-square::before { - content: "\f1e1"; } - -.fa-barcode::before { - content: "\f02a"; } - -.fa-plus-minus::before { - content: "\e43c"; } - -.fa-video::before { - content: "\f03d"; } - -.fa-video-camera::before { - content: "\f03d"; } - -.fa-graduation-cap::before { - content: "\f19d"; } - -.fa-mortar-board::before { - content: "\f19d"; } - -.fa-hand-holding-medical::before { - content: "\e05c"; } - -.fa-person-circle-check::before { - content: "\e53e"; } - -.fa-turn-up::before { - content: "\f3bf"; } - -.fa-level-up-alt::before { - content: "\f3bf"; } - -.sr-only, -.fa-sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; } - -.sr-only-focusable:not(:focus), -.fa-sr-only-focusable:not(:focus) { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; } - -/*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2024 Fonticons, Inc. - */ -:root, :host { - --fa-style-family-classic: 'Font Awesome 6 Free'; - --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } - -@font-face { - font-family: 'Font Awesome 6 Free'; - font-style: normal; - font-weight: 900; - font-display: block; - src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } - -.fas, .td-offline-search-results__close-button:after, -.fa-solid { - font-weight: 900; } - -/*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2024 Fonticons, Inc. - */ -:root, :host { - --fa-style-family-brands: 'Font Awesome 6 Brands'; - --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } - -@font-face { - font-family: 'Font Awesome 6 Brands'; - font-style: normal; - font-weight: 400; - font-display: block; - src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } - -.fab, -.fa-brands { - font-weight: 400; } - -.fa-monero:before { - content: "\f3d0"; } - -.fa-hooli:before { - content: "\f427"; } - -.fa-yelp:before { - content: "\f1e9"; } - -.fa-cc-visa:before { - content: "\f1f0"; } - -.fa-lastfm:before { - content: "\f202"; } - -.fa-shopware:before { - content: "\f5b5"; } - -.fa-creative-commons-nc:before { - content: "\f4e8"; } - -.fa-aws:before { - content: "\f375"; } - -.fa-redhat:before { - content: "\f7bc"; } - -.fa-yoast:before { - content: "\f2b1"; } - -.fa-cloudflare:before { - content: "\e07d"; } - -.fa-ups:before { - content: "\f7e0"; } - -.fa-pixiv:before { - content: "\e640"; } - -.fa-wpexplorer:before { - content: "\f2de"; } - -.fa-dyalog:before { - content: "\f399"; } - -.fa-bity:before { - content: "\f37a"; } - -.fa-stackpath:before { - content: "\f842"; } - -.fa-buysellads:before { - content: "\f20d"; } - -.fa-first-order:before { - content: "\f2b0"; } - -.fa-modx:before { - content: "\f285"; } - -.fa-guilded:before { - content: "\e07e"; } - -.fa-vnv:before { - content: "\f40b"; } - -.fa-square-js:before { - content: "\f3b9"; } - -.fa-js-square:before { - content: "\f3b9"; } - -.fa-microsoft:before { - content: "\f3ca"; } - -.fa-qq:before { - content: "\f1d6"; } - -.fa-orcid:before { - content: "\f8d2"; } - -.fa-java:before { - content: "\f4e4"; } - -.fa-invision:before { - content: "\f7b0"; } - -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; } - -.fa-centercode:before { - content: "\f380"; } - -.fa-glide-g:before { - content: "\f2a6"; } - -.fa-drupal:before { - content: "\f1a9"; } - -.fa-jxl:before { - content: "\e67b"; } - -.fa-hire-a-helper:before { - content: "\f3b0"; } - -.fa-creative-commons-by:before { - content: "\f4e7"; } - -.fa-unity:before { - content: "\e049"; } - -.fa-whmcs:before { - content: "\f40d"; } - -.fa-rocketchat:before { - content: "\f3e8"; } - -.fa-vk:before { - content: "\f189"; } - -.fa-untappd:before { - content: "\f405"; } - -.fa-mailchimp:before { - content: "\f59e"; } - -.fa-css3-alt:before { - content: "\f38b"; } - -.fa-square-reddit:before { - content: "\f1a2"; } - -.fa-reddit-square:before { - content: "\f1a2"; } - -.fa-vimeo-v:before { - content: "\f27d"; } - -.fa-contao:before { - content: "\f26d"; } - -.fa-square-font-awesome:before { - content: "\e5ad"; } - -.fa-deskpro:before { - content: "\f38f"; } - -.fa-brave:before { - content: "\e63c"; } - -.fa-sistrix:before { - content: "\f3ee"; } - -.fa-square-instagram:before { - content: "\e055"; } - -.fa-instagram-square:before { - content: "\e055"; } - -.fa-battle-net:before { - content: "\f835"; } - -.fa-the-red-yeti:before { - content: "\f69d"; } - -.fa-square-hacker-news:before { - content: "\f3af"; } - -.fa-hacker-news-square:before { - content: "\f3af"; } - -.fa-edge:before { - content: "\f282"; } - -.fa-threads:before { - content: "\e618"; } - -.fa-napster:before { - content: "\f3d2"; } - -.fa-square-snapchat:before { - content: "\f2ad"; } - -.fa-snapchat-square:before { - content: "\f2ad"; } - -.fa-google-plus-g:before { - content: "\f0d5"; } - -.fa-artstation:before { - content: "\f77a"; } - -.fa-markdown:before { - content: "\f60f"; } - -.fa-sourcetree:before { - content: "\f7d3"; } - -.fa-google-plus:before { - content: "\f2b3"; } - -.fa-diaspora:before { - content: "\f791"; } - -.fa-foursquare:before { - content: "\f180"; } - -.fa-stack-overflow:before { - content: "\f16c"; } - -.fa-github-alt:before { - content: "\f113"; } - -.fa-phoenix-squadron:before { - content: "\f511"; } - -.fa-pagelines:before { - content: "\f18c"; } - -.fa-algolia:before { - content: "\f36c"; } - -.fa-red-river:before { - content: "\f3e3"; } - -.fa-creative-commons-sa:before { - content: "\f4ef"; } - -.fa-safari:before { - content: "\f267"; } - -.fa-google:before { - content: "\f1a0"; } - -.fa-square-font-awesome-stroke:before { - content: "\f35c"; } - -.fa-font-awesome-alt:before { - content: "\f35c"; } - -.fa-atlassian:before { - content: "\f77b"; } - -.fa-linkedin-in:before { - content: "\f0e1"; } - -.fa-digital-ocean:before { - content: "\f391"; } - -.fa-nimblr:before { - content: "\f5a8"; } - -.fa-chromecast:before { - content: "\f838"; } - -.fa-evernote:before { - content: "\f839"; } - -.fa-hacker-news:before { - content: "\f1d4"; } - -.fa-creative-commons-sampling:before { - content: "\f4f0"; } - -.fa-adversal:before { - content: "\f36a"; } - -.fa-creative-commons:before { - content: "\f25e"; } - -.fa-watchman-monitoring:before { - content: "\e087"; } - -.fa-fonticons:before { - content: "\f280"; } - -.fa-weixin:before { - content: "\f1d7"; } - -.fa-shirtsinbulk:before { - content: "\f214"; } - -.fa-codepen:before { - content: "\f1cb"; } - -.fa-git-alt:before { - content: "\f841"; } - -.fa-lyft:before { - content: "\f3c3"; } - -.fa-rev:before { - content: "\f5b2"; } - -.fa-windows:before { - content: "\f17a"; } - -.fa-wizards-of-the-coast:before { - content: "\f730"; } - -.fa-square-viadeo:before { - content: "\f2aa"; } - -.fa-viadeo-square:before { - content: "\f2aa"; } - -.fa-meetup:before { - content: "\f2e0"; } - -.fa-centos:before { - content: "\f789"; } - -.fa-adn:before { - content: "\f170"; } - -.fa-cloudsmith:before { - content: "\f384"; } - -.fa-opensuse:before { - content: "\e62b"; } - -.fa-pied-piper-alt:before { - content: "\f1a8"; } - -.fa-square-dribbble:before { - content: "\f397"; } - -.fa-dribbble-square:before { - content: "\f397"; } - -.fa-codiepie:before { - content: "\f284"; } - -.fa-node:before { - content: "\f419"; } - -.fa-mix:before { - content: "\f3cb"; } - -.fa-steam:before { - content: "\f1b6"; } - -.fa-cc-apple-pay:before { - content: "\f416"; } - -.fa-scribd:before { - content: "\f28a"; } - -.fa-debian:before { - content: "\e60b"; } - -.fa-openid:before { - content: "\f19b"; } - -.fa-instalod:before { - content: "\e081"; } - -.fa-expeditedssl:before { - content: "\f23e"; } - -.fa-sellcast:before { - content: "\f2da"; } - -.fa-square-twitter:before { - content: "\f081"; } - -.fa-twitter-square:before { - content: "\f081"; } - -.fa-r-project:before { - content: "\f4f7"; } - -.fa-delicious:before { - content: "\f1a5"; } - -.fa-freebsd:before { - content: "\f3a4"; } - -.fa-vuejs:before { - content: "\f41f"; } - -.fa-accusoft:before { - content: "\f369"; } - -.fa-ioxhost:before { - content: "\f208"; } - -.fa-fonticons-fi:before { - content: "\f3a2"; } - -.fa-app-store:before { - content: "\f36f"; } - -.fa-cc-mastercard:before { - content: "\f1f1"; } - -.fa-itunes-note:before { - content: "\f3b5"; } - -.fa-golang:before { - content: "\e40f"; } - -.fa-kickstarter:before { - content: "\f3bb"; } - -.fa-square-kickstarter:before { - content: "\f3bb"; } - -.fa-grav:before { - content: "\f2d6"; } - -.fa-weibo:before { - content: "\f18a"; } - -.fa-uncharted:before { - content: "\e084"; } - -.fa-firstdraft:before { - content: "\f3a1"; } - -.fa-square-youtube:before { - content: "\f431"; } - -.fa-youtube-square:before { - content: "\f431"; } - -.fa-wikipedia-w:before { - content: "\f266"; } - -.fa-wpressr:before { - content: "\f3e4"; } - -.fa-rendact:before { - content: "\f3e4"; } - -.fa-angellist:before { - content: "\f209"; } - -.fa-galactic-republic:before { - content: "\f50c"; } - -.fa-nfc-directional:before { - content: "\e530"; } - -.fa-skype:before { - content: "\f17e"; } - -.fa-joget:before { - content: "\f3b7"; } - -.fa-fedora:before { - content: "\f798"; } - -.fa-stripe-s:before { - content: "\f42a"; } - -.fa-meta:before { - content: "\e49b"; } - -.fa-laravel:before { - content: "\f3bd"; } - -.fa-hotjar:before { - content: "\f3b1"; } - -.fa-bluetooth-b:before { - content: "\f294"; } - -.fa-square-letterboxd:before { - content: "\e62e"; } - -.fa-sticker-mule:before { - content: "\f3f7"; } - -.fa-creative-commons-zero:before { - content: "\f4f3"; } - -.fa-hips:before { - content: "\f452"; } - -.fa-behance:before { - content: "\f1b4"; } - -.fa-reddit:before { - content: "\f1a1"; } - -.fa-discord:before { - content: "\f392"; } - -.fa-chrome:before { - content: "\f268"; } - -.fa-app-store-ios:before { - content: "\f370"; } - -.fa-cc-discover:before { - content: "\f1f2"; } - -.fa-wpbeginner:before { - content: "\f297"; } - -.fa-confluence:before { - content: "\f78d"; } - -.fa-shoelace:before { - content: "\e60c"; } - -.fa-mdb:before { - content: "\f8ca"; } - -.fa-dochub:before { - content: "\f394"; } - -.fa-accessible-icon:before { - content: "\f368"; } - -.fa-ebay:before { - content: "\f4f4"; } - -.fa-amazon:before { - content: "\f270"; } - -.fa-unsplash:before { - content: "\e07c"; } - -.fa-yarn:before { - content: "\f7e3"; } - -.fa-square-steam:before { - content: "\f1b7"; } - -.fa-steam-square:before { - content: "\f1b7"; } - -.fa-500px:before { - content: "\f26e"; } - -.fa-square-vimeo:before { - content: "\f194"; } - -.fa-vimeo-square:before { - content: "\f194"; } - -.fa-asymmetrik:before { - content: "\f372"; } - -.fa-font-awesome:before { - content: "\f2b4"; } - -.fa-font-awesome-flag:before { - content: "\f2b4"; } - -.fa-font-awesome-logo-full:before { - content: "\f2b4"; } - -.fa-gratipay:before { - content: "\f184"; } - -.fa-apple:before { - content: "\f179"; } - -.fa-hive:before { - content: "\e07f"; } - -.fa-gitkraken:before { - content: "\f3a6"; } - -.fa-keybase:before { - content: "\f4f5"; } - -.fa-apple-pay:before { - content: "\f415"; } - -.fa-padlet:before { - content: "\e4a0"; } - -.fa-amazon-pay:before { - content: "\f42c"; } - -.fa-square-github:before { - content: "\f092"; } - -.fa-github-square:before { - content: "\f092"; } - -.fa-stumbleupon:before { - content: "\f1a4"; } - -.fa-fedex:before { - content: "\f797"; } - -.fa-phoenix-framework:before { - content: "\f3dc"; } - -.fa-shopify:before { - content: "\e057"; } - -.fa-neos:before { - content: "\f612"; } - -.fa-square-threads:before { - content: "\e619"; } - -.fa-hackerrank:before { - content: "\f5f7"; } - -.fa-researchgate:before { - content: "\f4f8"; } - -.fa-swift:before { - content: "\f8e1"; } - -.fa-angular:before { - content: "\f420"; } - -.fa-speakap:before { - content: "\f3f3"; } - -.fa-angrycreative:before { - content: "\f36e"; } - -.fa-y-combinator:before { - content: "\f23b"; } - -.fa-empire:before { - content: "\f1d1"; } - -.fa-envira:before { - content: "\f299"; } - -.fa-google-scholar:before { - content: "\e63b"; } - -.fa-square-gitlab:before { - content: "\e5ae"; } - -.fa-gitlab-square:before { - content: "\e5ae"; } - -.fa-studiovinari:before { - content: "\f3f8"; } - -.fa-pied-piper:before { - content: "\f2ae"; } - -.fa-wordpress:before { - content: "\f19a"; } - -.fa-product-hunt:before { - content: "\f288"; } - -.fa-firefox:before { - content: "\f269"; } - -.fa-linode:before { - content: "\f2b8"; } - -.fa-goodreads:before { - content: "\f3a8"; } - -.fa-square-odnoklassniki:before { - content: "\f264"; } - -.fa-odnoklassniki-square:before { - content: "\f264"; } - -.fa-jsfiddle:before { - content: "\f1cc"; } - -.fa-sith:before { - content: "\f512"; } - -.fa-themeisle:before { - content: "\f2b2"; } - -.fa-page4:before { - content: "\f3d7"; } - -.fa-hashnode:before { - content: "\e499"; } - -.fa-react:before { - content: "\f41b"; } - -.fa-cc-paypal:before { - content: "\f1f4"; } - -.fa-squarespace:before { - content: "\f5be"; } - -.fa-cc-stripe:before { - content: "\f1f5"; } - -.fa-creative-commons-share:before { - content: "\f4f2"; } - -.fa-bitcoin:before { - content: "\f379"; } - -.fa-keycdn:before { - content: "\f3ba"; } - -.fa-opera:before { - content: "\f26a"; } - -.fa-itch-io:before { - content: "\f83a"; } - -.fa-umbraco:before { - content: "\f8e8"; } - -.fa-galactic-senate:before { - content: "\f50d"; } - -.fa-ubuntu:before { - content: "\f7df"; } - -.fa-draft2digital:before { - content: "\f396"; } - -.fa-stripe:before { - content: "\f429"; } - -.fa-houzz:before { - content: "\f27c"; } - -.fa-gg:before { - content: "\f260"; } - -.fa-dhl:before { - content: "\f790"; } - -.fa-square-pinterest:before { - content: "\f0d3"; } - -.fa-pinterest-square:before { - content: "\f0d3"; } - -.fa-xing:before { - content: "\f168"; } - -.fa-blackberry:before { - content: "\f37b"; } - -.fa-creative-commons-pd:before { - content: "\f4ec"; } - -.fa-playstation:before { - content: "\f3df"; } - -.fa-quinscape:before { - content: "\f459"; } - -.fa-less:before { - content: "\f41d"; } - -.fa-blogger-b:before { - content: "\f37d"; } - -.fa-opencart:before { - content: "\f23d"; } - -.fa-vine:before { - content: "\f1ca"; } - -.fa-signal-messenger:before { - content: "\e663"; } - -.fa-paypal:before { - content: "\f1ed"; } - -.fa-gitlab:before { - content: "\f296"; } - -.fa-typo3:before { - content: "\f42b"; } - -.fa-reddit-alien:before { - content: "\f281"; } - -.fa-yahoo:before { - content: "\f19e"; } - -.fa-dailymotion:before { - content: "\e052"; } - -.fa-affiliatetheme:before { - content: "\f36b"; } - -.fa-pied-piper-pp:before { - content: "\f1a7"; } - -.fa-bootstrap:before { - content: "\f836"; } - -.fa-odnoklassniki:before { - content: "\f263"; } - -.fa-nfc-symbol:before { - content: "\e531"; } - -.fa-mintbit:before { - content: "\e62f"; } - -.fa-ethereum:before { - content: "\f42e"; } - -.fa-speaker-deck:before { - content: "\f83c"; } - -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; } - -.fa-patreon:before { - content: "\f3d9"; } - -.fa-avianex:before { - content: "\f374"; } - -.fa-ello:before { - content: "\f5f1"; } - -.fa-gofore:before { - content: "\f3a7"; } - -.fa-bimobject:before { - content: "\f378"; } - -.fa-brave-reverse:before { - content: "\e63d"; } - -.fa-facebook-f:before { - content: "\f39e"; } - -.fa-square-google-plus:before { - content: "\f0d4"; } - -.fa-google-plus-square:before { - content: "\f0d4"; } - -.fa-web-awesome:before { - content: "\e682"; } - -.fa-mandalorian:before { - content: "\f50f"; } - -.fa-first-order-alt:before { - content: "\f50a"; } - -.fa-osi:before { - content: "\f41a"; } - -.fa-google-wallet:before { - content: "\f1ee"; } - -.fa-d-and-d-beyond:before { - content: "\f6ca"; } - -.fa-periscope:before { - content: "\f3da"; } - -.fa-fulcrum:before { - content: "\f50b"; } - -.fa-cloudscale:before { - content: "\f383"; } - -.fa-forumbee:before { - content: "\f211"; } - -.fa-mizuni:before { - content: "\f3cc"; } - -.fa-schlix:before { - content: "\f3ea"; } - -.fa-square-xing:before { - content: "\f169"; } - -.fa-xing-square:before { - content: "\f169"; } - -.fa-bandcamp:before { - content: "\f2d5"; } - -.fa-wpforms:before { - content: "\f298"; } - -.fa-cloudversify:before { - content: "\f385"; } - -.fa-usps:before { - content: "\f7e1"; } - -.fa-megaport:before { - content: "\f5a3"; } - -.fa-magento:before { - content: "\f3c4"; } - -.fa-spotify:before { - content: "\f1bc"; } - -.fa-optin-monster:before { - content: "\f23c"; } - -.fa-fly:before { - content: "\f417"; } - -.fa-aviato:before { - content: "\f421"; } - -.fa-itunes:before { - content: "\f3b4"; } - -.fa-cuttlefish:before { - content: "\f38c"; } - -.fa-blogger:before { - content: "\f37c"; } - -.fa-flickr:before { - content: "\f16e"; } - -.fa-viber:before { - content: "\f409"; } - -.fa-soundcloud:before { - content: "\f1be"; } - -.fa-digg:before { - content: "\f1a6"; } - -.fa-tencent-weibo:before { - content: "\f1d5"; } - -.fa-letterboxd:before { - content: "\e62d"; } - -.fa-symfony:before { - content: "\f83d"; } - -.fa-maxcdn:before { - content: "\f136"; } - -.fa-etsy:before { - content: "\f2d7"; } - -.fa-facebook-messenger:before { - content: "\f39f"; } - -.fa-audible:before { - content: "\f373"; } - -.fa-think-peaks:before { - content: "\f731"; } - -.fa-bilibili:before { - content: "\e3d9"; } - -.fa-erlang:before { - content: "\f39d"; } - -.fa-x-twitter:before { - content: "\e61b"; } - -.fa-cotton-bureau:before { - content: "\f89e"; } - -.fa-dashcube:before { - content: "\f210"; } - -.fa-42-group:before { - content: "\e080"; } - -.fa-innosoft:before { - content: "\e080"; } - -.fa-stack-exchange:before { - content: "\f18d"; } - -.fa-elementor:before { - content: "\f430"; } - -.fa-square-pied-piper:before { - content: "\e01e"; } - -.fa-pied-piper-square:before { - content: "\e01e"; } - -.fa-creative-commons-nd:before { - content: "\f4eb"; } - -.fa-palfed:before { - content: "\f3d8"; } - -.fa-superpowers:before { - content: "\f2dd"; } - -.fa-resolving:before { - content: "\f3e7"; } - -.fa-xbox:before { - content: "\f412"; } - -.fa-square-web-awesome-stroke:before { - content: "\e684"; } - -.fa-searchengin:before { - content: "\f3eb"; } - -.fa-tiktok:before { - content: "\e07b"; } - -.fa-square-facebook:before { - content: "\f082"; } - -.fa-facebook-square:before { - content: "\f082"; } - -.fa-renren:before { - content: "\f18b"; } - -.fa-linux:before { - content: "\f17c"; } - -.fa-glide:before { - content: "\f2a5"; } - -.fa-linkedin:before { - content: "\f08c"; } - -.fa-hubspot:before { - content: "\f3b2"; } - -.fa-deploydog:before { - content: "\f38e"; } - -.fa-twitch:before { - content: "\f1e8"; } - -.fa-ravelry:before { - content: "\f2d9"; } - -.fa-mixer:before { - content: "\e056"; } - -.fa-square-lastfm:before { - content: "\f203"; } - -.fa-lastfm-square:before { - content: "\f203"; } - -.fa-vimeo:before { - content: "\f40a"; } - -.fa-mendeley:before { - content: "\f7b3"; } - -.fa-uniregistry:before { - content: "\f404"; } - -.fa-figma:before { - content: "\f799"; } - -.fa-creative-commons-remix:before { - content: "\f4ee"; } - -.fa-cc-amazon-pay:before { - content: "\f42d"; } - -.fa-dropbox:before { - content: "\f16b"; } - -.fa-instagram:before { - content: "\f16d"; } - -.fa-cmplid:before { - content: "\e360"; } - -.fa-upwork:before { - content: "\e641"; } - -.fa-facebook:before { - content: "\f09a"; } - -.fa-gripfire:before { - content: "\f3ac"; } - -.fa-jedi-order:before { - content: "\f50e"; } - -.fa-uikit:before { - content: "\f403"; } - -.fa-fort-awesome-alt:before { - content: "\f3a3"; } - -.fa-phabricator:before { - content: "\f3db"; } - -.fa-ussunnah:before { - content: "\f407"; } - -.fa-earlybirds:before { - content: "\f39a"; } - -.fa-trade-federation:before { - content: "\f513"; } - -.fa-autoprefixer:before { - content: "\f41c"; } - -.fa-whatsapp:before { - content: "\f232"; } - -.fa-square-upwork:before { - content: "\e67c"; } - -.fa-slideshare:before { - content: "\f1e7"; } - -.fa-google-play:before { - content: "\f3ab"; } - -.fa-viadeo:before { - content: "\f2a9"; } - -.fa-line:before { - content: "\f3c0"; } - -.fa-google-drive:before { - content: "\f3aa"; } - -.fa-servicestack:before { - content: "\f3ec"; } - -.fa-simplybuilt:before { - content: "\f215"; } - -.fa-bitbucket:before { - content: "\f171"; } - -.fa-imdb:before { - content: "\f2d8"; } - -.fa-deezer:before { - content: "\e077"; } - -.fa-raspberry-pi:before { - content: "\f7bb"; } - -.fa-jira:before { - content: "\f7b1"; } - -.fa-docker:before { - content: "\f395"; } - -.fa-screenpal:before { - content: "\e570"; } - -.fa-bluetooth:before { - content: "\f293"; } - -.fa-gitter:before { - content: "\f426"; } - -.fa-d-and-d:before { - content: "\f38d"; } - -.fa-microblog:before { - content: "\e01a"; } - -.fa-cc-diners-club:before { - content: "\f24c"; } - -.fa-gg-circle:before { - content: "\f261"; } - -.fa-pied-piper-hat:before { - content: "\f4e5"; } - -.fa-kickstarter-k:before { - content: "\f3bc"; } - -.fa-yandex:before { - content: "\f413"; } - -.fa-readme:before { - content: "\f4d5"; } - -.fa-html5:before { - content: "\f13b"; } - -.fa-sellsy:before { - content: "\f213"; } - -.fa-square-web-awesome:before { - content: "\e683"; } - -.fa-sass:before { - content: "\f41e"; } - -.fa-wirsindhandwerk:before { - content: "\e2d0"; } - -.fa-wsh:before { - content: "\e2d0"; } - -.fa-buromobelexperte:before { - content: "\f37f"; } - -.fa-salesforce:before { - content: "\f83b"; } - -.fa-octopus-deploy:before { - content: "\e082"; } - -.fa-medapps:before { - content: "\f3c6"; } - -.fa-ns8:before { - content: "\f3d5"; } - -.fa-pinterest-p:before { - content: "\f231"; } - -.fa-apper:before { - content: "\f371"; } - -.fa-fort-awesome:before { - content: "\f286"; } - -.fa-waze:before { - content: "\f83f"; } - -.fa-bluesky:before { - content: "\e671"; } - -.fa-cc-jcb:before { - content: "\f24b"; } - -.fa-snapchat:before { - content: "\f2ab"; } - -.fa-snapchat-ghost:before { - content: "\f2ab"; } - -.fa-fantasy-flight-games:before { - content: "\f6dc"; } - -.fa-rust:before { - content: "\e07a"; } - -.fa-wix:before { - content: "\f5cf"; } - -.fa-square-behance:before { - content: "\f1b5"; } - -.fa-behance-square:before { - content: "\f1b5"; } - -.fa-supple:before { - content: "\f3f9"; } - -.fa-webflow:before { - content: "\e65c"; } - -.fa-rebel:before { - content: "\f1d0"; } - -.fa-css3:before { - content: "\f13c"; } - -.fa-staylinked:before { - content: "\f3f5"; } - -.fa-kaggle:before { - content: "\f5fa"; } - -.fa-space-awesome:before { - content: "\e5ac"; } - -.fa-deviantart:before { - content: "\f1bd"; } - -.fa-cpanel:before { - content: "\f388"; } - -.fa-goodreads-g:before { - content: "\f3a9"; } - -.fa-square-git:before { - content: "\f1d2"; } - -.fa-git-square:before { - content: "\f1d2"; } - -.fa-square-tumblr:before { - content: "\f174"; } - -.fa-tumblr-square:before { - content: "\f174"; } - -.fa-trello:before { - content: "\f181"; } - -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; } - -.fa-get-pocket:before { - content: "\f265"; } - -.fa-perbyte:before { - content: "\e083"; } - -.fa-grunt:before { - content: "\f3ad"; } - -.fa-weebly:before { - content: "\f5cc"; } - -.fa-connectdevelop:before { - content: "\f20e"; } - -.fa-leanpub:before { - content: "\f212"; } - -.fa-black-tie:before { - content: "\f27e"; } - -.fa-themeco:before { - content: "\f5c6"; } - -.fa-python:before { - content: "\f3e2"; } - -.fa-android:before { - content: "\f17b"; } - -.fa-bots:before { - content: "\e340"; } - -.fa-free-code-camp:before { - content: "\f2c5"; } - -.fa-hornbill:before { - content: "\f592"; } - -.fa-js:before { - content: "\f3b8"; } - -.fa-ideal:before { - content: "\e013"; } - -.fa-git:before { - content: "\f1d3"; } - -.fa-dev:before { - content: "\f6cc"; } - -.fa-sketch:before { - content: "\f7c6"; } - -.fa-yandex-international:before { - content: "\f414"; } - -.fa-cc-amex:before { - content: "\f1f3"; } - -.fa-uber:before { - content: "\f402"; } - -.fa-github:before { - content: "\f09b"; } - -.fa-php:before { - content: "\f457"; } - -.fa-alipay:before { - content: "\f642"; } - -.fa-youtube:before { - content: "\f167"; } - -.fa-skyatlas:before { - content: "\f216"; } - -.fa-firefox-browser:before { - content: "\e007"; } - -.fa-replyd:before { - content: "\f3e6"; } - -.fa-suse:before { - content: "\f7d6"; } - -.fa-jenkins:before { - content: "\f3b6"; } - -.fa-twitter:before { - content: "\f099"; } - -.fa-rockrms:before { - content: "\f3e9"; } - -.fa-pinterest:before { - content: "\f0d2"; } - -.fa-buffer:before { - content: "\f837"; } - -.fa-npm:before { - content: "\f3d4"; } - -.fa-yammer:before { - content: "\f840"; } - -.fa-btc:before { - content: "\f15a"; } - -.fa-dribbble:before { - content: "\f17d"; } - -.fa-stumbleupon-circle:before { - content: "\f1a3"; } - -.fa-internet-explorer:before { - content: "\f26b"; } - -.fa-stubber:before { - content: "\e5c7"; } - -.fa-telegram:before { - content: "\f2c6"; } - -.fa-telegram-plane:before { - content: "\f2c6"; } - -.fa-old-republic:before { - content: "\f510"; } - -.fa-odysee:before { - content: "\e5c6"; } - -.fa-square-whatsapp:before { - content: "\f40c"; } - -.fa-whatsapp-square:before { - content: "\f40c"; } - -.fa-node-js:before { - content: "\f3d3"; } - -.fa-edge-legacy:before { - content: "\e078"; } - -.fa-slack:before { - content: "\f198"; } - -.fa-slack-hash:before { - content: "\f198"; } - -.fa-medrt:before { - content: "\f3c8"; } - -.fa-usb:before { - content: "\f287"; } - -.fa-tumblr:before { - content: "\f173"; } - -.fa-vaadin:before { - content: "\f408"; } - -.fa-quora:before { - content: "\f2c4"; } - -.fa-square-x-twitter:before { - content: "\e61a"; } - -.fa-reacteurope:before { - content: "\f75d"; } - -.fa-medium:before { - content: "\f23a"; } - -.fa-medium-m:before { - content: "\f23a"; } - -.fa-amilia:before { - content: "\f36d"; } - -.fa-mixcloud:before { - content: "\f289"; } - -.fa-flipboard:before { - content: "\f44d"; } - -.fa-viacoin:before { - content: "\f237"; } - -.fa-critical-role:before { - content: "\f6c9"; } - -.fa-sitrox:before { - content: "\e44a"; } - -.fa-discourse:before { - content: "\f393"; } - -.fa-joomla:before { - content: "\f1aa"; } - -.fa-mastodon:before { - content: "\f4f6"; } - -.fa-airbnb:before { - content: "\f834"; } - -.fa-wolf-pack-battalion:before { - content: "\f514"; } - -.fa-buy-n-large:before { - content: "\f8a6"; } - -.fa-gulp:before { - content: "\f3ae"; } - -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; } - -.fa-strava:before { - content: "\f428"; } - -.fa-ember:before { - content: "\f423"; } - -.fa-canadian-maple-leaf:before { - content: "\f785"; } - -.fa-teamspeak:before { - content: "\f4f9"; } - -.fa-pushed:before { - content: "\f3e1"; } - -.fa-wordpress-simple:before { - content: "\f411"; } - -.fa-nutritionix:before { - content: "\f3d6"; } - -.fa-wodu:before { - content: "\e088"; } - -.fa-google-pay:before { - content: "\e079"; } - -.fa-intercom:before { - content: "\f7af"; } - -.fa-zhihu:before { - content: "\f63f"; } - -.fa-korvue:before { - content: "\f42f"; } - -.fa-pix:before { - content: "\e43a"; } - -.fa-steam-symbol:before { - content: "\f3f6"; } - -/* -Projects can override this file. For details, see: -https://www.docsy.dev/docs/adding-content/lookandfeel/#project-style-files -*/ -.td-border-top { - border: none; - border-top: 1px solid #eee; } - -.td-border-none { - border: none; } - -.td-block-padding, .td-default main section { - padding-top: 4rem; - padding-bottom: 4rem; } - @media (min-width: 768px) { - .td-block-padding, .td-default main section { - padding-top: 5rem; - padding-bottom: 5rem; } } -.td-overlay { - position: relative; } - .td-overlay::after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; } - .td-overlay--dark::after { - background-color: rgba(64, 63, 76, 0.3); } - .td-overlay--light::after { - background-color: rgba(211, 243, 238, 0.3); } - .td-overlay__inner { - position: relative; - z-index: 1; } - -@media (min-width: 992px) { - .td-max-width-on-larger-screens, .td-card.card, .td-card-group.card-group, .td-content > .tab-content .tab-pane, .td-content .footnotes, - .td-content > .alert, - .td-content > .highlight, - .td-content > .lead, - .td-content > .td-table, - .td-box .td-content > table, - .td-content > table, - .td-content > blockquote, - .td-content > dl dd, - .td-content > h1, - .td-content > .h1, - .td-content > h2, - .td-content > .h2, - .td-content > ol, - .td-content > p, - .td-content > pre, - .td-content > ul { - max-width: 80%; } } - -.-bg-blue { - color: #fff; - background-color: #0d6efd; } - -.-bg-blue p:not(.p-initial) > a { - color: #81b3fe; } - .-bg-blue p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-blue { - color: #0d6efd; } - -.-bg-indigo { - color: #fff; - background-color: #6610f2; } - -.-bg-indigo p:not(.p-initial) > a { - color: #85b6fe; } - .-bg-indigo p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-indigo { - color: #6610f2; } - -.-bg-purple { - color: #fff; - background-color: #6f42c1; } - -.-bg-purple p:not(.p-initial) > a { - color: #84b5fe; } - .-bg-purple p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-purple { - color: #6f42c1; } - -.-bg-pink { - color: #fff; - background-color: #d63384; } - -.-bg-pink p:not(.p-initial) > a { - color: #81b4fe; } - .-bg-pink p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-pink { - color: #d63384; } - -.-bg-red { - color: #fff; - background-color: #dc3545; } - -.-bg-red p:not(.p-initial) > a { - color: #7db1fe; } - .-bg-red p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-red { - color: #dc3545; } - -.-bg-orange { - color: #000; - background-color: #fd7e14; } - -.-bg-orange p:not(.p-initial) > a { - color: #073b87; } - .-bg-orange p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-orange { - color: #fd7e14; } - -.-bg-yellow { - color: #000; - background-color: #ffc107; } - -.-bg-yellow p:not(.p-initial) > a { - color: #073982; } - .-bg-yellow p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-yellow { - color: #ffc107; } - -.-bg-green { - color: #fff; - background-color: #198754; } - -.-bg-green p:not(.p-initial) > a { - color: #b3d2fe; } - .-bg-green p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-green { - color: #198754; } - -.-bg-teal { - color: #000; - background-color: #20c997; } - -.-bg-teal p:not(.p-initial) > a { - color: #063274; } - .-bg-teal p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-teal { - color: #20c997; } - -.-bg-cyan { - color: #000; - background-color: #0dcaf0; } - -.-bg-cyan p:not(.p-initial) > a { - color: #06377e; } - .-bg-cyan p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-cyan { - color: #0dcaf0; } - -.-bg-black { - color: #fff; - background-color: #000; } - -.-bg-black p:not(.p-initial) > a { - color: white; } - .-bg-black p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-black { - color: #000; } - -.-bg-white { - color: #000; - background-color: #fff; } - -.-bg-white p:not(.p-initial) > a { - color: #0d6efd; } - .-bg-white p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-white { - color: #fff; } - -.-bg-gray { - color: #fff; - background-color: #6c757d; } - -.-bg-gray p:not(.p-initial) > a { - color: #90bdfe; } - .-bg-gray p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-gray { - color: #6c757d; } - -.-bg-gray-dark { - color: #fff; - background-color: #343a40; } - -.-bg-gray-dark p:not(.p-initial) > a { - color: #c8deff; } - .-bg-gray-dark p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-gray-dark { - color: #343a40; } - -.-bg-primary { - color: #fff; - background-color: #30638e; } - -.-bg-primary p:not(.p-initial) > a { - color: #a5c9fe; } - .-bg-primary p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-primary { - color: #30638e; } - -.-bg-secondary { - color: #000; - background-color: #ffa630; } - -.-bg-secondary p:not(.p-initial) > a { - color: #084196; } - .-bg-secondary p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-secondary { - color: #ffa630; } - -.-bg-success { - color: #000; - background-color: #3772ff; } - -.-bg-success p:not(.p-initial) > a { - color: #08439a; } - .-bg-success p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-success { - color: #3772ff; } - -.-bg-info { - color: #000; - background-color: #c0e0de; } - -.-bg-info p:not(.p-initial) > a { - color: #0b5ace; } - .-bg-info p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-info { - color: #c0e0de; } - -.-bg-warning { - color: #000; - background-color: #ed6a5a; } - -.-bg-warning p:not(.p-initial) > a { - color: #0847a2; } - .-bg-warning p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-warning { - color: #ed6a5a; } - -.-bg-danger { - color: #000; - background-color: #ed6a5a; } - -.-bg-danger p:not(.p-initial) > a { - color: #0847a2; } - .-bg-danger p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-danger { - color: #ed6a5a; } - -.-bg-light { - color: #000; - background-color: #d3f3ee; } - -.-bg-light p:not(.p-initial) > a { - color: #0c62e1; } - .-bg-light p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-light { - color: #d3f3ee; } - -.-bg-dark { - color: #fff; - background-color: #403f4c; } - -.-bg-dark p:not(.p-initial) > a { - color: #bdd7fe; } - .-bg-dark p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-dark { - color: #403f4c; } - -.-bg-100 { - color: #000; - background-color: #f8f9fa; } - -.-bg-100 p:not(.p-initial) > a { - color: #0d6bf7; } - .-bg-100 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-100 { - color: #f8f9fa; } - -.-bg-200 { - color: #000; - background-color: #e9ecef; } - -.-bg-200 p:not(.p-initial) > a { - color: #0c66ea; } - .-bg-200 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-200 { - color: #e9ecef; } - -.-bg-300 { - color: #000; - background-color: #dee2e6; } - -.-bg-300 p:not(.p-initial) > a { - color: #0c61e0; } - .-bg-300 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-300 { - color: #dee2e6; } - -.-bg-400 { - color: #000; - background-color: #ced4da; } - -.-bg-400 p:not(.p-initial) > a { - color: #0b5bd2; } - .-bg-400 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-400 { - color: #ced4da; } - -.-bg-500 { - color: #000; - background-color: #adb5bd; } - -.-bg-500 p:not(.p-initial) > a { - color: #094eb4; } - .-bg-500 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-500 { - color: #adb5bd; } - -.-bg-600 { - color: #fff; - background-color: #6c757d; } - -.-bg-600 p:not(.p-initial) > a { - color: #90bdfe; } - .-bg-600 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-600 { - color: #6c757d; } - -.-bg-700 { - color: #fff; - background-color: #495057; } - -.-bg-700 p:not(.p-initial) > a { - color: #b3d2fe; } - .-bg-700 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-700 { - color: #495057; } - -.-bg-800 { - color: #fff; - background-color: #343a40; } - -.-bg-800 p:not(.p-initial) > a { - color: #c8deff; } - .-bg-800 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-800 { - color: #343a40; } - -.-bg-900 { - color: #fff; - background-color: #212529; } - -.-bg-900 p:not(.p-initial) > a { - color: #dceaff; } - .-bg-900 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-900 { - color: #212529; } - -.-bg-0 { - color: #fff; - background-color: #403f4c; } - -.-bg-0 p:not(.p-initial) > a { - color: #bdd7fe; } - .-bg-0 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-0 { - color: #403f4c; } - -.-bg-1 { - color: #fff; - background-color: #30638e; } - -.-bg-1 p:not(.p-initial) > a { - color: #a5c9fe; } - .-bg-1 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-1 { - color: #30638e; } - -.-bg-2 { - color: #000; - background-color: #ffa630; } - -.-bg-2 p:not(.p-initial) > a { - color: #084196; } - .-bg-2 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-2 { - color: #ffa630; } - -.-bg-3 { - color: #000; - background-color: #c0e0de; } - -.-bg-3 p:not(.p-initial) > a { - color: #0b5ace; } - .-bg-3 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-3 { - color: #c0e0de; } - -.-bg-4 { - color: #000; - background-color: #fff; } - -.-bg-4 p:not(.p-initial) > a { - color: #0d6efd; } - .-bg-4 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-4 { - color: #fff; } - -.-bg-5 { - color: #fff; - background-color: #6c757d; } - -.-bg-5 p:not(.p-initial) > a { - color: #90bdfe; } - .-bg-5 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-5 { - color: #6c757d; } - -.-bg-6 { - color: #000; - background-color: #3772ff; } - -.-bg-6 p:not(.p-initial) > a { - color: #08439a; } - .-bg-6 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-6 { - color: #3772ff; } - -.-bg-7 { - color: #000; - background-color: #ed6a5a; } - -.-bg-7 p:not(.p-initial) > a { - color: #0847a2; } - .-bg-7 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-7 { - color: #ed6a5a; } - -.-bg-8 { - color: #fff; - background-color: #403f4c; } - -.-bg-8 p:not(.p-initial) > a { - color: #bdd7fe; } - .-bg-8 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-8 { - color: #403f4c; } - -.-bg-9 { - color: #000; - background-color: #ed6a5a; } - -.-bg-9 p:not(.p-initial) > a { - color: #0847a2; } - .-bg-9 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-9 { - color: #ed6a5a; } - -.-bg-10 { - color: #fff; - background-color: #30638e; } - -.-bg-10 p:not(.p-initial) > a { - color: #a5c9fe; } - .-bg-10 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-10 { - color: #30638e; } - -.-bg-11 { - color: #000; - background-color: #ffa630; } - -.-bg-11 p:not(.p-initial) > a { - color: #084196; } - .-bg-11 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-11 { - color: #ffa630; } - -.-bg-12 { - color: #000; - background-color: #c0e0de; } - -.-bg-12 p:not(.p-initial) > a { - color: #0b5ace; } - .-bg-12 p:not(.p-initial) > a:hover { - color: #094db1; } - -.-text-12 { - color: #c0e0de; } - -.td-table:not(.td-initial), .td-content table:not(.td-initial), .td-box table:not(.td-initial) { - display: block; } - -.td-box--height-min { - min-height: 300px; } - -.td-box--height-med { - min-height: 400px; } - -.td-box--height-max { - min-height: 500px; } - -.td-box--height-full { - min-height: 100vh; } - -@media (min-width: 768px) { - .td-box--height-min { - min-height: 450px; } - .td-box--height-med { - min-height: 500px; } - .td-box--height-max { - min-height: 650px; } } - -.td-box .row { - padding-left: 5vw; - padding-right: 5vw; } - -.td-box.linkbox { - padding: 5vh 5vw; } - -.td-box--0 { - color: #fff; - background-color: #403f4c; } - .td-box--0 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #403f4c transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--0 p > a, .td-box--0 span > a { - color: #bdd7fe; } - .td-box--0 p > a:hover, .td-box--0 span > a:hover { - color: #d1e3fe; } - -.td-box--1 { - color: #fff; - background-color: #30638e; } - .td-box--1 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #30638e transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--1 p > a, .td-box--1 span > a { - color: #a5c9fe; } - .td-box--1 p > a:hover, .td-box--1 span > a:hover { - color: #c0d9fe; } - -.td-box--2 { - color: #000; - background-color: #ffa630; } - .td-box--2 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffa630 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--2 p > a, .td-box--2 span > a { - color: #084196; } - .td-box--2 p > a:hover, .td-box--2 span > a:hover { - color: #062e69; } - -.td-box--3 { - color: #000; - background-color: #c0e0de; } - .td-box--3 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #c0e0de transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--3 p > a, .td-box--3 span > a { - color: #0b5ace; } - .td-box--3 p > a:hover, .td-box--3 span > a:hover { - color: #083f90; } - -.td-box--4 { - color: #000; - background-color: #fff; } - .td-box--4 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #fff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--4 p > a, .td-box--4 span > a { - color: #0d6efd; } - .td-box--4 p > a:hover, .td-box--4 span > a:hover { - color: #094db1; } - -.td-box--5 { - color: #fff; - background-color: #6c757d; } - .td-box--5 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6c757d transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--5 p > a, .td-box--5 span > a { - color: #90bdfe; } - .td-box--5 p > a:hover, .td-box--5 span > a:hover { - color: #b1d1fe; } - -.td-box--6 { - color: #000; - background-color: #3772ff; } - .td-box--6 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #3772ff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--6 p > a, .td-box--6 span > a { - color: #08439a; } - .td-box--6 p > a:hover, .td-box--6 span > a:hover { - color: #062f6c; } - -.td-box--7 { - color: #000; - background-color: #ed6a5a; } - .td-box--7 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--7 p > a, .td-box--7 span > a { - color: #0847a2; } - .td-box--7 p > a:hover, .td-box--7 span > a:hover { - color: #063271; } - -.td-box--8 { - color: #fff; - background-color: #403f4c; } - .td-box--8 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #403f4c transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--8 p > a, .td-box--8 span > a { - color: #bdd7fe; } - .td-box--8 p > a:hover, .td-box--8 span > a:hover { - color: #d1e3fe; } - -.td-box--9 { - color: #000; - background-color: #ed6a5a; } - .td-box--9 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--9 p > a, .td-box--9 span > a { - color: #0847a2; } - .td-box--9 p > a:hover, .td-box--9 span > a:hover { - color: #063271; } - -.td-box--10 { - color: #fff; - background-color: #30638e; } - .td-box--10 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #30638e transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--10 p > a, .td-box--10 span > a { - color: #a5c9fe; } - .td-box--10 p > a:hover, .td-box--10 span > a:hover { - color: #c0d9fe; } - -.td-box--11 { - color: #000; - background-color: #ffa630; } - .td-box--11 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffa630 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--11 p > a, .td-box--11 span > a { - color: #084196; } - .td-box--11 p > a:hover, .td-box--11 span > a:hover { - color: #062e69; } - -.td-box--12 { - color: #000; - background-color: #c0e0de; } - .td-box--12 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #c0e0de transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--12 p > a, .td-box--12 span > a { - color: #0b5ace; } - .td-box--12 p > a:hover, .td-box--12 span > a:hover { - color: #083f90; } - -.td-box--blue { - color: #fff; - background-color: #0d6efd; } - .td-box--blue .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #0d6efd transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--blue p > a, .td-box--blue span > a { - color: #81b3fe; } - .td-box--blue p > a:hover, .td-box--blue span > a:hover { - color: #a7cafe; } - -.td-box--indigo { - color: #fff; - background-color: #6610f2; } - .td-box--indigo .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6610f2 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--indigo p > a, .td-box--indigo span > a { - color: #85b6fe; } - .td-box--indigo p > a:hover, .td-box--indigo span > a:hover { - color: #aaccfe; } - -.td-box--purple { - color: #fff; - background-color: #6f42c1; } - .td-box--purple .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6f42c1 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--purple p > a, .td-box--purple span > a { - color: #84b5fe; } - .td-box--purple p > a:hover, .td-box--purple span > a:hover { - color: #a9cbfe; } - -.td-box--pink { - color: #fff; - background-color: #d63384; } - .td-box--pink .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #d63384 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--pink p > a, .td-box--pink span > a { - color: #81b4fe; } - .td-box--pink p > a:hover, .td-box--pink span > a:hover { - color: #a7cbfe; } - -.td-box--red { - color: #fff; - background-color: #dc3545; } - .td-box--red .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #dc3545 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--red p > a, .td-box--red span > a { - color: #7db1fe; } - .td-box--red p > a:hover, .td-box--red span > a:hover { - color: #a4c8fe; } - -.td-box--orange { - color: #000; - background-color: #fd7e14; } - .td-box--orange .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #fd7e14 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--orange p > a, .td-box--orange span > a { - color: #073b87; } - .td-box--orange p > a:hover, .td-box--orange span > a:hover { - color: #05295f; } - -.td-box--yellow { - color: #000; - background-color: #ffc107; } - .td-box--yellow .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffc107 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--yellow p > a, .td-box--yellow span > a { - color: #073982; } - .td-box--yellow p > a:hover, .td-box--yellow span > a:hover { - color: #05285b; } - -.td-box--green { - color: #fff; - background-color: #198754; } - .td-box--green .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #198754 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--green p > a, .td-box--green span > a { - color: #b3d2fe; } - .td-box--green p > a:hover, .td-box--green span > a:hover { - color: #cae0fe; } - -.td-box--teal { - color: #000; - background-color: #20c997; } - .td-box--teal .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #20c997 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--teal p > a, .td-box--teal span > a { - color: #063274; } - .td-box--teal p > a:hover, .td-box--teal span > a:hover { - color: #042351; } - -.td-box--cyan { - color: #000; - background-color: #0dcaf0; } - .td-box--cyan .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #0dcaf0 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--cyan p > a, .td-box--cyan span > a { - color: #06377e; } - .td-box--cyan p > a:hover, .td-box--cyan span > a:hover { - color: #042758; } - -.td-box--black { - color: #fff; - background-color: #000; } - .td-box--black .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #000 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--black p > a, .td-box--black span > a { - color: white; } - .td-box--black p > a:hover, .td-box--black span > a:hover { - color: white; } - -.td-box--white { - color: #000; - background-color: #fff; } - .td-box--white .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #fff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--white p > a, .td-box--white span > a { - color: #0d6efd; } - .td-box--white p > a:hover, .td-box--white span > a:hover { - color: #094db1; } - -.td-box--gray { - color: #fff; - background-color: #6c757d; } - .td-box--gray .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6c757d transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--gray p > a, .td-box--gray span > a { - color: #90bdfe; } - .td-box--gray p > a:hover, .td-box--gray span > a:hover { - color: #b1d1fe; } - -.td-box--gray-dark { - color: #fff; - background-color: #343a40; } - .td-box--gray-dark .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #343a40 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--gray-dark p > a, .td-box--gray-dark span > a { - color: #c8deff; } - .td-box--gray-dark p > a:hover, .td-box--gray-dark span > a:hover { - color: #d9e8ff; } - -.td-box--primary { - color: #fff; - background-color: #30638e; } - .td-box--primary .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #30638e transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--primary p > a, .td-box--primary span > a { - color: #a5c9fe; } - .td-box--primary p > a:hover, .td-box--primary span > a:hover { - color: #c0d9fe; } - -.td-box--secondary { - color: #000; - background-color: #ffa630; } - .td-box--secondary .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ffa630 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--secondary p > a, .td-box--secondary span > a { - color: #084196; } - .td-box--secondary p > a:hover, .td-box--secondary span > a:hover { - color: #062e69; } - -.td-box--success { - color: #000; - background-color: #3772ff; } - .td-box--success .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #3772ff transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--success p > a, .td-box--success span > a { - color: #08439a; } - .td-box--success p > a:hover, .td-box--success span > a:hover { - color: #062f6c; } - -.td-box--info { - color: #000; - background-color: #c0e0de; } - .td-box--info .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #c0e0de transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--info p > a, .td-box--info span > a { - color: #0b5ace; } - .td-box--info p > a:hover, .td-box--info span > a:hover { - color: #083f90; } - -.td-box--warning { - color: #000; - background-color: #ed6a5a; } - .td-box--warning .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--warning p > a, .td-box--warning span > a { - color: #0847a2; } - .td-box--warning p > a:hover, .td-box--warning span > a:hover { - color: #063271; } - -.td-box--danger { - color: #000; - background-color: #ed6a5a; } - .td-box--danger .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ed6a5a transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--danger p > a, .td-box--danger span > a { - color: #0847a2; } - .td-box--danger p > a:hover, .td-box--danger span > a:hover { - color: #063271; } - -.td-box--light { - color: #000; - background-color: #d3f3ee; } - .td-box--light .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #d3f3ee transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--light p > a, .td-box--light span > a { - color: #0c62e1; } - .td-box--light p > a:hover, .td-box--light span > a:hover { - color: #08459e; } - -.td-box--dark, .td-footer { - color: #fff; - background-color: #403f4c; } - .td-box--dark .td-arrow-down::before, .td-footer .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #403f4c transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--dark p > a, .td-footer p > a, .td-box--dark span > a, .td-footer span > a { - color: #bdd7fe; } - .td-box--dark p > a:hover, .td-footer p > a:hover, .td-box--dark span > a:hover, .td-footer span > a:hover { - color: #d1e3fe; } - -.td-box--100 { - color: #000; - background-color: #f8f9fa; } - .td-box--100 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #f8f9fa transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--100 p > a, .td-box--100 span > a { - color: #0d6bf7; } - .td-box--100 p > a:hover, .td-box--100 span > a:hover { - color: #094bad; } - -.td-box--200 { - color: #000; - background-color: #e9ecef; } - .td-box--200 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #e9ecef transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--200 p > a, .td-box--200 span > a { - color: #0c66ea; } - .td-box--200 p > a:hover, .td-box--200 span > a:hover { - color: #0847a4; } - -.td-box--300 { - color: #000; - background-color: #dee2e6; } - .td-box--300 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #dee2e6 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--300 p > a, .td-box--300 span > a { - color: #0c61e0; } - .td-box--300 p > a:hover, .td-box--300 span > a:hover { - color: #08449d; } - -.td-box--400 { - color: #000; - background-color: #ced4da; } - .td-box--400 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #ced4da transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--400 p > a, .td-box--400 span > a { - color: #0b5bd2; } - .td-box--400 p > a:hover, .td-box--400 span > a:hover { - color: #084093; } - -.td-box--500 { - color: #000; - background-color: #adb5bd; } - .td-box--500 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #adb5bd transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--500 p > a, .td-box--500 span > a { - color: #094eb4; } - .td-box--500 p > a:hover, .td-box--500 span > a:hover { - color: #06377e; } - -.td-box--600 { - color: #fff; - background-color: #6c757d; } - .td-box--600 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #6c757d transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--600 p > a, .td-box--600 span > a { - color: #90bdfe; } - .td-box--600 p > a:hover, .td-box--600 span > a:hover { - color: #b1d1fe; } - -.td-box--700 { - color: #fff; - background-color: #495057; } - .td-box--700 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #495057 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--700 p > a, .td-box--700 span > a { - color: #b3d2fe; } - .td-box--700 p > a:hover, .td-box--700 span > a:hover { - color: #cae0fe; } - -.td-box--800 { - color: #fff; - background-color: #343a40; } - .td-box--800 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #343a40 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--800 p > a, .td-box--800 span > a { - color: #c8deff; } - .td-box--800 p > a:hover, .td-box--800 span > a:hover { - color: #d9e8ff; } - -.td-box--900 { - color: #fff; - background-color: #212529; } - .td-box--900 .td-arrow-down::before { - left: 50%; - margin-left: -30px; - bottom: -25px; - border-style: solid; - border-width: 25px 30px 0 30px; - border-color: #212529 transparent transparent transparent; - z-index: 3; - position: absolute; - content: ""; } - -.td-box--900 p > a, .td-box--900 span > a { - color: #dceaff; } - .td-box--900 p > a:hover, .td-box--900 span > a:hover { - color: #e7f0ff; } - -[data-bs-theme="dark"] .td-box--white { - color: var(--bs-body-color); - background-color: var(--bs-body-bg); } - [data-bs-theme="dark"] .td-box--white p > a, [data-bs-theme="dark"] .td-box--white span > a { - color: var(--bs-link-color); } - [data-bs-theme="dark"] .td-box--white p > a:focus, [data-bs-theme="dark"] .td-box--white p > a:hover, [data-bs-theme="dark"] .td-box--white span > a:focus, [data-bs-theme="dark"] .td-box--white span > a:hover { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); } - [data-bs-theme="dark"] .td-box--white .td-arrow-down::before { - border-color: var(--bs-body-bg) transparent transparent transparent; } - -.td-blog .td-rss-button { - border-radius: 2rem; - float: right; - display: none; } - -.td-blog-posts-list { - margin-top: 1.5rem !important; } - .td-blog-posts-list__item { - display: flex; - align-items: flex-start; - margin-bottom: 1.5rem !important; } - .td-blog-posts-list__item__body { - flex: 1; } - -[data-bs-theme="dark"] { - --td-pre-bg: #1b1f22; } - -.td-content .highlight { - margin: 2rem 0; - padding: 0; - position: relative; } - .td-content .highlight .click-to-copy { - display: block; - text-align: right; } - .td-content .highlight pre { - margin: 0; - padding: 1rem; - border-radius: inherit; } - .td-content .highlight pre button.td-click-to-copy { - position: absolute; - color: var(--bs-tertiary-color); - border-width: 0; - background-color: transparent; - background-image: none; - --bs-btn-box-shadow: 0; - padding: var(--bs-btn-padding-y) calc(var(--bs-btn-padding-x) / 2); - right: 4px; - top: 2px; } - .td-content .highlight pre button.td-click-to-copy:hover { - color: var(--bs-secondary-color); - background-color: var(--bs-dark-bg-subtle); } - .td-content .highlight pre button.td-click-to-copy:active { - color: var(--bs-secondary-color); - background-color: var(--bs-dark-bg-subtle); - transform: translateY(2px); } - -.td-content p code, -.td-content li > code, -.td-content table code { - color: inherit; - padding: 0.2em 0.4em; - margin: 0; - font-size: 85%; - word-break: normal; - background-color: var(--td-pre-bg); - border-radius: 0.375rem; } - .td-content p code br, - .td-content li > code br, - .td-content table code br { - display: none; } - -.td-content pre { - word-wrap: normal; - background-color: var(--td-pre-bg); - border: solid var(--bs-border-color); - border-width: 1px; - padding: 1rem; } - .td-content pre > code { - background-color: inherit !important; - padding: 0; - margin: 0; - font-size: 100%; - word-break: normal; - white-space: pre; - border: 0; } - -.td-content pre.mermaid { - background-color: inherit; - font-size: 0; - padding: 0; } - -@media (min-width: 768px) { - .td-navbar-cover { - background: transparent !important; } - .td-navbar-cover .nav-link { - text-shadow: 1px 1px 2px #403f4c; } } - -.td-navbar-cover.navbar-bg-onscroll .nav-link { - text-shadow: none; } - -.navbar-bg-onscroll { - background: #30638e !important; - opacity: inherit; } - -.td-navbar { - background: #30638e; - min-height: 4rem; - margin: 0; - z-index: 32; } - .td-navbar .navbar-brand { - text-transform: none; } - .td-navbar .navbar-brand__name { - font-weight: 700; } - .td-navbar .navbar-brand svg { - display: inline-block; - margin: 0 10px; - height: 30px; } - .td-navbar .navbar-nav { - padding-top: 0.5rem; - white-space: nowrap; } - .td-navbar .nav-link { - text-transform: none; - font-weight: 700; } - .td-navbar .dropdown { - min-width: 50px; } - @media (min-width: 768px) { - .td-navbar { - position: fixed; - top: 0; - width: 100%; } - .td-navbar .nav-item { - padding-inline-end: 0.5rem; } - .td-navbar .navbar-nav { - padding-top: 0 !important; } } - @media (max-width: 991.98px) { - .td-navbar .td-navbar-nav-scroll { - max-width: 100%; - height: 2.5rem; - overflow: hidden; - font-size: 0.9rem; } - .td-navbar .navbar-brand { - margin-right: 0; } - .td-navbar .navbar-nav { - padding-bottom: 2rem; - overflow-x: auto; } } - .td-navbar .td-light-dark-menu .bi { - width: 1em; - height: 1em; - vertical-align: -.125em; - fill: currentcolor; } - @media (max-width: 991.98px) { - .td-navbar .td-light-dark-menu.dropdown { - position: unset; } } -#main_navbar li i { - padding-right: 0.5em; } - #main_navbar li i:before { - display: inline-block; - text-align: center; - min-width: 1em; } - -#main_navbar .alert { - background-color: inherit; - padding: 0; - color: #ffa630; - border: 0; - font-weight: inherit; } - #main_navbar .alert:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - font-weight: 900; - content: "\f0d9"; - padding-left: 0.5em; - padding-right: 0.5em; } - -nav.foldable-nav#td-section-nav { - position: relative; } - -nav.foldable-nav#td-section-nav label { - margin-bottom: 0; - width: 100%; } - -nav.foldable-nav .td-sidebar-nav__section, -nav.foldable-nav .with-child ul { - list-style: none; - padding: 0; - margin: 0; } - -nav.foldable-nav .ul-1 > li { - padding-left: 1.5em; } - -nav.foldable-nav ul.foldable { - display: none; } - -nav.foldable-nav input:checked ~ ul.foldable { - display: block; } - -nav.foldable-nav input[type="checkbox"] { - display: none; } - -nav.foldable-nav .with-child, -nav.foldable-nav .without-child { - position: relative; - padding-left: 1.5em; } - -nav.foldable-nav .ul-1 .with-child > label:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - font-weight: 900; - content: "\f0da"; - position: absolute; - left: 0.1em; - padding-left: 0.4em; - padding-right: 0.4em; - font-size: 1em; - color: var(--bs-secondary-color); - transition: all 0.5s; } - nav.foldable-nav .ul-1 .with-child > label:before:hover { - transform: rotate(90deg); } - -nav.foldable-nav .ul-1 .with-child > input:checked ~ label:before { - color: var(--bs-secondary-color); - transform: rotate(90deg); - transition: transform 0.5s; } - -nav.foldable-nav .with-child ul { - margin-top: 0.1em; } - -@media (hover: hover) and (pointer: fine) { - nav.foldable-nav .ul-1 .with-child > label:hover:before { - color: var(--bs-link-color); - transition: color 0.3s; } - nav.foldable-nav .ul-1 .with-child > input:checked ~ label:hover:before { - color: var(--bs-link-color); - transition: color 0.3s; } } - -.td-sidebar-nav { - padding-right: 0.5rem; - margin-right: -15px; - margin-left: -15px; } - @media (min-width: 768px) { - @supports (position: sticky) { - .td-sidebar-nav { - max-height: calc(100vh - 8.5rem); - overflow-y: auto; } } } - @media (min-width: 992px) { - .td-sidebar-nav.td-sidebar-nav--search-disabled { - padding-top: 1rem; } - @supports (position: sticky) { - .td-sidebar-nav.td-sidebar-nav--search-disabled { - max-height: calc(calc(100vh - 8.5rem) + 4.5rem); } } } - @media (min-width: 768px) { - .td-sidebar-nav { - display: block !important; } } - .td-sidebar-nav__section { - padding-left: 0; } - .td-sidebar-nav__section li { - list-style: none; } - .td-sidebar-nav__section.ul-0, .td-sidebar-nav__section ul { - padding: 0; - margin: 0; } - @media (min-width: 768px) { - .td-sidebar-nav__section .ul-1 ul { - padding-left: 1.5em; } } - .td-sidebar-nav__section-title { - display: block; - font-weight: 500; } - .td-sidebar-nav__section-title .active { - font-weight: 700; } - .td-sidebar-nav__section-title a { - color: var(--bs-secondary-color); } - .td-sidebar-nav .td-sidebar-link { - display: block; - padding-bottom: 0.375rem; } - .td-sidebar-nav .td-sidebar-link__page { - color: var(--bs-body-color); - font-weight: 300; } - .td-sidebar-nav a:focus, .td-sidebar-nav a:hover { - color: var(--bs-link-color); } - .td-sidebar-nav a.active { - font-weight: 700; } - .td-sidebar-nav .dropdown a { - color: var(--bs-tertiary-color); } - .td-sidebar-nav .dropdown .nav-link { - padding: 0 0 1rem; } - .td-sidebar-nav > .td-sidebar-nav__section { - padding-left: 1.5rem; } - .td-sidebar-nav li i { - padding-right: 0.5em; } - .td-sidebar-nav li i:before { - display: inline-block; - text-align: center; - min-width: 1em; } - .td-sidebar-nav .td-sidebar-link.tree-root { - font-weight: 700; - border-bottom: 1px solid var(--bs-tertiary-color); - margin-bottom: 1rem; } - -.td-sidebar { - padding-bottom: 1rem; } - .td-sidebar a { - text-decoration: none; } - .td-sidebar a:focus, .td-sidebar a:hover { - text-decoration: initial; } - .td-sidebar .btn-link { - text-decoration: none; } - @media (min-width: 768px) { - .td-sidebar { - padding-top: 4rem; - background-color: var(--bs-body-tertiary-bg); - padding-right: 1rem; - border-right: 1px solid var(--bs-border-color); } } - .td-sidebar__toggle { - line-height: 1; - color: var(--bs-body-color); - margin: 1rem; } - .td-sidebar__search { - padding: 1rem 0; } - .td-sidebar__inner { - order: 0; } - @media (min-width: 768px) { - @supports (position: sticky) { - .td-sidebar__inner { - position: sticky; - top: 4rem; - z-index: 10; - height: calc(100vh - 5rem); } } } - @media (min-width: 1200px) { - .td-sidebar__inner { - flex: 0 1 320px; } } - .td-sidebar__inner .td-search-box { - width: 100%; } - .td-sidebar #content-desktop { - display: block; } - .td-sidebar #content-mobile { - display: none; } - @media (max-width: 991.98px) { - .td-sidebar #content-desktop { - display: none; } - .td-sidebar #content-mobile { - display: block; } } -.td-sidebar-toc { - border-left: 1px solid var(--bs-border-color); - order: 2; - padding-top: 0.75rem; - padding-bottom: 1.5rem; - vertical-align: top; } - .td-sidebar-toc a { - text-decoration: none; } - .td-sidebar-toc a:focus, .td-sidebar-toc a:hover { - text-decoration: initial; } - .td-sidebar-toc .btn-link { - text-decoration: none; } - @supports (position: sticky) { - .td-sidebar-toc { - position: sticky; - top: 4rem; - height: calc(100vh - 4rem); - overflow-y: auto; } } - .td-sidebar-toc .td-page-meta a { - display: block; - font-weight: 500; } - -.td-toc a { - display: block; - font-weight: 300; - padding-bottom: 0.25rem; } - -.td-toc li { - list-style: none; - display: block; } - -.td-toc li li { - margin-left: 0.5rem; } - -.td-toc #TableOfContents a { - color: var(--bs-secondary-color); } - .td-toc #TableOfContents a:focus, .td-toc #TableOfContents a:hover { - color: initial; } - -.td-toc ul { - padding-left: 0; } - -@media print { - .td-breadcrumbs { - display: none !important; } } - -.td-breadcrumbs .breadcrumb { - background: inherit; - padding-left: 0; - padding-top: 0; } - -.alert { - font-weight: 500; - color: inherit; - border-radius: 0; } - .alert-primary, .pageinfo-primary { - border-style: solid; - border-color: #30638e; - border-width: 0 0 0 4px; } - .alert-primary .alert-heading, .pageinfo-primary .alert-heading { - color: #30638e; } - .alert-secondary, .pageinfo-secondary { - border-style: solid; - border-color: #ffa630; - border-width: 0 0 0 4px; } - .alert-secondary .alert-heading, .pageinfo-secondary .alert-heading { - color: #ffa630; } - .alert-success, .pageinfo-success { - border-style: solid; - border-color: #3772ff; - border-width: 0 0 0 4px; } - .alert-success .alert-heading, .pageinfo-success .alert-heading { - color: #3772ff; } - .alert-info, .pageinfo-info { - border-style: solid; - border-color: #c0e0de; - border-width: 0 0 0 4px; } - .alert-info .alert-heading, .pageinfo-info .alert-heading { - color: #c0e0de; } - .alert-warning, .pageinfo-warning { - border-style: solid; - border-color: #ed6a5a; - border-width: 0 0 0 4px; } - .alert-warning .alert-heading, .pageinfo-warning .alert-heading { - color: #ed6a5a; } - .alert-danger, .pageinfo-danger { - border-style: solid; - border-color: #ed6a5a; - border-width: 0 0 0 4px; } - .alert-danger .alert-heading, .pageinfo-danger .alert-heading { - color: #ed6a5a; } - .alert-light, .pageinfo-light { - border-style: solid; - border-color: #d3f3ee; - border-width: 0 0 0 4px; } - .alert-light .alert-heading, .pageinfo-light .alert-heading { - color: #d3f3ee; } - .alert-dark, .pageinfo-dark { - border-style: solid; - border-color: #403f4c; - border-width: 0 0 0 4px; } - .alert-dark .alert-heading, .pageinfo-dark .alert-heading { - color: #403f4c; } - -.td-content { - order: 1; } - .td-content p, - .td-content li, - .td-content td { - font-weight: 400; } - .td-content > h1, .td-content > .h1 { - font-weight: 700; - margin-bottom: 1rem; } - .td-content > h2, .td-content > .h2 { - margin-bottom: 1rem; } - .td-content > h2:not(:first-child), .td-content > .h2:not(:first-child) { - margin-top: 3rem; } - .td-content > h2 + h3, .td-content > .h2 + h3, .td-content > h2 + .h3, .td-content > h2 + .td-footer__links-item, .td-content > .h2 + .h3, .td-content > .h2 + .td-footer__links-item { - margin-top: 1rem; } - .td-content > h3, .td-content > .h3, .td-content > .td-footer__links-item, - .td-content > h4, - .td-content > .h4, - .td-content > h5, - .td-content > .h5, - .td-content > h6, - .td-content > .h6 { - margin-bottom: 1rem; - margin-top: 2rem; } - .td-content blockquote { - padding: 0 0 0 1rem; - margin-bottom: 1rem; - color: var(--bs-secondary-color); - border-left: 6px solid var(--bs-primary); } - .td-content ul li, - .td-content ol li { - margin-bottom: 0.25rem; } - .td-content strong { - font-weight: 700; } - .td-content .alert:not(:first-child) { - margin-top: 2rem; - margin-bottom: 2rem; } - .td-content .lead { - margin-bottom: 1.5rem; } - -.td-title { - margin-top: 1rem; - margin-bottom: 0.5rem; } - @media (min-width: 576px) { - .td-title { - font-size: 3rem; } } -.td-heading-self-link { - font-size: 90%; - padding-left: 0.25em; - text-decoration: none; - visibility: hidden; } - .td-heading-self-link:before { - content: '#'; } - @media (hover: none) and (pointer: coarse), (max-width: 576px) { - .td-heading-self-link { - visibility: visible; } } -h1:hover > .td-heading-self-link, .h1:hover > .td-heading-self-link { - visibility: visible; } - -h2:hover > .td-heading-self-link, .h2:hover > .td-heading-self-link { - visibility: visible; } - -h3:hover > .td-heading-self-link, .h3:hover > .td-heading-self-link, .td-footer__links-item:hover > .td-heading-self-link { - visibility: visible; } - -h4:hover > .td-heading-self-link, .h4:hover > .td-heading-self-link { - visibility: visible; } - -h5:hover > .td-heading-self-link, .h5:hover > .td-heading-self-link { - visibility: visible; } - -h6:hover > .td-heading-self-link, .h6:hover > .td-heading-self-link { - visibility: visible; } - -.td-search { - background: transparent; - position: relative; - width: 100%; } - .td-search__icon { - display: flex; - align-items: center; - height: 100%; - position: absolute; - left: 0.75em; - pointer-events: none; } - .td-search__icon:before { - content: "\f002"; } - .td-navbar .td-search__icon { - color: inherit; } - .td-search__input { - width: 100%; - text-indent: 1.25em; } - .td-search__input:not(:focus) { - background: transparent; } - .td-search__input.form-control:focus { - border-color: #f5f7f9; - box-shadow: 0 0 0 2px #83a1bb; - color: var(--bs-body-color); } - .td-navbar .td-search__input { - border: none; - color: inherit; } - .td-navbar .td-search__input::-webkit-input-placeholder { - color: inherit; } - .td-navbar .td-search__input:-moz-placeholder { - color: inherit; } - .td-navbar .td-search__input::-moz-placeholder { - color: inherit; } - .td-navbar .td-search__input:-ms-input-placeholder { - color: inherit; } - .td-search:focus-within .td-search__icon { - display: none; } - .td-search:focus-within .td-search-input { - text-indent: 0px; } - .td-search:not(:focus-within) { - color: var(--bs-secondary-color); } - -.td-sidebar .td-search--algolia { - display: block; - padding: 0 0.5rem; } - .td-sidebar .td-search--algolia > button { - margin: 0; - width: 100%; } - -.td-search--offline:focus-within .td-search__icon { - display: flex; - color: var(--bs-secondary-color); } - -.td-offline-search-results { - max-width: 90%; } - .td-offline-search-results .card { - margin-bottom: 0.5rem; } - .td-offline-search-results .card .card-header { - font-weight: bold; } - .td-offline-search-results__close-button { - float: right; } - .td-offline-search-results__close-button:after { - content: "\f00d"; } - -.td-outer { - display: flex; - flex-direction: column; - min-height: 100vh; } - -@media (min-width: 768px) { - .td-default main > section:first-of-type { - padding-top: 8rem; } } - -.td-main { - flex-grow: 1; } - -.td-404 main, -.td-main main { - padding-top: 1.5rem; - padding-bottom: 2rem; } - @media (min-width: 768px) { - .td-404 main, - .td-main main { - padding-top: 5.5rem; } } -.td-cover-block--height-min { - min-height: 300px; } - -.td-cover-block--height-med { - min-height: 400px; } - -.td-cover-block--height-max { - min-height: 500px; } - -.td-cover-block--height-full { - min-height: 100vh; } - -@media (min-width: 768px) { - .td-cover-block--height-min { - min-height: 450px; } - .td-cover-block--height-med { - min-height: 500px; } - .td-cover-block--height-max { - min-height: 650px; } } - -.td-cover-logo { - margin-right: 0.5em; } - -.td-cover-block { - position: relative; - padding-top: 5rem; - padding-bottom: 5rem; - background-repeat: no-repeat; - background-position: 50% 0; - background-size: cover; } - .td-cover-block > .byline { - position: absolute; - bottom: 2px; - right: 4px; } - -.td-bg-arrow-wrapper { - position: relative; } - -.section-index .entry { - padding: 0.75rem; } - -.section-index h5, .section-index .h5 { - margin-bottom: 0; } - .section-index h5 a, .section-index .h5 a { - font-weight: 700; } - -.section-index p { - margin-top: 0; } - -.pageinfo { - font-weight: 500; - background: var(--bs-alert-bg); - color: inherit; - margin: 2rem auto; - padding: 1.5rem; - padding-bottom: 0.5rem; } - .pageinfo-primary { - border-width: 0; } - .pageinfo-secondary { - border-width: 0; } - .pageinfo-success { - border-width: 0; } - .pageinfo-info { - border-width: 0; } - .pageinfo-warning { - border-width: 0; } - .pageinfo-danger { - border-width: 0; } - .pageinfo-light { - border-width: 0; } - .pageinfo-dark { - border-width: 0; } - -.td-page-meta__lastmod { - margin-top: 3rem !important; - padding-top: 1rem !important; } - -.taxonomy-terms-article { - width: 100%; - clear: both; - font-size: 0.8rem; } - .taxonomy-terms-article .taxonomy-title { - display: inline; - font-size: 1.25em; - height: 1em; - line-height: 1em; - margin-right: 0.5em; - padding: 0; } - -.taxonomy-terms-cloud { - width: 100%; - clear: both; - font-size: 0.8rem; } - .taxonomy-terms-cloud .taxonomy-title { - display: inline-block; - width: 100%; - font-size: 1rem; - font-weight: 700; - color: var(--bs-primary-text-emphasis); - border-bottom: 1px solid var(--bs-tertiary-color); - margin-bottom: 1em; - padding-bottom: 0.375rem; - margin-top: 1em; } - -.taxonomy-terms-page { - max-width: 800px; - margin: auto; } - .taxonomy-terms-page h1, .taxonomy-terms-page .h1 { - margin-bottom: 1em; } - .taxonomy-terms-page .taxonomy-terms-cloud { - font-size: 1em; } - .taxonomy-terms-page .taxonomy-terms-cloud li { - display: block; } - .taxonomy-terms-page .taxo-text-tags li + li::before { - content: none; } - .taxonomy-terms-page .taxo-fruits .taxonomy-count, - .taxonomy-terms-page .taxo-fruits .taxonomy-label { - display: inherit; - font-size: 1rem; - margin: 0; - padding: 0; - padding-right: 0.5em; } - .taxonomy-terms-page .taxo-fruits .taxonomy-count::before { - content: "("; } - .taxonomy-terms-page .taxo-fruits .taxonomy-count::after { - content: ")"; } - -.taxonomy-terms { - list-style: none; - margin: 0; - overflow: hidden; - padding: 0; - display: inline; } - .taxonomy-terms li { - display: inline; - overflow-wrap: break-word; - word-wrap: break-word; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -ms-hyphens: auto; - -moz-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; } - -.taxonomy-count { - font-size: 0.8em; - line-height: 1.25em; - display: inline-block; - padding-left: 0.6em; - padding-right: 0.6em; - margin-left: 0.6em; - text-align: center; - border-radius: 1em; - background-color: var(--bs-body-bg); } - -.taxonomy-term { - background: var(--bs-secondary-bg); - border-width: 0; - border-radius: 0 3px 3px 0; - color: var(--bs-body-color); - display: inline-block; - font-size: 1em; - line-height: 1.5em; - min-height: 1.5em; - max-width: 100%; - padding: 0 0.5em 0 1em; - position: relative; - margin: 0 0.5em 0.2em 0; - text-decoration: none; - -webkit-transition: color 0.2s; - -webkit-clip-path: polygon(100% 0, 100% 100%, 0.8em 100%, 0 50%, 0.8em 0); - clip-path: polygon(100% 0, 100% 100%, 0.8em 100%, 0 50%, 0.8em 0); } - .taxonomy-term:hover { - background-color: var(--bs-primary-bg-subtle); - color: var(--bs-body-color-dark); } - .taxonomy-term:hover .taxonomy-count { - color: var(--bs-body-color-dark); } - .taxonomy-term:hover::before { - background: #30638e; } - -.taxo-text-tags .taxonomy-term { - background: none; - border-width: 0; - border-radius: 0; - color: #6c757d; - font-size: 1em; - line-height: 1.5em; - min-height: 1.5em; - max-width: 100%; - padding: 0; - position: relative; - margin: 0; - text-decoration: none; - -webkit-clip-path: none; - clip-path: none; } - .taxo-text-tags .taxonomy-term:hover { - background: none; - color: #0d6efd; } - .taxo-text-tags .taxonomy-term:hover .taxonomy-count { - color: #403f4c !important; } - .taxo-text-tags .taxonomy-term:hover::before { - background: none; } - -.taxo-text-tags li + li::before { - content: "|"; - color: #6c757d; - margin-right: 0.2em; } - -.taxo-text-tags .taxonomy-count { - font-size: 1em; - line-height: 1.25em; - display: inline-block; - padding: 0; - margin: 0; - text-align: center; - border-radius: 0; - background: none; - vertical-align: super; - font-size: 0.75em; } - -.taxo-text-tags .taxonomy-term:hover .taxonomy-count { - color: #0d6efd !important; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term]::before { - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - padding-right: 0.5em; - font-size: 2em; - min-width: 1.5em; - display: inline-block; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="apple"]::before { - content: "\f5d1"; - color: red; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="carrot"]::before { - content: "\f787"; - color: orange; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="lemon"]::before { - content: "\f094"; - color: limegreen; } - -.taxo-fruits .taxonomy-term[data-taxonomy-term="pepper"]::before { - content: "\f816"; - color: darkred; } - -.taxo-fruits .taxonomy-term { - background: none; - border-width: 0; - border-radius: 0; - color: #6c757d; - font-size: 1em; - line-height: 2.5em; - max-width: 100%; - padding: 0; - position: relative; - margin: 0; - text-decoration: none; - -webkit-clip-path: none; - clip-path: none; } - .taxo-fruits .taxonomy-term:hover { - background: none; - color: #0d6efd; } - .taxo-fruits .taxonomy-term:hover .taxonomy-count { - color: #403f4c !important; } - .taxo-fruits .taxonomy-term:hover::before { - background: none; - text-shadow: 0 0 3px #212529; } - -.taxo-fruits .taxonomy-count, -.taxo-fruits .taxonomy-label { - display: none; } - -.taxo-fruits.taxonomy-terms-article { - margin-bottom: 1rem; } - .taxo-fruits.taxonomy-terms-article .taxonomy-title { - display: none; } - -.taxonomy-taxonomy-page { - max-width: 800px; - margin: auto; } - .taxonomy-taxonomy-page h1, .taxonomy-taxonomy-page .h1 { - margin-bottom: 1em; } - -.article-meta { - margin-bottom: 1.5rem; } - -.article-teaser.article-type-docs h3 a:before, .article-teaser.article-type-docs .h3 a:before, .article-teaser.article-type-docs .td-footer__links-item a:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - content: "\f02d"; - padding-right: 0.5em; } - -.article-teaser.article-type-blog h3 a:before, .article-teaser.article-type-blog .h3 a:before, .article-teaser.article-type-blog .td-footer__links-item a:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - content: "\f781"; - padding-right: 0.5em; } - -.all-taxonomy-terms { - font-weight: 500; - line-height: 1.2; - font-size: 1.5rem; } - .all-taxonomy-terms:before { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - font-family: "Font Awesome 6 Free"; - content: "\f122"; - padding-right: 0.5em; } - -.article-teaser.card { - padding: 1em; - margin-bottom: 1.5em; } - -.article-teaser .breadcrumb { - margin-bottom: 0em; - font-size: 0.85rem; } - -.article-teaser .article-meta { - margin-bottom: 0em; } - -div.drawio { - display: inline-block; - position: relative; } - div.drawio button { - position: absolute; - bottom: 5px; - right: 5px; - padding: 0.4em 0.5em; - font-size: 0.8em; - display: none; } - div.drawio:hover button { - display: inline; } - -div.drawioframe { - position: fixed; - height: 100%; - width: 100%; - top: 0; - left: 0px; - z-index: 1000; - background: #000b; - border: 0; } - div.drawioframe iframe { - position: absolute; - height: 90%; - width: 90%; - top: 5%; - left: 5%; - z-index: 1010; } - -.tab-content .tab-pane { - margin-top: 0rem; - margin-bottom: 1.5rem; - border-left: var(--bs-border-width) solid var(--bs-border-color); - border-right: var(--bs-border-width) solid var(--bs-border-color); - border-bottom: var(--bs-border-width) solid var(--bs-border-color); } - .tab-content .tab-pane .highlight { - margin: 0; - border: none; - max-width: 100%; } - -.tab-body { - font-weight: 500; - background: var(--td-pre-bg); - color: var(--bs-body-color); - border-radius: 0; - padding: 1.5rem; } - .tab-body > :last-child { - margin-bottom: 0; } - .tab-body > .highlight:only-child { - margin: -1.5rem; - max-width: calc(100% + 3rem); } - .tab-body-primary { - border-style: solid; - border-color: #30638e; } - .tab-body-secondary { - border-style: solid; - border-color: #ffa630; } - .tab-body-success { - border-style: solid; - border-color: #3772ff; } - .tab-body-info { - border-style: solid; - border-color: #c0e0de; } - .tab-body-warning { - border-style: solid; - border-color: #ed6a5a; } - .tab-body-danger { - border-style: solid; - border-color: #ed6a5a; } - .tab-body-light { - border-style: solid; - border-color: #d3f3ee; } - .tab-body-dark { - border-style: solid; - border-color: #403f4c; } - -.td-card.card .highlight { - border: none; - margin: 0; } - -.td-card .card-header.code { - background-color: var(--bs-body-bg); } - -.td-card .card-body.code { - background-color: var(--bs-body-bg); - padding: 0 0 0 1ex; } - -.td-card .card-body pre { - margin: 0; - padding: 0 1rem 1rem 1rem; } - -.swagger-ui .info .title small pre, .swagger-ui .info .title .small pre, .swagger-ui .info .title .td-footer__center pre, .swagger-ui .info .title .td-cover-block > .byline pre { - background: #7d8492; } - -.td-footer { - min-height: 150px; - padding-top: 3rem; - /* &__left { } */ } - @media (max-width: 991.98px) { - .td-footer { - min-height: 200px; } } - .td-footer__center { - text-align: center; } - .td-footer__right { - text-align: right; } - .td-footer__about { - font-size: initial; } - .td-footer__links-list { - margin-bottom: 0; } - .td-footer__links-item a { - color: inherit !important; } - .td-footer__authors, .td-footer__all_rights_reserved { - padding-left: 0.25rem; } - .td-footer__all_rights_reserved { - display: none; } - -@media (min-width: 768px) { - .td-offset-anchor:target { - display: block; - position: relative; - top: -4rem; - visibility: hidden; } - h2[id]:before, [id].h2:before, - h3[id]:before, - [id].h3:before, - [id].td-footer__links-item:before, - h4[id]:before, - [id].h4:before, - h5[id]:before, - [id].h5:before { - display: block; - content: " "; - margin-top: -5rem; - height: 5rem; - visibility: hidden; } } - -/* - -Nothing defined here. The Hugo project that uses this theme can override Bootstrap by adding a file to: - -assets/scss/_styles_project.scss - -*/ - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/resources/_gen/assets/scss/main.scss_fae17086e470d8c6ed0d487092f631b7.json b/resources/_gen/assets/scss/main.scss_fae17086e470d8c6ed0d487092f631b7.json deleted file mode 100644 index a8ece4a..0000000 --- a/resources/_gen/assets/scss/main.scss_fae17086e470d8c6ed0d487092f631b7.json +++ /dev/null @@ -1 +0,0 @@ -{"Target":"/scss/main.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/images/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_bottom.jpg b/resources/_gen/images/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_bottom.jpg deleted file mode 100644 index 80e6e71..0000000 Binary files a/resources/_gen/images/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_bottom.jpg and /dev/null differ diff --git a/resources/_gen/images/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_bottom.jpg b/resources/_gen/images/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_bottom.jpg deleted file mode 100644 index a883d00..0000000 Binary files a/resources/_gen/images/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_bottom.jpg and /dev/null differ diff --git a/resources/_gen/images/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_250x125_fill_catmullrom_smart1_3.png b/resources/_gen/images/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_250x125_fill_catmullrom_smart1_3.png deleted file mode 100644 index 30df1c3..0000000 Binary files a/resources/_gen/images/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_250x125_fill_catmullrom_smart1_3.png and /dev/null differ diff --git a/resources/_gen/images/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_600x300_fill_catmullrom_smart1_3.png b/resources/_gen/images/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_600x300_fill_catmullrom_smart1_3.png deleted file mode 100644 index e4e0620..0000000 Binary files a/resources/_gen/images/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_600x300_fill_catmullrom_smart1_3.png and /dev/null differ diff --git a/resources/_gen/images/fa/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_bottom.jpg b/resources/_gen/images/fa/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_bottom.jpg deleted file mode 100644 index 80e6e71..0000000 Binary files a/resources/_gen/images/fa/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_bottom.jpg and /dev/null differ diff --git a/resources/_gen/images/fa/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_bottom.jpg b/resources/_gen/images/fa/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_bottom.jpg deleted file mode 100644 index a883d00..0000000 Binary files a/resources/_gen/images/fa/about/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_bottom.jpg and /dev/null differ diff --git a/resources/_gen/images/fa/blog/2018/10/06/مستدات-راحت-با-داکسی/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_250x125_fill_catmullrom_smart1_3.png b/resources/_gen/images/fa/blog/2018/10/06/مستدات-راحت-با-داکسی/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_250x125_fill_catmullrom_smart1_3.png deleted file mode 100644 index 30df1c3..0000000 Binary files a/resources/_gen/images/fa/blog/2018/10/06/مستدات-راحت-با-داکسی/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_250x125_fill_catmullrom_smart1_3.png and /dev/null differ diff --git a/resources/_gen/images/fa/blog/2018/10/06/مستدات-راحت-با-داکسی/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_600x300_fill_catmullrom_smart1_3.png b/resources/_gen/images/fa/blog/2018/10/06/مستدات-راحت-با-داکسی/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_600x300_fill_catmullrom_smart1_3.png deleted file mode 100644 index e4e0620..0000000 Binary files a/resources/_gen/images/fa/blog/2018/10/06/مستدات-راحت-با-داکسی/featured-sunset-get_hu69849a7cdb847c2393a7b3a7f6061c86_387442_600x300_fill_catmullrom_smart1_3.png and /dev/null differ diff --git a/resources/_gen/images/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_top.jpg b/resources/_gen/images/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_top.jpg deleted file mode 100644 index f2a6e45..0000000 Binary files a/resources/_gen/images/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_top.jpg and /dev/null differ diff --git a/resources/_gen/images/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_top.jpg b/resources/_gen/images/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_top.jpg deleted file mode 100644 index d7c8202..0000000 Binary files a/resources/_gen/images/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_top.jpg and /dev/null differ diff --git a/resources/_gen/images/no/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_top.jpg b/resources/_gen/images/no/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_top.jpg deleted file mode 100644 index f2a6e45..0000000 Binary files a/resources/_gen/images/no/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_1920x1080_fill_q75_catmullrom_top.jpg and /dev/null differ diff --git a/resources/_gen/images/no/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_top.jpg b/resources/_gen/images/no/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_top.jpg deleted file mode 100644 index d7c8202..0000000 Binary files a/resources/_gen/images/no/featured-background_hu376e1fbab6ce6c455a2b3aa5c258c0d9_496231_960x540_fill_q75_catmullrom_top.jpg and /dev/null differ diff --git a/resources/architecture-c4/ipceicis-363-goldenpath-sia/developer.png b/resources/architecture-c4/ipceicis-363-goldenpath-sia/developer.png deleted file mode 100755 index 852c2fc..0000000 Binary files a/resources/architecture-c4/ipceicis-363-goldenpath-sia/developer.png and /dev/null differ diff --git a/resources/architecture-c4/ipceicis-363-goldenpath-sia/environments.png b/resources/architecture-c4/ipceicis-363-goldenpath-sia/environments.png deleted file mode 100755 index e75946a..0000000 Binary files a/resources/architecture-c4/ipceicis-363-goldenpath-sia/environments.png and /dev/null differ diff --git a/resources/architecture-c4/ipceicis-363-goldenpath-sia/ipceicis-363-goldenpath-sia.c4 b/resources/architecture-c4/ipceicis-363-goldenpath-sia/ipceicis-363-goldenpath-sia.c4 deleted file mode 100755 index d8d7d11..0000000 --- a/resources/architecture-c4/ipceicis-363-goldenpath-sia/ipceicis-363-goldenpath-sia.c4 +++ /dev/null @@ -1,84 +0,0 @@ -specification { - tag developer - element actor { - style { - shape person - } - } - element environment - -} - -model { - actor developer 'Developer' { - -> Platform.DeliveryAndControlPlane.Portal 'use Portal as E2E Golden Path Processor' - -> Platform.DeliveryAndControlPlane.IDE 'use preferred IDE as local code editing, building, testing, syncing tool' - -> Platform.DeliveryAndControlPlane.VersionControl.ApplicationSourceCode 'git cli tools' - -> Platform.DeliveryAndControlPlane.VersionControl.PlatformSourceCode 'git cli tools' - - -> Platform.DeliveryAndControlPlane.Portal.Catalogue - -> Platform.DeliveryAndControlPlane.Portal.Documentation - -> Platform.DeliveryAndControlPlane.Portal.Templates - -> Platform.DeliveryAndControlPlane.Portal.SystemDashboard - } - - actor platformengineer 'P' { - -> Platform.DeliveryAndControlPlane.Portal 'use Portal as E2E Golden Path Processor' - -> Platform.DeliveryAndControlPlane.IDE 'use preferred IDE as local code editing, building, testing, syncing tool' - -> Platform.DeliveryAndControlPlane.VersionControl.ApplicationSourceCode 'git cli tools' - -> Platform.DeliveryAndControlPlane.VersionControl.PlatformSourceCode 'git cli tools' - - } - - extend Platform.DeliveryAndControlPlane.IDE { - IDE -> Platform.DeliveryAndControlPlane.VersionControl.PlatformSourceCode 'IDE git' - IDE -> Platform.DeliveryAndControlPlane.VersionControl.ApplicationSourceCode 'IDE git' - IDE -> Platform.DeliveryAndControlPlane.Portal.API '(opt.) browse/control in IDE' - } - - extend Platform.DeliveryAndControlPlane.Portal { - component API - component Templates - component Catalogue - component Documentation - component SystemDashboard - } - - environment localBox { - environment EDF 'Platform' 'Environment for the EDF Platform Orchestration' { - -> local 'provision' - -> test 'provision' - -> prod 'provision' - developer -> this 'manage (in Developer Portal)' - Platform.DeliveryAndControlPlane.IDE -> this 'provide "code"' - } - environment local 'Environment Local' 'Environment for developing / Integration' - } - environment cloud { - environment test 'Environment Test' 'Environment for review delivery' - environment prod 'Environment Prod' 'Environment for final delivery' - } -} - -views { - view developer { - title "Developer Experience" - include developer - include Platform.DeliveryAndControlPlane.* - include Platform.DeliveryAndControlPlane.VersionControl.* - include Platform.DeliveryAndControlPlane.Portal.* - - include Platform.DeliveryAndControlPlane.IDE with { - title 'IDE' - description 'The IDE is the developers center of coding' - color green - } - } - - view environments { - include platformengineer, developer - include Platform.DeliveryAndControlPlane.IDE, Platform.Portal - include element.kind=environment - autoLayout TopBottom - } -} \ No newline at end of file diff --git a/resources/architecture-c4/ipceicis-363-goldenpath-sia/landscape.png b/resources/architecture-c4/ipceicis-363-goldenpath-sia/landscape.png deleted file mode 100755 index b49bbd8..0000000 Binary files a/resources/architecture-c4/ipceicis-363-goldenpath-sia/landscape.png and /dev/null differ diff --git a/resources/architecture-c4/ipceicis-363-goldenpath-sia/platform.c4 b/resources/architecture-c4/ipceicis-363-goldenpath-sia/platform.c4 deleted file mode 100755 index a9b925f..0000000 --- a/resources/architecture-c4/ipceicis-363-goldenpath-sia/platform.c4 +++ /dev/null @@ -1,106 +0,0 @@ -specification { - tag plane - tag genericPlatformComponent - element plane { - notation "Plane" - style { - color gray - } - } - element system { - style { - opacity 20% - color secondary - } - } - element container { - style { - opacity 20% - color secondary - } - } - element component { - style { - opacity 20% - color secondary - } - } - element platform -} - -model { - platform Platform { - plane DeliveryAndControlPlane { - #plane - system IDE { - #genericPlatformComponent - -> CIPipeline - } - system Portal { - #genericPlatformComponent - ->ApplicationSourceCode - } - system VersionControl { - #genericPlatformComponent - style { - icon https://upload.wikimedia.org/wikipedia/commons/0/0f/Forgejo-wordmark.svg - } - component PlatformSourceCode { - #genericPlatformComponent - title 'Platform Source Code' - component IAC { - -> Orchestrator - } - component Automations - } - component ApplicationSourceCode { - #genericPlatformComponent - title 'Application Source Code' - component Score - component Workload - -> CIPipeline - } - } - } - plane IntegrationAndDeliveryPlane { - #plane - system CIPipeline { - -> Registry - } - system Registry { - -> Orchestrator - } - system Orchestrator { - #genericPlatformComponent - style { - color red - } - -> CDPipeline - -> SecretsAndIdentityManagement - } - system CDPipeline { - -> RessourcePlane - } - } - plane MonitoringAndLoggingPlane { - #plane - system Observability - } - plane SecurityPlane { - #plane - style { - - } - system SecretsAndIdentityManagement { - #genericPlatformComponent - } - } - plane RessourcePlane { - #plane - system Compute - system Data - system Networking - system Services - } - } -} diff --git a/resources/architecture-c4/platform.c4 b/resources/architecture-c4/platform.c4 deleted file mode 100755 index 85449a8..0000000 --- a/resources/architecture-c4/platform.c4 +++ /dev/null @@ -1,126 +0,0 @@ -specification { - tag plane - tag genericPlatformComponent - element plane { - notation "Plane" - style { - color gray - } - } - element system { - style { - opacity 20% - color secondary - } - } - element container { - style { - opacity 20% - color secondary - } - } - element component { - style { - opacity 20% - color secondary - } - } -} - -model { - plane DeliveryAndControlPlane { - #plane - system IDE { - #genericPlatformComponent - -> CIPipeline - } - system Portal { - #genericPlatformComponent - ->ApplicationSourceCode - } - system VersionControl { - #genericPlatformComponent - style { - icon https://upload.wikimedia.org/wikipedia/commons/0/0f/Forgejo-wordmark.svg - } - component PlatformSourceCode { - #genericPlatformComponent - title 'Platform Source Code' - component IAC { - -> Orchestrator - } - component Automations - } - component ApplicationSourceCode { - #genericPlatformComponent - title 'Application Source Code' - component Score - component Workload - -> CIPipeline - } - } - } - plane IntegrationAndDeliveryPlane { - #plane - system CIPipeline { - -> Registry - } - system Registry { - -> Orchestrator - } - system Orchestrator { - #genericPlatformComponent - style { - color red - } - -> CDPipeline - -> SecretsAndIdentityManagement - } - system CDPipeline { - -> RessourcePlane - } - } - plane MonitoringAndLoggingPlane { - #plane - system Observability - } - plane SecurityPlane { - #plane - style { - - } - system SecretsAndIdentityManagement { - #genericPlatformComponent - } - } - plane RessourcePlane { - #plane - system Compute - system Data - system Networking - system Services - } -} - -views { - /** - * @likec4-generated(v1) - * iKRoYXNo2Sg4YzM0OTBhYzE2MGZhNjIwNWI5YzNmNjY5ZGE3YzZiMTRiMWMzM2I4qmF1dG9MYXlvdXSiVEKhePiheQCld2lkdGjNCBCmaGVpZ2h0zQeRpW5vZGVz3gAUt0RlbGl2ZXJ5QW5kQ29udHJvbFBsYW5lgqFilP3NAfLNCAvNAkehY8O7SW50ZWdyYXRpb25B - * bmREZWxpdmVyeVBsYW5lgqFilPjNBEjNBnLNARqhY8O5TW9uaXRvcmluZ0FuZExvZ2dpbmdQbGFuZYKhYpT9zQVuzQGAzQEJoWPDrVNlY3VyaXR5UGxhbmWCoWKU+s0GiM0Bgs0BCaFjw65SZXNzb3VyY2VQbGFuZYKhYpTNBnTNBEfNAZLNA0ChY8O7RGVsaXZlcnlB - * bmRDb250cm9sUGxhbmUuSURFgqFilCXNAijNAUDMtKFjwr5EZWxpdmVyeUFuZENvbnRyb2xQbGFuZS5Qb3J0YWyCoWKUzQG9zQIpzQFAzLShY8LZJkRlbGl2ZXJ5QW5kQ29udHJvbFBsYW5lLlZlcnNpb25Db250cm9sgqFilM0Blc0C+c0GS80BGKFjw9koSW50ZWdy - * YXRpb25BbmREZWxpdmVyeVBsYW5lLk9yY2hlc3RyYXRvcoKhYpTNA2jNBIbNAUDMtKFjwtkmSW50ZWdyYXRpb25BbmREZWxpdmVyeVBsYW5lLkNJUGlwZWxpbmWCoWKUIM0EhM0BQMy0oWPC2SRJbnRlZ3JhdGlvbkFuZERlbGl2ZXJ5UGxhbmUuUmVnaXN0cnmCoWKU - * zQHEzQSDzQFAzLShY8LZJkludGVncmF0aW9uQW5kRGVsaXZlcnlQbGFuZS5DRFBpcGVsaW5lgqFilM0FAs0Efs0BQMy0oWPC2SdNb25pdG9yaW5nQW5kTG9nZ2luZ1BsYW5lLk9ic2VydmFiaWxpdHmCoWKUHc0Fo80BQMy0oWPC2SpTZWN1cml0eVBsYW5lLlNlY3Jl - * dHNBbmRJZGVudGl0eU1hbmFnZW1lbnSCoWKUGs0Gvc0BQsy0oWPCtlJlc3NvdXJjZVBsYW5lLkNvbXB1dGWCoWKUzQaczQR8zQFAzLShY8KzUmVzc291cmNlUGxhbmUuRGF0YYKhYpTNBp3NBTbNAUDMtKFjwrlSZXNzb3VyY2VQbGFuZS5OZXR3b3JraW5ngqFilM0G - * ns0Gq80BQMy0oWPCt1Jlc3NvdXJjZVBsYW5lLlNlcnZpY2VzgqFilM0Gnc0F8c0BQMy0oWPC2TlEZWxpdmVyeUFuZENvbnRyb2xQbGFuZS5WZXJzaW9uQ29udHJvbC5QbGF0Zm9ybVNvdXJjZUNvZGWCoWKUzQZ3zQMvzQFAzLShY8LZPERlbGl2ZXJ5QW5kQ29udHJv - * bFBsYW5lLlZlcnNpb25Db250cm9sLkFwcGxpY2F0aW9uU291cmNlQ29kZYKhYpTNAb7NAzXNAUDMtKFjwqVlZGdlc4A= - */ - view planes { - title "Platform" - description "Platform Reference Architecture High Level Planes (by Humanitec)" - include element.tag==#plane, element.tag==#genericPlatformComponent - include DeliveryAndControlPlane.*, VersionControl.*, IntegrationAndDeliveryPlane.*, MonitoringAndLoggingPlane.*, RessourcePlane.* - - exclude -> ApplicationSourceCode, -> DeliveryAndControlPlane, -> IntegrationAndDeliveryPlane.*, -> SecurityPlane, -> RessourcePlane - } - -} \ No newline at end of file diff --git a/resources/doc-likec4/README.md b/resources/doc-likec4/README.md new file mode 100644 index 0000000..76c9695 --- /dev/null +++ b/resources/doc-likec4/README.md @@ -0,0 +1,93 @@ +# Documentation Platform Architecture + +This folder contains LikeC4 architecture models that document the documentation platform itself. + +## Purpose + +These models help new **Technical Writers** understand: + +- How the documentation platform works +- The local development workflow +- CI/CD pipeline and testing processes +- Deployment to edge infrastructure + +## Models + +- `documentation-platform.c4` - Main model with all elements and relationships +- `views.c4` - View definitions for different perspectives + +## Views + +### Overview + +High-level view of the entire documentation platform, showing all major components. + +### Local Development Workflow + +How a technicalWriter works locally with content, Taskfile, and Hugo server. + +### CI/CD Pipeline + +Automated testing and container build process via GitHub Actions. + +### Deployment Flow + +How documentation is deployed to the edge environment via Kubernetes. + +### Full Workflow + +End-to-end process from content creation to published documentation. + +### Testing Capabilities + +All automated tests that ensure documentation quality. + +## Usage + +### Start LikeC4 Development Server + +```bash +cd resources/doc-likec4 +npm install +npm start +``` + +This opens the LikeC4 IDE in your browser where you can: + +- Edit models interactively +- Preview views in real-time +- Export diagrams + +### Embed in Documentation + +In your Markdown files: + +```markdown +{{< likec4-view view="overview" project="documentation-platform" >}} +``` + +Optional parameters: +- `view` (required) - The view ID from your LikeC4 model +- `project` (optional, default: "architecture") - The LikeC4 project name +- `title` (optional, default: "Architecture View: {view}") - Custom header text + +Example with custom title: + +```markdown +{{< likec4-view view="overview" project="documentation-platform" title="Complete Documentation Platform" >}} +``` + +## Configuration + +- `likec4.config.json` - Project configuration +- `package.json` - LikeC4 CLI dependencies + +## Related Documentation + +The models are documented in: `content/en/docs/documentation/` + +- Overview and introduction +- Local development guide +- Testing processes +- CI/CD pipeline +- Publishing to edge diff --git a/resources/doc-likec4/documentation-platform.c4 b/resources/doc-likec4/documentation-platform.c4 new file mode 100644 index 0000000..dce272c --- /dev/null +++ b/resources/doc-likec4/documentation-platform.c4 @@ -0,0 +1,371 @@ +specification { + element person { + style { + shape person + } + } + element system { + style { + shape rectangle + } + } + element tool { + style { + shape rectangle + } + } + element component { + style { + shape rectangle + } + } + element process { + style { + shape rectangle + } + } + element environment { + style { + shape cylinder + } + } + element repository { + style { + shape storage + } + } +} + +model { + +// === Personas === +technicalWriter = person 'Technical Writer' { + description 'Content creator and maintainer of the developer platform documentation' + technology 'Hugo, Markdown, LikeC4' +} + +// === Documentation Platform System === +docPlatform = system 'Documentation Platform' { + description 'Hugo-based documentation system with integrated architecture visualization' + + // Core Components + hugoSite = component 'Hugo Site' { + description 'Static site generator based on Hugo with Docsy theme' + technology 'Hugo Extended, Docsy' + } + + contentRepo = repository 'Content Repository' { + description 'Markdown files, images, and configuration' + technology 'Git, Markdown' + + contentPages = component 'Content Pages' { + description 'Documentation pages in Markdown format' + technology 'Markdown' + } + + archModels = component 'Architecture Models' { + description 'LikeC4 architecture models and views' + technology 'LikeC4 DSL' + } + + assets = component 'Static Assets' { + description 'CSS, JavaScript, images, fonts' + technology 'CSS, JavaScript' + } + } + + likec4Integration = component 'LikeC4 Integration' { + description 'Architecture diagram visualization embedded in documentation' + technology 'LikeC4, Web Components' + } + + // Build & Development Tools + taskfile = tool 'Taskfile' { + description 'Task automation for local development, build, and testing' + technology 'Task (go-task)' + } + + devServer = process 'Development Server' { + description 'Local Hugo server with hot reload for content development' + technology 'Hugo Server' + } +} + +// === CI/CD Pipeline === +cicdPipeline = system 'CI/CD Pipeline' { + description 'Automated testing and deployment pipeline' + + githubActions = process 'GitHub Actions' { + description 'Automated testing workflow on push/PR' + technology 'GitHub Actions' + + testBuild = component 'Build Test' { + description 'Hugo build validation' + technology 'Hugo' + } + + testMarkdown = component 'Markdown Lint' { + description 'Markdown syntax and style checking' + technology 'markdownlint' + } + + testHtml = component 'HTML Validation' { + description 'Generated HTML validation' + technology 'htmlvalidate' + } + + testLinks = component 'Link Checker' { + description 'Broken link detection' + technology 'htmltest' + } + } + + containerBuild = process 'Container Build' { + description 'OCI/Docker image creation with Hugo site' + technology 'Docker' + } +} + +// === Deployment === +deploymentEnv = system 'Deployment Environment' { + description 'Edge deployment infrastructure' + + edgeConnect = environment 'Edge Connect' { + description 'Edge deployment orchestration platform' + technology 'EdgeConnect' + } + + k8sCluster = environment 'Kubernetes Cluster' { + description 'K8s cluster on edge cloudlet (Munich)' + technology 'Kubernetes' + + docService = component 'Documentation Service' { + description 'LoadBalancer service exposing docs on port 80' + technology 'K8s Service' + } + + docDeployment = component 'Documentation Deployment' { + description 'Pod running Hugo-generated static site' + technology 'K8s Deployment, Nginx' + } + } +} + +// === Relationships: Technical Writer Workflow === +technicalWriter -> contentRepo.contentPages 'writes documentation' { + description 'Creates and updates Markdown content' +} + +technicalWriter -> contentRepo.archModels 'creates architecture models' { + description 'Defines C4 models with LikeC4 DSL' +} + +technicalWriter -> taskfile 'executes local tasks' { + description 'task serve, task build, task test' +} + +// === Relationships: Local Development === +taskfile -> devServer 'starts' { + description 'task serve' +} + +devServer -> hugoSite 'renders' { + description 'Live reload on content changes' +} + +hugoSite -> contentRepo 'reads content from' { + description 'Processes Markdown and templates' +} + +hugoSite -> likec4Integration 'integrates' { + description 'Embeds architecture diagrams' +} + +likec4Integration -> contentRepo.archModels 'visualizes' { + description 'Renders C4 models as interactive diagrams' +} + +// === Relationships: Testing === +taskfile -> githubActions.testBuild 'can run locally' { + description 'task test:build' +} + +taskfile -> githubActions.testMarkdown 'can run locally' { + description 'task test:markdown' +} + +taskfile -> githubActions.testHtml 'can run locally' { + description 'task test:html' +} + +taskfile -> githubActions.testLinks 'can run locally' { + description 'task test:links' +} + +// === Relationships: CI/CD === +contentRepo -> githubActions 'triggers on push/PR' { + description 'Webhook on main branch' +} + +githubActions.testBuild -> hugoSite 'builds' { + description 'hugo --gc --minify' +} + +githubActions.testMarkdown -> contentRepo.contentPages 'validates' { + description 'Lints Markdown files' +} + +githubActions.testHtml -> hugoSite 'validates output' { + description 'Checks generated HTML' +} + +githubActions.testLinks -> hugoSite 'checks links in' { + description 'Detects broken links' +} + +githubActions -> containerBuild 'triggers on success' { + description 'Builds Docker image with Hugo output' +} + +containerBuild -> hugoSite 'packages' { + description 'public/ directory served by Nginx' +} + +// === Relationships: Deployment === +containerBuild -> deploymentEnv.edgeConnect 'pushes image to' { + description 'Tagged container image' +} + +deploymentEnv.edgeConnect -> deploymentEnv.k8sCluster 'deploys to' { + description 'Via edgeconnectdeployment.yaml' +} + +deploymentEnv.k8sCluster.docDeployment -> deploymentEnv.k8sCluster.docService 'exposed by' { + description 'Port 80' +} + +technicalWriter -> deploymentEnv.k8sCluster.docService 'views published docs' { + description 'HTTPS access to live documentation' +} + +} + +// === Views === + +views { + + view overview of docPlatform { + title 'Documentation Platform Overview' + description 'High-level overview of the Hugo-based documentation platform for technicalWriters' + + include * + + style technicalWriter { + color green + } + style docPlatform { + color blue + } + } + + view localDevelopment of docPlatform { + title 'Local Development Workflow' + description 'How a technicalWriter works locally with the documentation' + + include technicalWriter + include docPlatform + include docPlatform.contentRepo -> * + include docPlatform.hugoSite + include docPlatform.likec4Integration + include docPlatform.taskfile + include docPlatform.devServer + + style technicalWriter { + color green + } + style docPlatform.taskfile { + color amber + } + style docPlatform.devServer { + color amber + } + } + + view cicdPipeline of cicdPipeline { + title 'CI/CD Pipeline' + description 'Automated testing and container build process' + + include cicdPipeline + include cicdPipeline.githubActions -> * + include cicdPipeline.containerBuild + include docPlatform.contentRepo + include docPlatform.hugoSite + + style cicdPipeline.githubActions { + color blue + } + style cicdPipeline.containerBuild { + color indigo + } + } + + view deploymentFlow { + title 'Deployment to Edge Environment' + description 'How the documentation is deployed to the edge infrastructure' + + include cicdPipeline.containerBuild + include deploymentEnv + include deploymentEnv.edgeConnect + include deploymentEnv.k8sCluster -> * + include technicalWriter + + style deploymentEnv { + color muted + } + style deploymentEnv.k8sCluster { + color secondary + } + } + + view fullWorkflow { + title 'Complete Technical Writer Workflow' + description 'End-to-end view from content creation to published documentation' + + include technicalWriter + include docPlatform.contentRepo + include docPlatform.taskfile + include cicdPipeline.githubActions + include cicdPipeline.containerBuild + include deploymentEnv.edgeConnect + include deploymentEnv.k8sCluster + + style technicalWriter { + color green + } + style docPlatform.taskfile { + color amber + } + style cicdPipeline.githubActions { + color blue + } + style deploymentEnv.k8sCluster { + color secondary + } + } + + view testingCapabilities of cicdPipeline.githubActions { + title 'Testing Capabilities' + description 'All automated tests that ensure documentation quality' + + include * + include docPlatform.hugoSite + include docPlatform.contentRepo.contentPages + include docPlatform.taskfile + + style cicdPipeline.githubActions { + color blue + } + } + +} + diff --git a/resources/doc-likec4/likec4.config.json b/resources/doc-likec4/likec4.config.json new file mode 100644 index 0000000..0a3b2c2 --- /dev/null +++ b/resources/doc-likec4/likec4.config.json @@ -0,0 +1,3 @@ +{ + "name": "documentation-platform" +} diff --git a/resources/edp-likec4/INTEGRATION.md b/resources/edp-likec4/INTEGRATION.md new file mode 100644 index 0000000..9a73472 --- /dev/null +++ b/resources/edp-likec4/INTEGRATION.md @@ -0,0 +1,124 @@ +# LikeC4 Architecture Documentation Integration + +This directory contains the LikeC4 architecture models and views that power the interactive architecture diagrams throughout this documentation. + +## What is LikeC4? + +LikeC4 is a tool for creating interactive C4 architecture diagrams as code. It generates web components that can be embedded directly into web pages, providing an interactive way to explore complex system architectures. + +## Directory Structure + +``` +resources/likec4/ +├── models/ # C4 model definitions (.c4 files) +│ ├── components/ # Component-level models +│ ├── containers/ # Container-level models +│ ├── context/ # System context models +│ └── code/ # Code-level workflow models +├── views/ # View definitions +│ ├── deployment/ # Deployment architecture views +│ ├── edp/ # EDP-specific views +│ ├── high-level-concept/ # Conceptual views +│ └── dynamic/ # Dynamic process views +├── deployment/ # Deployment-specific models +├── doc/ # Documentation and screenshots +├── package.json # Node.js dependencies +└── README.md # This file +``` + +## Generating Web Components + +To generate the web component that Hugo can use: + +```bash +cd resources/likec4 + +# Install dependencies (first time only) +npm install + +# Generate the web component +npx likec4 codegen webcomponent \ + --webcomponent-prefix likec4 \ + --outfile ../../static/js/likec4-webcomponent.js +``` + +This creates `static/js/likec4-webcomponent.js` which contains all your architecture views as an interactive web component. + +## Using in Hugo Content + +### Using the Shortcode (Recommended) + +The simplest way to embed diagrams: + +```markdown +## Architecture Overview + +{{< likec4-view view="otc-faas" project="architecture" title="OTC FaaS Deployment Architecture" >}} +``` + +**Parameters:** +- `view` (required) - The view ID from your LikeC4 model +- `project` (optional, default: "architecture") - The LikeC4 project name +- `title` (optional, default: "Architecture View: {view}") - Custom header text + +### Manual HTML (Alternative) + +If you need more control: + +```markdown +
+
+ System Architecture - High Level View +
+ +
+ Loading architecture diagram... +
+
+ +{{< alert title="Note" >}} +The diagram above is interactive. Click on components to explore details. +{{< /alert >}} +``` + +## Available Views + +To discover available view IDs: + +```bash +# Search for all view definitions in .c4 files +cd resources/likec4 +grep -r "view\s\+\w" views/ models/ --include="*.c4" +``` + +Common view IDs include: +- `otc-faas` - OTC FaaS Deployment Architecture +- `edp` - EDP Main Overview +- `landscape` - Developer Landscape +- `edpbuilderworkflow` - EDP Builder Workflow +- And many more... + +## Workflow for Changes + +1. **Edit Models**: Modify `.c4` files in `models/` or `views/` +2. **Regenerate**: Run the codegen command (see above) +3. **Test**: Start Hugo dev server and check your pages +4. **Commit**: Commit both the `.c4` changes and regenerated JS file + +## Integration with Hugo + +The integration is enabled via: +- `hugo.toml` - Configuration parameter `params.likec4.enable = true` +- `layouts/partials/hooks/head-end.html` - Loads CSS and JS +- `static/css/likec4-styles.css` - Styling for diagrams +- `static/js/likec4-loader.js` - Dynamic loading logic +- `static/js/likec4-webcomponent.js` - Generated web component (you create this) + +## Migrated from edp-doc + +This content was migrated from the edp-doc repository with full Git history preserved. This repository is now the primary source for LikeC4 architecture documentation. + +## More Information + +- [LikeC4 Documentation](https://likec4.dev/) +- [C4 Model](https://c4model.com/) diff --git a/resources/edp-likec4/README.md b/resources/edp-likec4/README.md new file mode 100644 index 0000000..f567446 --- /dev/null +++ b/resources/edp-likec4/README.md @@ -0,0 +1,38 @@ +# LikeC4 Architecture Documentation - EDP Platform + +This folder contains LikeC4 architecture models for the **Enterprise Developer Platform (EDP)**. + +## Purpose + +These models document the platform architecture, not the documentation system itself. +(For documentation platform architecture, see `resources/doc-likec4/`) + +## Usage + +Run `npx likec4 start` to start dev server + +## with docker and how to render/export images + +// how to create/export c4 images: +// see also https://likec4.dev/tooling/cli/ + +docker run -it --rm --name likec4 --user node -v $PWD:/app node bash +npm install likec4 +exit + +docker commit likec4 likec4 +docker run -it --rm --user node -v $PWD:/app -p 5173:5173 likec4 bash + +// as root +npx playwright install-deps +npx playwright install + +npm install likec4 + +// render +node@e20899c8046f:/app/content/en/docs/project/onboarding$ ./node_modules/.bin/likec4 export png -o ./images . + +## trouble shooting + +when refactoring you might need to restart the languange server, just that it updates its internal model representation +In VSCode it is: `ctrl+Shift+P' + 'LikeC4: restart languange server` \ No newline at end of file diff --git a/resources/edp-likec4/deployment/kind/edp.c4 b/resources/edp-likec4/deployment/kind/edp.c4 new file mode 100644 index 0000000..e677b53 --- /dev/null +++ b/resources/edp-likec4/deployment/kind/edp.c4 @@ -0,0 +1,86 @@ +// Deployment model +deployment { + + environment local 'Local kind-cluster' { + description 'Local kind-cluster environment for EDP, typically run by edpbuilder' + technology 'Kind' + icon tech:kubernetes + + namespace backstage { + instanceOf edp.ui.backstage + instanceOf edp.ui.database + } + + namespace argocd { + instanceOf edp.argoCD.argocdAppController + instanceOf edp.argoCD.argocdAppSetController + instanceOf edp.argoCD.argocdRedis + instanceOf edp.argoCD.argocdRepoServer + instanceOf edp.argoCD.argocdServer + } + + namespace gitea { + instanceOf edp.forgejo + instanceOf forgejoRunner + } + + namespace keycloak { + instanceOf edp.keycloak.keycloak + instanceOf edp.keycloak.keycloakDB + } + + namespace crossplane 'crossplane-system' { + instanceOf edp.crossplane.crossplane + instanceOf edp.crossplane.crossplaneFunction + instanceOf edp.crossplane.crossplaneRbacManager + instanceOf edp.crossplane.providerArgoCD + instanceOf edp.crossplane.providerKind + instanceOf edp.crossplane.providerShell + } + + namespace externalSecrets 'external-secrets' { + instanceOf edp.externalSecrets.certController + instanceOf edp.externalSecrets.externalSecrets + instanceOf edp.externalSecrets.webhook + } + + namespace velero { + instanceOf edp.velero.velero + } + + namespace minio 'minio-backup' { + instanceOf edp.minio.minio + } + + namespace monitoring { + instanceOf edp.monitoring.alloy + instanceOf edp.monitoring.distributor + instanceOf edp.monitoring.gateway + instanceOf edp.monitoring.ingestor + instanceOf edp.monitoring.querier + instanceOf edp.monitoring.queryFrontend + } + + namespace ingressNginx 'ingress-nginx'{ + instanceOf edp.ingressNginx.ingressNginx + } + + namespace openbao 'openbao' { + instanceOf edp.openbao.openbao + instanceOf edp.openbao.agentInjector + } + + namespace fibonacci 'fibonacci-app' { + instanceOf edp.testApp.fibonacci + } + + namespace mailhog 'mailhog' { + instanceOf edp.mailhog.mailhog + } + + namespace spark 'spark' { + instanceOf edp.spark.sparkoperator + } + } +} + diff --git a/resources/edp-likec4/deployment/otc/edp.c4 b/resources/edp-likec4/deployment/otc/edp.c4 new file mode 100644 index 0000000..c5b51b5 --- /dev/null +++ b/resources/edp-likec4/deployment/otc/edp.c4 @@ -0,0 +1,49 @@ +// Deployment model +deployment { + + cloud otc-edp-per-tenant 'OTC EDP per tenant cluster' { + description 'OTC environment for EDP. EDP is the environment a customer gets from us. + + This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry. + ' + technology 'OTC' + + kubernetes cce 'OTC CCE' { + description 'OTC Container Cluster Engine' + icon tech:kubernetes + technology 'Kubernetes' + + cluster edp 'EDP' { + instanceOf edp.argoCD + instanceOf forgejoRunner + instanceOf edp.forgejo { + -> cloudServices.elasticsearch + -> cloudServices.objectstorage + -> cloudServices.postgres + -> cloudServices.redis + } + instanceOf edp.externalSecrets + instanceOf edp.ingressNginx + } + } + + paas cloudServices 'EDP Cloud Services' { + description 'EDP Cloud Services' + technology 'Cloud Services' + + instanceOf postgres + instanceOf redis + instanceOf objectstorage + instanceOf elasticsearch + } + + computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' { + description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc' + instanceOf forgejoRunner { + -> cce.edp.forgejo 'registers' + } + } + } +} + + \ No newline at end of file diff --git a/resources/edp-likec4/deployment/otc/faas-deployment.c4 b/resources/edp-likec4/deployment/otc/faas-deployment.c4 new file mode 100644 index 0000000..21f9fa2 --- /dev/null +++ b/resources/edp-likec4/deployment/otc/faas-deployment.c4 @@ -0,0 +1,86 @@ +deployment { + + cloud otc-faas 'OTC prototype FaaS' { + description 'OTC environments for Prototype faaS. + ' + technology 'OTC' + + environment dev 'tenant Dev' { + description '*.t09.de' + technology 'OTC' + + kubernetes cce 'Central Forgejo' { + description '*.t09.de' + icon tech:kubernetes + technology 'Kubernetes' + + cluster edp 'Forgejo Dev for platform team' { + description 't09.de' + + instanceOf edp.forgejo { + -> cloudServices + } + } + } + + paas cloudServices 'EDP Cloud Services' { + description 'EDP Cloud Services (Postgres, Redis, etc.' + technology 'Cloud Services' + } + + kubernetes observability 'Observability' { + description '*.t09.de' + icon tech:kubernetes + technology 'Kubernetes' + } + } + + environment prod 'Tenant Prod' { + description '*.buildth.ing' + technology 'OTC' + + kubernetes cce 'Central Forgejo' { + description '*.buildth.ing' + icon tech:kubernetes + technology 'Kubernetes' + + cluster edp 'Forgejo for all EDP-tenants' { + + instanceOf edp.forgejo 'Forgejo for all EDP-tenants' { + description 'buildth.ing' + -> cloudServices + } + } + } + + + paas cloudServices 'EDP Cloud Services' { + description 'EDP Cloud Services (Postgres, Redis, etc.' + technology 'Cloud Services' + } + + kubernetes observability 'Observability' { + description '*.buildth.ing' + icon tech:kubernetes + technology 'Kubernetes' + + } + } + + + } + cloud edge 'Edge Cloud' { + description 'Edge environments for distributed workloads.' + technology 'Edge' + + environment edge-dev 'Edge Dev' { + description 'Edge development environment' + technology 'Edge' + } + + environment edge-prod 'Edge Prod' { + description 'Edge production environment' + technology 'Edge' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/deployment/otc/foundry.c4 b/resources/edp-likec4/deployment/otc/foundry.c4 new file mode 100644 index 0000000..dcd1197 --- /dev/null +++ b/resources/edp-likec4/deployment/otc/foundry.c4 @@ -0,0 +1,74 @@ +// Deployment model +deployment { + + cloud otc-edpFoundry 'OTC EDP Foundry Central Service clusters' { + description ' + OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder. + + A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP. + Optionally we will have a WebUI/API/CLI + ' + technology 'OTC' + + kubernetes cce 'OTC CCE' { + description 'OTC Container Cluster Engine' + icon tech:kubernetes + technology 'Kubernetes' + + cluster internalServices 'EDP Foundry Internal Services' { + instanceOf edp.argoCD + instanceOf edp.forgejo { + -> workflowSetupEDPInfrastructure.forgejoRunner 'invokes' + -> workflowSetupArgoCDInfrastructure.forgejoRunner 'invokes' + } + instanceOf edp.externalSecrets + instanceOf edp.openbao + instanceOf edp.ingressNginx + } + + cluster centralObservability 'EDP Foundry Central Observability' { + instanceOf edp.grafana + instanceOf edp.prometheus + instanceOf edp.loki + } + } + computeressource workflowSetupEDPInfrastructure 'EDP infrastructure Workflow' { + description 'EDP infrastructure Workflow' + + instanceOf forgejoRunner { + -> forgejoRunnerWorker 'runs' + } + instanceOf forgejoRunnerWorker { + -> edpworkflow 'executes' + } + instanceOf edpworkflow { + -> otc-edp-per-tenant.cce.edp 'deploys edp to otc.cce' + -> otc-edp-per-tenant.cloudServices 'deploys edp to otc.paas' + + } + } + + computeressource workflowSetupArgoCDInfrastructure 'EDP ArgoCD Workflow' { + description 'EDP Setup ArgoCD Workflow' + instanceOf forgejoRunner { + -> forgejoRunnerWorker 'runs' + } + instanceOf forgejoRunnerWorker { + -> edpworkflow 'executes' + } + instanceOf edpworkflow { + -> otc-edp-per-tenant.cce.argoCD + + } + } + + computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' { + description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc' + instanceOf forgejoRunner { + -> cce.internalServices.forgejo 'registers' + } + } + + } +} + diff --git a/resources/edp-likec4/doc/developer-landscape/cicd-outerloop-2.png b/resources/edp-likec4/doc/developer-landscape/cicd-outerloop-2.png new file mode 100644 index 0000000..6199ff1 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/cicd-outerloop-2.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/cicd-outerloop-draft.png b/resources/edp-likec4/doc/developer-landscape/cicd-outerloop-draft.png new file mode 100644 index 0000000..f56ef30 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/cicd-outerloop-draft.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/cicd-outerloop.png b/resources/edp-likec4/doc/developer-landscape/cicd-outerloop.png new file mode 100644 index 0000000..29b5122 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/cicd-outerloop.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/devday-presentation.md b/resources/edp-likec4/doc/developer-landscape/devday-presentation.md new file mode 100644 index 0000000..339d63e --- /dev/null +++ b/resources/edp-likec4/doc/developer-landscape/devday-presentation.md @@ -0,0 +1,44 @@ +# Developer landscape with respect to DevOps Inner-Outer loop + +## Inner loop, outer loop + +![alt text](localdev.png) + +* [What software delivery leaders need to know about inner & outer loops](https://curiositysoftware.medium.com/what-software-delivery-leaders-need-to-know-about-inner-outer-loops-9da765b0ca2c) + +* (original articale is here](https://www.curiositysoftware.ie/blog/software-delivery-leaders-guide-inner-outer-loops) + +## Landscape + +### Draft + +![alt text](developer-landscape-view-draft.png) + +### C4 + +See [developer-landscape](../../views/landscape.c4) + +![alt text](developer-landscape-view-c4.png) +![alt text](developer-landscape-view-c4-2.png) + +![alt text](developer-landscape-view-c4-ppt-layouted.png) +![alt text](developer-landscape-view-c4-ppt-layouted-dark.png) + +## CI/CD Outerloop + +### Draft + +![alt text](cicd-outerloop-draft.png) + +ArgoCD and Cloud are CD, Forgejo is CI + +### C4 + +![alt text](cicd-outerloop.png) + +![alt text](cicd-outerloop-2.png) + + +## PPT + +![alt text](slide-1.png) \ No newline at end of file diff --git a/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-2.png b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-2.png new file mode 100644 index 0000000..eb9b073 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-2.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted-dark.png b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted-dark.png new file mode 100644 index 0000000..5480fb0 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted-dark.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted.png b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted.png new file mode 100644 index 0000000..81c4d0d Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4.png b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4.png new file mode 100644 index 0000000..58e7847 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-c4.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-draft.png b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-draft.png new file mode 100644 index 0000000..46b3044 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/developer-landscape-view-draft.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/localdev.png b/resources/edp-likec4/doc/developer-landscape/localdev.png new file mode 100644 index 0000000..6de1218 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/localdev.png differ diff --git a/resources/edp-likec4/doc/developer-landscape/slide-1.png b/resources/edp-likec4/doc/developer-landscape/slide-1.png new file mode 100644 index 0000000..70acab2 Binary files /dev/null and b/resources/edp-likec4/doc/developer-landscape/slide-1.png differ diff --git a/resources/edp-likec4/likec4.config.json b/resources/edp-likec4/likec4.config.json new file mode 100644 index 0000000..bf92db2 --- /dev/null +++ b/resources/edp-likec4/likec4.config.json @@ -0,0 +1,3 @@ +{ + "name": "architecture" +} \ No newline at end of file diff --git a/resources/edp-likec4/models/code/workflow-edpbuilder.c4 b/resources/edp-likec4/models/code/workflow-edpbuilder.c4 new file mode 100644 index 0000000..1610d72 --- /dev/null +++ b/resources/edp-likec4/models/code/workflow-edpbuilder.c4 @@ -0,0 +1,103 @@ +model { + workflow edfbuilder_workflow "EDFbuilder" { + step runEDP "Run edpbuilder script" { + style { + opacity 25% + } + step createCrossplaneNS "Create Crossplane namespace" + step installCrossplaneHelm "Install Crossplane Helm Chart" + step installCrossplaneFunctionsAndProviders "Install Crossplane Functions and Providers" + step waitForCrossplaneFunctionsAndProviders "Wait for Crossplane Functions and Providers to become available" + step setupCrossplaneServiceAccount "Apply cluster-admin role to crossplane shell provider service account" + step createArgoCdNS "Create ArgoCD namespace" + step createGiteaNS "Create Gitea namespace" + step createArgoCdTlsCert "Create TLS Cert for Argo" + step createGiteaTlsCert "Create TLS Cert for Forgejo" + step createEDFBuilderDefinition "Create EDFbuilder crossplane definition (defines API)" + step createEDFBuilderComposition "Create EDFbuilder crossplane composition (defines what happens when EDFbuilder is applied)" + } + + step applyEDFBuilder "Applies EDFbuilder resource (and triggers creation)" { + style { + opacity 15% + } + + step setEnvVars "Set required environment variables" + step readWriteKubeConf "Make kube.conf write/readbale" + step setWorkDir "Set workdir to /tmp/rundir" + step cloneStacksRepo "Clone steps repo and checkout desired branch" + step hydrateStacksWithValues "Hydrate Stacks with values" + step createNamespaces "Create all required namespaces" + step createGiteaAdminPass "Create Admin Password for Forgejo" + step createGrafanaPass "Create Grafana Admin Password" + step applyServiceMonitorCRD "Apply ServiceMonitor CRDs for Prometheus" + step cloneIngressNginxChart "Git clone ingress-nginx helm chart" + step isntallIngressNginx "Install ingress-nginx from cloned chart" + step waitForIngress "Wait till ingress-nginx is ready" + step cloneArgoCDHelm "Git clone ArgoCD Helm Chart" + step installArgoCD "Install ArgoCD Helm Chart" + step installArgoCDIngress "Install ingress for ArgoCD" + step cloneForgejoHelmChart "Git clone Forgejo Helm Chart" + step installForgejo "Install Forgejo Helm Chart" + step installForgejoIngress "Install ingress for Forgejo" + step waitForArgoCD "Wait till ArgoCD is available" + step waitForForgejo "Wait till Forgejo is available" + step createForgejoUser "Create technical user for Forgejo" + step createForgejoRepo "Create repository for EDP state in Forgejo" + step installForgejoRunner "Install Forgejo Runner deployment" + step registerForgejoRunner "Create registration token secret for runner" + step configGitIdentity "Configure Git identity" + step configCrossplaneArgoCDProvider "Configure Crossplane ArgoCD provider" + step configCrossplaneKindProvider "Configure Crossplane Kind provider" + step uploadStacksToForgjo "Git push hydrated stacks to Forgejo isntance" + step configArgoDockerRegistry "Configure Docker Registry for Argo Workflows" + step createPackagesForgejoUser "Create packages user and token in Forgejo (unused?)" + step installArgoCDStacks "Apply all selected ArgoCD stacks" + step cleanup "Cleanup work folder and unset all env vars" + + setEnvVars -> readWriteKubeConf + readWriteKubeConf -> setWorkDir + setWorkDir -> cloneStacksRepo + cloneStacksRepo -> hydrateStacksWithValues + hydrateStacksWithValues -> createNamespaces + createNamespaces -> createGiteaAdminPass + createGiteaAdminPass -> createGrafanaPass + createGrafanaPass -> applyServiceMonitorCRD + applyServiceMonitorCRD -> cloneIngressNginxChart + cloneIngressNginxChart -> isntallIngressNginx + isntallIngressNginx -> waitForIngress + waitForIngress -> cloneArgoCDHelm + cloneArgoCDHelm -> installArgoCD + installArgoCD -> installArgoCDIngress + installArgoCDIngress -> cloneForgejoHelmChart + cloneForgejoHelmChart -> installForgejo + installForgejo -> installForgejoIngress + installForgejoIngress -> waitForArgoCD + waitForArgoCD -> waitForForgejo + waitForForgejo -> createForgejoUser + createForgejoUser -> createForgejoRepo + createForgejoRepo -> installForgejoRunner + installForgejoRunner -> registerForgejoRunner + registerForgejoRunner -> configGitIdentity + configGitIdentity -> configCrossplaneArgoCDProvider + configCrossplaneArgoCDProvider -> configCrossplaneKindProvider + configCrossplaneKindProvider -> uploadStacksToForgjo + uploadStacksToForgjo -> configArgoDockerRegistry + configArgoDockerRegistry -> createPackagesForgejoUser + createPackagesForgejoUser -> installArgoCDStacks + installArgoCDStacks -> cleanup + } + + createCrossplaneNS -> installCrossplaneHelm + installCrossplaneHelm -> installCrossplaneFunctionsAndProviders + installCrossplaneFunctionsAndProviders -> waitForCrossplaneFunctionsAndProviders + waitForCrossplaneFunctionsAndProviders -> setupCrossplaneServiceAccount + setupCrossplaneServiceAccount -> createArgoCdNS + createArgoCdNS -> createGiteaNS + createGiteaNS -> createArgoCdTlsCert + createArgoCdTlsCert -> createGiteaTlsCert + createGiteaTlsCert -> createEDFBuilderDefinition + createEDFBuilderDefinition -> createEDFBuilderComposition + createEDFBuilderComposition -> applyEDFBuilder + } +} diff --git a/resources/edp-likec4/models/code/workflow-setup-edp-argocd.c4 b/resources/edp-likec4/models/code/workflow-setup-edp-argocd.c4 new file mode 100644 index 0000000..b47b9f6 --- /dev/null +++ b/resources/edp-likec4/models/code/workflow-setup-edp-argocd.c4 @@ -0,0 +1,6 @@ +model { + workflow argocdworkflow "EDP ArgoCD Setup Workflow" { + + } +} + diff --git a/resources/edp-likec4/models/code/workflow-setup-edp-infrastructure.c4 b/resources/edp-likec4/models/code/workflow-setup-edp-infrastructure.c4 new file mode 100644 index 0000000..456dfa4 --- /dev/null +++ b/resources/edp-likec4/models/code/workflow-setup-edp-infrastructure.c4 @@ -0,0 +1,7 @@ +model { + workflow edpworkflow "EDP Infrastructure Setup Workflow" { + // step createS3bucket "Create s3 bucket for state" {} + // step setupRedis "Setup Redis" {} + } +} + diff --git a/resources/edp-likec4/models/components/application-specification.c4 b/resources/edp-likec4/models/components/application-specification.c4 new file mode 100644 index 0000000..3916520 --- /dev/null +++ b/resources/edp-likec4/models/components/application-specification.c4 @@ -0,0 +1,16 @@ +model { + component applicationspecification "application-specification" { + description 'The application specification describes the application and its components. It is used to generate the application and its components.' + + component application_gitrepo 'Git App Repo' { + description 'Git Application Repository' + technology 'Git' + icon tech:git + } + component applicationspec_gitrepo 'Git AppSpec Repo' { + description 'Git Application Specification Repository' + technology 'Git' + icon tech:git + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/components/forgejoRunner.c4 b/resources/edp-likec4/models/components/forgejoRunner.c4 new file mode 100644 index 0000000..2a70d49 --- /dev/null +++ b/resources/edp-likec4/models/components/forgejoRunner.c4 @@ -0,0 +1,6 @@ +model { + component forgejoRunner 'Forgejo Runner' { + description 'A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM.' + -> edp.forgejoActions 'register' + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/components/forgejoRunnerWorker.c4 b/resources/edp-likec4/models/components/forgejoRunnerWorker.c4 new file mode 100644 index 0000000..4397bd1 --- /dev/null +++ b/resources/edp-likec4/models/components/forgejoRunnerWorker.c4 @@ -0,0 +1,6 @@ +model { + component forgejoRunnerWorker 'Forgejo Runner Worker' { + description 'A worker is a service that runs a job invoked by a runner. A worker typically is a container.' + + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/components/promtail.c4 b/resources/edp-likec4/models/components/promtail.c4 new file mode 100644 index 0000000..85b8e5e --- /dev/null +++ b/resources/edp-likec4/models/components/promtail.c4 @@ -0,0 +1,6 @@ +model { + component promtail 'Promtail' { + description 'Log shipper agent for Loki' + + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/components/tools.c4 b/resources/edp-likec4/models/components/tools.c4 new file mode 100644 index 0000000..8484713 --- /dev/null +++ b/resources/edp-likec4/models/components/tools.c4 @@ -0,0 +1,13 @@ +model { + component edfbuilder "edfbuilder" { + description 'EDP Foundry Builder' + technology 'Golang' + icon tech:go + style { + shape rectangle + } + -> edf "boots one" + platformdeveloper -> edfbuilder "runs" + } + +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/api.c4 b/resources/edp-likec4/models/containers/api.c4 new file mode 100644 index 0000000..8902864 --- /dev/null +++ b/resources/edp-likec4/models/containers/api.c4 @@ -0,0 +1,9 @@ +model { + + extend edp { + container api 'API' { + description 'API for the EDP platform' + icon tech:swagger + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/argocd.c4 b/resources/edp-likec4/models/containers/argocd.c4 new file mode 100644 index 0000000..59fbf47 --- /dev/null +++ b/resources/edp-likec4/models/containers/argocd.c4 @@ -0,0 +1,24 @@ +model { + + extend edp { + container argoCD 'ArgoCD' { + description 'GitOps Service' + + component argocdServer 'ArgoCD Server' + component argocdAppController 'ApplicationController' + component argocdAppSetController 'ApplicationSeetController' + component argocdRedis 'Redis' { + technology: 'Redis' + icon: tech:redis + } + component argocdRepoServer 'Repo Server' + + argocdServer -> argocdRedis 'read/write' + argocdRepoServer -> argocdRedis 'read/write' + argocdAppController -> argocdRedis 'read/write' + argocdAppSetController -> argocdRedis 'read/write' + + argocdRepoServer -> edp.forgejogit 'Syncs git repo' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/backstage.c4 b/resources/edp-likec4/models/containers/backstage.c4 new file mode 100644 index 0000000..fd323c6 --- /dev/null +++ b/resources/edp-likec4/models/containers/backstage.c4 @@ -0,0 +1,25 @@ +model { + + extend edp { + container ui 'Backstage' { + description 'Developer Portal' + + component backstage 'Backstage' { + style { + icon tech:react + shape browser + } + } + + component database 'Database' { + technology 'Postgresql' + icon tech:postgresql + style { + shape storage + } + } + + backstage -> database 'reads/writes' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/crossplane.c4 b/resources/edp-likec4/models/containers/crossplane.c4 new file mode 100644 index 0000000..6452b8b --- /dev/null +++ b/resources/edp-likec4/models/containers/crossplane.c4 @@ -0,0 +1,16 @@ +model { + + extend edp { + container crossplane 'Crossplane' { + #internal + description 'Declarative management of ressources' + + component crossplane 'Crossplane' + component crossplaneFunction 'Function Patch and Transform' + component crossplaneRbacManager 'RBAC Manager' + component providerArgoCD 'ArgoCD Provider' + component providerKind 'Kind Provider' + component providerShell 'Shell Provider' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/elasticsearch.c4 b/resources/edp-likec4/models/containers/elasticsearch.c4 new file mode 100644 index 0000000..c50a766 --- /dev/null +++ b/resources/edp-likec4/models/containers/elasticsearch.c4 @@ -0,0 +1,13 @@ +model { + + container elasticsearch 'Elasticsearch' { + description ' + Elasticsearch is a distributed, RESTful search and analytics engine capable of + addressing a growing number of use cases. It centrally stores your data so you can + discover the expected and uncover the unexpected. + ' + icon tech:elasticsearch + technology 'Elasticsearch' + } + +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/externalsecrets.c4 b/resources/edp-likec4/models/containers/externalsecrets.c4 new file mode 100644 index 0000000..f929e19 --- /dev/null +++ b/resources/edp-likec4/models/containers/externalsecrets.c4 @@ -0,0 +1,13 @@ +model { + + extend edp { + container externalSecrets 'external-secrets' { + #internal + description 'Provider to access externally stored Kubernetes secrets' + + component externalSecrets 'external-secrets controller' + component certController 'cert-controller' + component webhook 'webhook' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/forgejo.c4 b/resources/edp-likec4/models/containers/forgejo.c4 new file mode 100644 index 0000000..fcaeacd --- /dev/null +++ b/resources/edp-likec4/models/containers/forgejo.c4 @@ -0,0 +1,42 @@ +model { + + extend edp { + container forgejo 'Forgejo' { + description ' + Fully managed DevOps Platform + offering capabilities like + code version controling + collaboration and ticketing + and security scanning + ' + technology 'Golang' + icon tech:go + + component forgejocollaboration 'Collaboration' { + icon tech:github + } + + component forgejoproject 'Project Mgmt' { + icon tech:github + } + + } + + component forgejoActions 'Forgejo Actions' { + description 'Continuous Integration like Github Actions' + technology 'Golang' + icon tech:go + -> forgejoRunner 'runs workflows' + } + + component imageregistry 'Forgejo OCI Image Registry' { + description 'Container Image Registry' + technology 'Golang' + icon tech:go + } + + component forgejogit 'ForgejoGit' { + icon tech:git + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/grafana.c4 b/resources/edp-likec4/models/containers/grafana.c4 new file mode 100644 index 0000000..df88bb9 --- /dev/null +++ b/resources/edp-likec4/models/containers/grafana.c4 @@ -0,0 +1,11 @@ +model { + + extend edp { + container grafana 'Grafana' { + description 'Data visualization and monitoring' + icon tech:grafana + -> prometheus 'get metrics and alerts' + -> loki 'get logs' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/ingress.c4 b/resources/edp-likec4/models/containers/ingress.c4 new file mode 100644 index 0000000..d0babc4 --- /dev/null +++ b/resources/edp-likec4/models/containers/ingress.c4 @@ -0,0 +1,25 @@ +model { + + extend edp { + container ingressNginx 'Ingress' { + #internal + description 'Ingress Controller for incoming http(s) traffic' + + component ingressNginx 'ingress-nginx' { + technology 'Nginx' + icon tech:nginx + } + + ingressNginx -> edp.forgejo 'https' + ingressNginx -> edp.keycloak.keycloak 'https' + ingressNginx -> edp.openbao.openbao 'https' + ingressNginx -> edp.argoCD.argocdServer 'https' + ingressNginx -> edp.ui.backstage 'https' + ingressNginx -> edp.minio.minio 'https' + ingressNginx -> edp.monitoring.alloy 'https' + ingressNginx -> edp.monitoring.queryFrontend 'https' + ingressNginx -> testApp.fibonacci 'https' + ingressNginx -> mailhog.mailhog 'https' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/keycloak.c4 b/resources/edp-likec4/models/containers/keycloak.c4 new file mode 100644 index 0000000..7f5ea08 --- /dev/null +++ b/resources/edp-likec4/models/containers/keycloak.c4 @@ -0,0 +1,21 @@ +model { + + extend edp { + container keycloak 'Keycloak' { + description 'Single Sign On for all EDP products' + component keycloak 'Keycloak' { + technology 'Java' + icon tech:java + } + + component keycloakDB 'Database' { + technology 'Postgresql' + icon tech:postgresql + style { + shape storage + } + } + keycloak -> keycloakDB 'reads/writes' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/kyverno.c4 b/resources/edp-likec4/models/containers/kyverno.c4 new file mode 100644 index 0000000..0ab2d71 --- /dev/null +++ b/resources/edp-likec4/models/containers/kyverno.c4 @@ -0,0 +1,9 @@ +model { + + extend edp { + container kyverno 'Kyverno' { + #internal + description 'Policy-as-Code' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/loki.c4 b/resources/edp-likec4/models/containers/loki.c4 new file mode 100644 index 0000000..f49070a --- /dev/null +++ b/resources/edp-likec4/models/containers/loki.c4 @@ -0,0 +1,8 @@ +model { + + extend edp { + container loki 'Loki' { + description 'Log aggregation system' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/mailhog.c4 b/resources/edp-likec4/models/containers/mailhog.c4 new file mode 100644 index 0000000..c773c0f --- /dev/null +++ b/resources/edp-likec4/models/containers/mailhog.c4 @@ -0,0 +1,13 @@ +model { + + extend edp { + container mailhog 'Mailhog' { + description 'Web and API based SMTP testing' + + component mailhog 'Mailhog' { + technology 'Golang' + icon tech:go + } + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/minio.c4 b/resources/edp-likec4/models/containers/minio.c4 new file mode 100644 index 0000000..eb14fce --- /dev/null +++ b/resources/edp-likec4/models/containers/minio.c4 @@ -0,0 +1,15 @@ +model { + + extend edp { + container minio 'Minio' { + description 'S3 compatible blob storage' + + component minio 'S3 Blob Storage' { + technology 'Minio' + style { + shape storage + } + } + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/monitoring.c4 b/resources/edp-likec4/models/containers/monitoring.c4 new file mode 100644 index 0000000..226acde --- /dev/null +++ b/resources/edp-likec4/models/containers/monitoring.c4 @@ -0,0 +1,30 @@ +model { + + extend edp { + container monitoring 'Monitoring' { + description 'Observability system to monitor deployed components' + + component alloy 'Alloy' { + description 'Open Telemetry Collector' + + style { + icon tech:grafana + multiple true + } + } + + container loki 'Loki' { + description 'Log aggregation system' + icon tech:grafana + + component queryFrontend 'Query Frontend' + component distributor 'Distributor' + component gateway 'Gateway' + component ingestor 'Ingestor' + component querier 'Querier' + + alloy -> distributor 'pushes logs' + } + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/objectstorage.c4 b/resources/edp-likec4/models/containers/objectstorage.c4 new file mode 100644 index 0000000..d1a9550 --- /dev/null +++ b/resources/edp-likec4/models/containers/objectstorage.c4 @@ -0,0 +1,8 @@ +model { + + container objectstorage 's3 Object Storage' { + description 's3 Object Storage' + technology 'S3 Object Storage' + } + +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/openbao.c4 b/resources/edp-likec4/models/containers/openbao.c4 new file mode 100644 index 0000000..039355a --- /dev/null +++ b/resources/edp-likec4/models/containers/openbao.c4 @@ -0,0 +1,17 @@ +model { + + extend edp { + container openbao 'OpenBao' { + description 'Secure secret storage' + + component openbao 'Openbao' { + technology 'Openbao' + style { + shape storage + } + } + + component agentInjector 'Agent Injector' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/postgres.c4 b/resources/edp-likec4/models/containers/postgres.c4 new file mode 100644 index 0000000..a77cc73 --- /dev/null +++ b/resources/edp-likec4/models/containers/postgres.c4 @@ -0,0 +1,13 @@ +model { + + container postgres 'PostgreSQL' { + description ' + PostgreSQL is a powerful, open source object-relational database system. + It has more than 15 years of active development and a proven architecture + that has earned it a strong reputation for reliability, data integrity, + and correctness.' + icon tech:postgresql + technology 'PostgreSQL' + } + +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/prometheus.c4 b/resources/edp-likec4/models/containers/prometheus.c4 new file mode 100644 index 0000000..5da49e8 --- /dev/null +++ b/resources/edp-likec4/models/containers/prometheus.c4 @@ -0,0 +1,9 @@ +model { + + extend edp { + container prometheus 'Prometheus' { + description 'Monitoring and alerting toolkit' + icon tech:prometheus + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/redis.c4 b/resources/edp-likec4/models/containers/redis.c4 new file mode 100644 index 0000000..4173b72 --- /dev/null +++ b/resources/edp-likec4/models/containers/redis.c4 @@ -0,0 +1,9 @@ +model { + + container redis 'Redis' { + description 'Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.' + icon tech:redis + technology 'Redis' + } + +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/spark-operator.c4 b/resources/edp-likec4/models/containers/spark-operator.c4 new file mode 100644 index 0000000..92a73bb --- /dev/null +++ b/resources/edp-likec4/models/containers/spark-operator.c4 @@ -0,0 +1,14 @@ +model { + + extend edp { + container spark 'Spark' { + #internal + description 'Allows running Spark applications on K8s' + + component sparkoperator 'Spark Operator' { + technology 'Spark' + icon tech:spark + } + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/containers/velero.c4 b/resources/edp-likec4/models/containers/velero.c4 new file mode 100644 index 0000000..3676cbf --- /dev/null +++ b/resources/edp-likec4/models/containers/velero.c4 @@ -0,0 +1,13 @@ +model { + + extend edp { + container velero 'Velero' { + #internal + description 'Backup Kubernetes resources' + + component velero 'Velero' + + velero -> edp.minio.minio 'store backups' + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/context/actors.c4 b/resources/edp-likec4/models/context/actors.c4 new file mode 100644 index 0000000..dd690f5 --- /dev/null +++ b/resources/edp-likec4/models/context/actors.c4 @@ -0,0 +1,35 @@ +model { + developer = actor 'Developer' { + description 'The regular user of the platform' + -> localbox 'inner loop development' + -> edp 'outer loop development' + -> edp.ui 'manages project' + -> edp.forgejo 'manages code' + -> edp.keycloak 'authenticates' + -> edp.argoCD 'manages deployments' + -> edp.grafana 'monitors' + -> edp.backstage 'create and maintain apps' + -> edp.imageregistry 'pushes and pull images' + -> edp.api 'uses API' + -> edp.forgejogit 'uses git' + } + platformdeveloper = actor 'Platform Developer' { + description 'The EDP engineer' + style { + color gray + shape person + } + } + otherProductLifecycleRoles = actor 'Reviewer, Tester, Auditors, Operators' { + description 'Coworking roles in the outer loop' + -> edp 'act according to responibility' + } + customers = actor 'End Customers' { + description 'Consumers of your Application' + style { + color amber + shape person + } + -> cloud 'uses your app' + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/context/cloud.c4 b/resources/edp-likec4/models/context/cloud.c4 new file mode 100644 index 0000000..0602ac5 --- /dev/null +++ b/resources/edp-likec4/models/context/cloud.c4 @@ -0,0 +1,14 @@ +model { + cloud = system 'Cloud' { + description 'Cloud environments' + technology 'IaaS/PaaS' + + application = schema 'application' { + description 'An application description' + technology 'DSL' + style { + color primary + } + } + } +} diff --git a/resources/edp-likec4/models/context/customer-systems.c4 b/resources/edp-likec4/models/context/customer-systems.c4 new file mode 100644 index 0000000..2d15443 --- /dev/null +++ b/resources/edp-likec4/models/context/customer-systems.c4 @@ -0,0 +1,6 @@ +model { + enterprise = system "Customers' Enterprise Systems" { + description "The customers' enterprise systems" + -> cloud 'app specific dependencies' + } +} diff --git a/resources/edp-likec4/models/context/documentation.c4 b/resources/edp-likec4/models/context/documentation.c4 new file mode 100644 index 0000000..cc72f06 --- /dev/null +++ b/resources/edp-likec4/models/context/documentation.c4 @@ -0,0 +1,10 @@ +model { + documentation = system 'Documentation' { + description 'Documentation system for EDP LikeC4 platform.' + technology 'Static Site Generator' + icon tech:electron + -> edp 'provides documentation for' + platformdeveloper -> documentation "creates and maintains documentation" + + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/context/edfoundry.c4 b/resources/edp-likec4/models/context/edfoundry.c4 new file mode 100644 index 0000000..2453ca1 --- /dev/null +++ b/resources/edp-likec4/models/context/edfoundry.c4 @@ -0,0 +1,10 @@ +model { + edf = system 'EDF' { + description 'EDP Foundry is a platform for building and deploying EDPs tenantwise.' + technology 'Kubernetes' + icon tech:kubernetes + -> edp 'builds many' + platformdeveloper -> edf "develops EDP and EDF" + + } +} \ No newline at end of file diff --git a/resources/edp-likec4/models/context/edp.c4 b/resources/edp-likec4/models/context/edp.c4 new file mode 100644 index 0000000..970e989 --- /dev/null +++ b/resources/edp-likec4/models/context/edp.c4 @@ -0,0 +1,31 @@ +model { + edp = system 'EDP' { + description 'EDP Edge Development Platform' + technology 'Kubernetes' + icon tech:kubernetes + -> enterprise 'integrates' + -> cloud 'deploys and observes' + -> localbox // inner-outer loop synchronization + + application = schema 'application' { + description 'An application description' + technology 'DSL' + style { + color primary + } + } + + container testApp 'Fibonacci' { + description 'Testapp to validate deployments' + + component fibonacci 'Fibonacci' { + technology 'Golang' + icon tech:go + } + } + + // UI requests data from the Backend + // ui -> backend 'fetches via HTTPS' + } +} + diff --git a/resources/edp-likec4/models/context/localbox.c4 b/resources/edp-likec4/models/context/localbox.c4 new file mode 100644 index 0000000..07547d8 --- /dev/null +++ b/resources/edp-likec4/models/context/localbox.c4 @@ -0,0 +1,22 @@ +model { + localbox = system 'localbox' { + description 'A local development system' + technology 'Linux/Windows/Mac' + -> edp 'inner-outer-loop synchronization' + -> enterprise 'company integration' + + application = schema 'application' { + description 'An application description' + technology 'DSL' + style { + color primary + } + } + + git = component 'git' { + description 'local git' + technology 'Git' + icon tech:git + } + } +} diff --git a/resources/edp-likec4/models/spec.c4 b/resources/edp-likec4/models/spec.c4 new file mode 100644 index 0000000..c99a0ad --- /dev/null +++ b/resources/edp-likec4/models/spec.c4 @@ -0,0 +1,48 @@ +specification { + element actor { + style { + shape person + color green + } + } + element person { + style { + shape person + color green + } + } + element component + element container { + style { + opacity 20% + } + } + element internalComponent { + style { + color muted + opacity 15% + } + } + + element schema + element step + element system + element workflow + element tool + element process + element repository { + style { + shape storage + } + } + + deploymentNode cloud + deploymentNode environment + deploymentNode computeressource + deploymentNode paas + deploymentNode kubernetes + deploymentNode cluster + deploymentNode namespace + + tag internal +} \ No newline at end of file diff --git a/resources/edp-likec4/views/deployment/kind/kind.c4 b/resources/edp-likec4/views/deployment/kind/kind.c4 new file mode 100644 index 0000000..a6d12f3 --- /dev/null +++ b/resources/edp-likec4/views/deployment/kind/kind.c4 @@ -0,0 +1,16 @@ +views { + deployment view index { + title 'Local Kind Deployment' + + include + *, + local.**, + local.monitoring.*, + local.openbao.*, + local.externalSecrets.*, + local.crossplane.*, + local.spark.*, + local.argocd.* + } +} + diff --git a/resources/edp-likec4/views/deployment/otc/edp.c4 b/resources/edp-likec4/views/deployment/otc/edp.c4 new file mode 100644 index 0000000..b5d9d0b --- /dev/null +++ b/resources/edp-likec4/views/deployment/otc/edp.c4 @@ -0,0 +1,24 @@ +views { + deployment view edp-per-tenant { + title 'EDP per tenant' + + include + otc-edp-per-tenant, + otc-edp-per-tenant.*, + otc-edp-per-tenant.cce, + otc-edp-per-tenant.cce.*, + otc-edp-per-tenant.cce.**, + otc-edp-per-tenant.cce.externalSecrets, + otc-edp-per-tenant.forgejoRunnerInfrastructure, + otc-edp-per-tenant.forgejoRunnerInfrastructure.*, + otc-edp-per-tenant.cloudServices, + otc-edp-per-tenant.cloudServices.* + style otc-edp-per-tenant { + color slate + } + style otc-edp-per-tenant.cce { + color red + } + } +} + diff --git a/resources/edp-likec4/views/deployment/otc/forgejo-runner-connections.md b/resources/edp-likec4/views/deployment/otc/forgejo-runner-connections.md new file mode 100644 index 0000000..13697f9 --- /dev/null +++ b/resources/edp-likec4/views/deployment/otc/forgejo-runner-connections.md @@ -0,0 +1,19 @@ +```mermaid +flowchart TD + subgraph Forgejo + forgejoActions[Forgejo Actions] + forgejogit[ForgejoGit] + end + forgejoRunner[Forgejo Runner] + imageregistry[Forgejo OCI Image Registry] + + forgejoActions -- runs workflows --> forgejoRunner + forgejogit -- triggers on push --> forgejoRunner + forgejoRunner -- pushes new image --> imageregistry + forgejoRunner -- pushes new appspec --> forgejogit +``` + +This diagram shows the main components that connect to `forgejo-runner`: +- `Forgejo Actions` triggers workflows to be run by the runner. +- `ForgejoGit` triggers the runner on push events. +- The runner interacts with the image registry and git as part of CI/CD flows. diff --git a/resources/edp-likec4/views/deployment/otc/foundry-and-edp.c4 b/resources/edp-likec4/views/deployment/otc/foundry-and-edp.c4 new file mode 100644 index 0000000..ee0794d --- /dev/null +++ b/resources/edp-likec4/views/deployment/otc/foundry-and-edp.c4 @@ -0,0 +1,53 @@ +views { + + deployment view forgejo-as-a-service { + title 'Forgejo as a Service' + + include + + otc-edpFoundry.*, + otc-edpFoundry.internalServices, + otc-edpFoundry.internalServices.*, + otc-edpFoundry.centralObservability, + otc-edpFoundry.centralObservability.*, + otc-edpFoundry.workflowSetupEDPInfrastructure, + otc-edpFoundry.workflowSetupEDPInfrastructure.*, + otc-edpFoundry.workflowSetupArgoCDInfrastructure, + otc-edpFoundry.workflowSetupArgoCDInfrastructure.*, + otc-edpFoundry.forgejoRunnerInfrastructure, + otc-edpFoundry.forgejoRunnerInfrastructure.*, + + otc-edp-per-tenant, + otc-edp-per-tenant.*, + otc-edp-per-tenant.cce, + otc-edp-per-tenant.cce.*, + otc-edp-per-tenant.cce.**, + otc-edp-per-tenant.cce.externalSecrets, + otc-edp-per-tenant.forgejoRunnerInfrastructure, + otc-edp-per-tenant.forgejoRunnerInfrastructure.*, + otc-edp-per-tenant.cloudServices, + otc-edp-per-tenant.cloudServices.* + style otc-edp-per-tenant { + color slate + } + style otc-edpFoundry { + color slate + } + style otc-edpFoundry.workflowSetupEDPInfrastructure { + color amber + } + style otc-edpFoundry.workflowSetupArgoCDInfrastructure { + color amber + } + style otc-edpFoundry.forgejoRunnerInfrastructure { + color green + } + style otc-edp-per-tenant.cce { + color red + } + style otc-edpFoundry.cce { + color red + } + } +} + diff --git a/resources/edp-likec4/views/deployment/otc/foundry.c4 b/resources/edp-likec4/views/deployment/otc/foundry.c4 new file mode 100644 index 0000000..b07546c --- /dev/null +++ b/resources/edp-likec4/views/deployment/otc/foundry.c4 @@ -0,0 +1,37 @@ +views { + deployment view edp-foundry-central-service { + title 'EDP Foundry Central Service' + + include + otc-edpFoundry, + otc-edpFoundry.*, + otc-edpFoundry.internalServices, + otc-edpFoundry.internalServices.*, + otc-edpFoundry.centralObservability, + otc-edpFoundry.centralObservability.*, + otc-edpFoundry.workflowSetupEDPInfrastructure, + otc-edpFoundry.workflowSetupEDPInfrastructure.*, + otc-edpFoundry.workflowSetupArgoCDInfrastructure, + otc-edpFoundry.workflowSetupArgoCDInfrastructure.*, + otc-edpFoundry.workflowSetupArgoCDInfrastructure.*, + otc-edpFoundry.forgejoRunnerInfrastructure, + otc-edpFoundry.forgejoRunnerInfrastructure.* + + style otc-edpFoundry.forgejoRunnerInfrastructure { + color green + } + style otc-edpFoundry.workflowSetupEDPInfrastructure { + color amber + } + style otc-edpFoundry.workflowSetupArgoCDInfrastructure { + color amber + } + style otc-edpFoundry { + color slate + } + style otc-edpFoundry.cce { + color red + } + } +} + diff --git a/resources/edp-likec4/views/deployment/otc/otc-faas.c4 b/resources/edp-likec4/views/deployment/otc/otc-faas.c4 new file mode 100644 index 0000000..4ba87eb --- /dev/null +++ b/resources/edp-likec4/views/deployment/otc/otc-faas.c4 @@ -0,0 +1,24 @@ +views { + deployment view otc-faas { + title 'OTC Prototype FaaS' + + include + otc-faas, + otc-faas.*, + otc-faas.dev, + otc-faas.dev.*, + otc-faas.dev.cce, + otc-faas.dev.cce.*, + otc-faas.prod, + otc-faas.prod.*, + otc-faas.prod.cce, + otc-faas.prod.cce.*, + style otc-edp-per-tenant { + color slate + } + style otc-edp-per-tenant.cce { + color red + } + } +} + diff --git a/resources/edp-likec4/views/documentation/components-template-documentation.c4 b/resources/edp-likec4/views/documentation/components-template-documentation.c4 new file mode 100644 index 0000000..4fde87e --- /dev/null +++ b/resources/edp-likec4/views/documentation/components-template-documentation.c4 @@ -0,0 +1,11 @@ +views { + view components-template-documentation of documentation { + description 'Documentation System Context View' + include documentation + include platformdeveloper with { + title 'Technical Writer' + description 'Could be an engineer, but in this case it\'s the Technical Writer' + } + // autoLayout LeftRight 120 110 + } +} \ No newline at end of file diff --git a/resources/edp-likec4/views/dynamic/cicd/gitops-inner-outer-loop.c4 b/resources/edp-likec4/views/dynamic/cicd/gitops-inner-outer-loop.c4 new file mode 100644 index 0000000..d6f60f2 --- /dev/null +++ b/resources/edp-likec4/views/dynamic/cicd/gitops-inner-outer-loop.c4 @@ -0,0 +1,26 @@ +views { + dynamic view view_gitops-inner-outer-loop_15 { + title 'outer-ci-loop' + + include localbox, edp + include edp.forgejo with { + color gray + title 'Forgejo' + } + + style edp._ { + color secondary + } + + localbox.git -> edp.forgejogit 'git push' + edp.forgejogit -> forgejoRunner 'on push' + + forgejoRunner -> edp.imageregistry 'pushes new image' + forgejoRunner -> edp.forgejogit 'pushes new appspec' + + edp.forgejogit -> edp.argoCD 'triggers deployment' + edp.argoCD -> cloud 'deploys application' + cloud -> edp.imageregistry 'pulls image' + } + +} \ No newline at end of file diff --git a/resources/edp-likec4/views/edp/edfbuilder.c4 b/resources/edp-likec4/views/edp/edfbuilder.c4 new file mode 100644 index 0000000..a74cb32 --- /dev/null +++ b/resources/edp-likec4/views/edp/edfbuilder.c4 @@ -0,0 +1,8 @@ + +views { + view edpbuilderworkflow of edfbuilder { + description 'Describes the process how to create an EDP instance' + include edfbuilder.** + autoLayout LeftRight 120 110 + } +} \ No newline at end of file diff --git a/resources/edp-likec4/views/edp/edp-as-idp.c4 b/resources/edp-likec4/views/edp/edp-as-idp.c4 new file mode 100644 index 0000000..6a440ee --- /dev/null +++ b/resources/edp-likec4/views/edp/edp-as-idp.c4 @@ -0,0 +1,36 @@ +views { + view idp of edp { + title 'EDP as IDP' + + global style text_large + + include developer + exclude element.tag = #internal + + style * { + opacity 25% + } + group 'EDP' { + group 'Developer Control Plane' { + group 'Frontend' { + include backstage, api + } + group 'Version Control' { + include applicationspecification.application_gitrepo, applicationspecification.applicationspec_gitrepo + include forgejogit + } + } + group 'Integration & Delivery Plane' { + include forgejoRunner, imageregistry, argoCD + exclude -> argoCD -> + } + group 'Monitoring Plane' { + include monitoring, grafana + } + group 'Security Plane' { + include keycloak, kyverno, externalSecrets, openbao + } + } + autoLayout TopBottom + } +} \ No newline at end of file diff --git a/resources/edp-likec4/views/edp/edp-as-orchestrator.c4 b/resources/edp-likec4/views/edp/edp-as-orchestrator.c4 new file mode 100644 index 0000000..fa650f5 --- /dev/null +++ b/resources/edp-likec4/views/edp/edp-as-orchestrator.c4 @@ -0,0 +1,35 @@ +views { + view edporchestrator of edp { + title 'EDP as Orchestrator' + + global style text_large + + exclude element.tag = #internal + + style * { + opacity 25% + } + group 'EDP' { + group 'Developer Control Plane' { + + } + group 'Integration & Delivery Plane' { + + } + group 'Monitoring Plane' { + + } + group 'Security Plane' { + + } + group 'Backend' { + include argoCD with { + description 'Declarative management of platform tools' + } + include crossplane + + } + } + autoLayout TopBottom + } +} \ No newline at end of file diff --git a/resources/edp-likec4/views/edp/edp.c4 b/resources/edp-likec4/views/edp/edp.c4 new file mode 100644 index 0000000..490e553 --- /dev/null +++ b/resources/edp-likec4/views/edp/edp.c4 @@ -0,0 +1,86 @@ +views { + + view edp of edp { + title 'Context view' + include * + exclude ingressNginx -> + exclude element.tag = #internal + + style * { + opacity 25% + } + } + + view keycloak of edp.keycloak { + include + *, + edp.ingressNginx -> + } + + view forgejo of edp.forgejo { + include + *, + edp.ingressNginx -> + } + + view crossplane of edp.crossplane { + include + *, + edp.ingressNginx -> + } + + view externalSecrets of edp.externalSecrets { + include + *, + edp.ingressNginx -> + } + + view velero of edp.velero { + include + *, + edp.ingressNginx -> + } + + view minio of edp.minio { + include + *, + edp.ingressNginx -> + } + + view monitoring of edp.monitoring { + include + *, + edp.ingressNginx -> + loki.* + } + + view ingressNginx of edp.ingressNginx { + include * + } + + view testapp of edp.testApp { + include + *, + edp.ingressNginx -> + } + + view mailhog of edp.mailhog { + include + *, + edp.ingressNginx -> + } + + view spark of edp.spark { + include + *, + edp.ingressNginx -> + } + + view argoCD of edp.argoCD { + include + *, + edp.ingressNginx -> + } +} + + diff --git a/resources/edp-likec4/views/high-level-concept/application-transition.c4 b/resources/edp-likec4/views/high-level-concept/application-transition.c4 new file mode 100644 index 0000000..cf86039 --- /dev/null +++ b/resources/edp-likec4/views/high-level-concept/application-transition.c4 @@ -0,0 +1,35 @@ +views { + + // the application meta-definition travels through all deploying components + view application-transition { + title 'application-transistion' + // autoLayout LeftRight 100 100 + + // include * + exclude developer, localbox, edp, otherProductLifecycleRoles + exclude element.kind = workflow + include cloud, cloud.application + + group 'developer-scope' { + color green + opacity 20% + border none + include developer + include otherProductLifecycleRoles + + group 'Devops inner-loop' { + color gray + opacity 30% + border none + + include localbox, localbox.application + } + group 'Devops outer-loop' { + color gray + opacity 30% + border none + include edp, edp.application + } + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/views/high-level-concept/platform-context/developer-landscape-with-foundry.c4 b/resources/edp-likec4/views/high-level-concept/platform-context/developer-landscape-with-foundry.c4 new file mode 100644 index 0000000..606c91c --- /dev/null +++ b/resources/edp-likec4/views/high-level-concept/platform-context/developer-landscape-with-foundry.c4 @@ -0,0 +1,41 @@ + +global { + style text_large * { + size xlarge + } +} +views { + + view developer-landscape-with-foundry { + title 'Developer Landscape View (with Foundry)' + autoLayout LeftRight 100 100 + + global style text_large + + include * + exclude developer, localbox, edp, otherProductLifecycleRoles + exclude element.kind = workflow + + group 'developer-scope' { + color green + opacity 20% + border none + include developer + include otherProductLifecycleRoles + + group 'Devops inner-loop' { + color gray + opacity 30% + border none + + include localbox + } + group 'Devops outer-loop' { + color gray + opacity 30% + border none + include edp + } + } + } +} \ No newline at end of file diff --git a/resources/edp-likec4/views/high-level-concept/platform-context/developer-landscape.c4 b/resources/edp-likec4/views/high-level-concept/platform-context/developer-landscape.c4 new file mode 100644 index 0000000..d88a9cb --- /dev/null +++ b/resources/edp-likec4/views/high-level-concept/platform-context/developer-landscape.c4 @@ -0,0 +1,33 @@ +views { + + view landscape { + title 'Developer Landscape View' + autoLayout LeftRight 100 100 + + include * + exclude developer, localbox, edp, otherProductLifecycleRoles + exclude element.kind = workflow + + group 'developer-scope' { + color green + opacity 20% + border none + include developer + include otherProductLifecycleRoles + + group 'Devops inner-loop' { + color gray + opacity 30% + border none + + include localbox + } + group 'Devops outer-loop' { + color gray + opacity 30% + border none + include edp + } + } + } +} \ No newline at end of file diff --git a/resources/product-structure.excalidraw b/resources/product-structure.excalidraw new file mode 100644 index 0000000..e9b8f9c --- /dev/null +++ b/resources/product-structure.excalidraw @@ -0,0 +1,5239 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor", + "elements": [ + { + "id": "vkEBND0A690yxuKyCwa5r", + "type": "rectangle", + "x": 3448.9437917073556, + "y": -86.80836232503256, + "width": 223.6666666666665, + "height": 169.66666666666669, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a0", + "roundness": { + "type": 3 + }, + "seed": 242676382, + "version": 667, + "versionNonce": 132587654, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "EscCIjL-9_GuHSB42NcbB" + }, + { + "id": "lkOogWCLbvj4ncEE1hva8", + "type": "arrow" + }, + { + "id": "a4N0-GhX7PXNPpXhJrLLe", + "type": "arrow" + }, + { + "id": "HvP_lxaks2dOd2SDvhfLI", + "type": "arrow" + }, + { + "id": "DNfr5h1rXvZeS5O5BU772", + "type": "arrow" + }, + { + "id": "Ed3PIiHWUxcNH9Mh-kOuU", + "type": "arrow" + } + ], + "updated": 1763384714589, + "link": null, + "locked": false + }, + { + "id": "EscCIjL-9_GuHSB42NcbB", + "type": "text", + "x": 3521.447107950845, + "y": -24.47502899169922, + "width": 78.6600341796875, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a1", + "roundness": null, + "seed": 364626690, + "version": 647, + "versionNonce": 1887248326, + "isDeleted": false, + "boundElements": [], + "updated": 1763384714589, + "link": null, + "locked": false, + "text": "EDP", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vkEBND0A690yxuKyCwa5r", + "originalText": "EDP", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "t0TPl7T0HbrKo0OK0MQB4", + "type": "rectangle", + "x": 3498.789647420246, + "y": 155.7583363850913, + "width": 263.6666666666666, + "height": 136.33333333333326, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a2", + "roundness": { + "type": 3 + }, + "seed": 1074346626, + "version": 912, + "versionNonce": 1485398234, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "w97AzKYRtc3ZIiPzWmF7v" + }, + { + "id": "a4N0-GhX7PXNPpXhJrLLe", + "type": "arrow" + }, + { + "id": "MhRtWxLCedKpv3iZU6Rfx", + "type": "arrow" + }, + { + "id": "35YnFI-q2BjED7vgPVNiH", + "type": "arrow" + }, + { + "id": "CwM7TPKWAvOReKBmO5JAt", + "type": "arrow" + }, + { + "id": "6a4IhhXjxMI4h9w65P5eW", + "type": "arrow" + }, + { + "id": "df09G6vYHr0eiQitHZcBm", + "type": "arrow" + } + ], + "updated": 1763391152495, + "link": null, + "locked": false + }, + { + "id": "w97AzKYRtc3ZIiPzWmF7v", + "type": "text", + "x": 3565.408968607583, + "y": 201.42500305175793, + "width": 130.4280242919922, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a3", + "roundness": null, + "seed": 633510466, + "version": 896, + "versionNonce": 85734810, + "isDeleted": false, + "boundElements": [], + "updated": 1763391152495, + "link": null, + "locked": false, + "text": "Forgejo", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "t0TPl7T0HbrKo0OK0MQB4", + "originalText": "Forgejo", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "4lTu_DNrwnbxtfzzQ-TrP", + "type": "rectangle", + "x": 2851.8614552815734, + "y": 150.0791727701824, + "width": 270.3333333333332, + "height": 131.3333333333334, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a4", + "roundness": { + "type": 3 + }, + "seed": 1878985538, + "version": 718, + "versionNonce": 1152880774, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "jRpDlOWMofCm5734tHjnz" + }, + { + "id": "lkOogWCLbvj4ncEE1hva8", + "type": "arrow" + }, + { + "id": "bFzKsoWrxziwbSPRxWwVS", + "type": "arrow" + }, + { + "id": "DffsfZQo3EdyDYreD651F", + "type": "arrow" + }, + { + "id": "rRYwarMxk0bw-nql_bbzS", + "type": "arrow" + } + ], + "updated": 1763384982445, + "link": null, + "locked": false + }, + { + "id": "jRpDlOWMofCm5734tHjnz", + "type": "text", + "x": 2865.45609283447, + "y": 193.24583943684908, + "width": 243.14405822753906, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a5", + "roundness": null, + "seed": 541086466, + "version": 722, + "versionNonce": 431984582, + "isDeleted": false, + "boundElements": [], + "updated": 1763384982445, + "link": null, + "locked": false, + "text": "Orchestration", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "4lTu_DNrwnbxtfzzQ-TrP", + "originalText": "Orchestration", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "NKe13dkM6xQgKluQErmaO", + "type": "rectangle", + "x": 2352.922922770181, + "y": 342.29168192545546, + "width": 282.0000000000003, + "height": 146.66666666666654, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a6", + "roundness": { + "type": 3 + }, + "seed": 429588062, + "version": 754, + "versionNonce": 1673658118, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "mrC_vkcrFwA1rQI_6eZzX" + }, + { + "id": "bFzKsoWrxziwbSPRxWwVS", + "type": "arrow" + }, + { + "id": "zbnZollP3pYTELPsUG-Xo", + "type": "arrow" + }, + { + "id": "KWgEAQqxr3S9KhRWsmBV2", + "type": "arrow" + } + ], + "updated": 1763391073082, + "link": null, + "locked": false + }, + { + "id": "mrC_vkcrFwA1rQI_6eZzX", + "type": "text", + "x": 2358.616877237954, + "y": 370.6250152587887, + "width": 270.6120910644531, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a7", + "roundness": null, + "seed": 1755808414, + "version": 783, + "versionNonce": 1941916678, + "isDeleted": false, + "boundElements": [], + "updated": 1763391073082, + "link": null, + "locked": false, + "text": "Infrastructure-\nProvisioning", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "NKe13dkM6xQgKluQErmaO", + "originalText": "Infrastructure-Provisioning", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "layt3FacJkYmYXuCA3eqg", + "type": "rectangle", + "x": 2300.189526875812, + "y": 565.2916666666665, + "width": 280.33333333333326, + "height": 173.33333333333326, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a8", + "roundness": { + "type": 3 + }, + "seed": 1257673218, + "version": 744, + "versionNonce": 1792396870, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "iWgJ1CBtjV5Vl7VsUSCc8" + }, + { + "id": "zbnZollP3pYTELPsUG-Xo", + "type": "arrow" + }, + { + "id": "W9xzjyUSDx4oatQjQMCTa", + "type": "arrow" + } + ], + "updated": 1763391080214, + "link": null, + "locked": false + }, + { + "id": "iWgJ1CBtjV5Vl7VsUSCc8", + "type": "text", + "x": 2308.956138610838, + "y": 584.4583333333331, + "width": 262.80010986328125, + "height": 135, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a9", + "roundness": null, + "seed": 672727490, + "version": 807, + "versionNonce": 1635838982, + "isDeleted": false, + "boundElements": [], + "updated": 1763391080215, + "link": null, + "locked": false, + "text": "Terraform\ninfra-deploy,\ninfra-catalogue", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "layt3FacJkYmYXuCA3eqg", + "originalText": "Terraform\ninfra-deploy, infra-catalogue", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "F_81STR9IKF2KqlGNdupb", + "type": "rectangle", + "x": 2771.1947886149073, + "y": 344.7458394368491, + "width": 243.66666666666754, + "height": 146.6666666666668, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aA", + "roundness": { + "type": 3 + }, + "seed": 2007215838, + "version": 796, + "versionNonce": 645240730, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "SjJ-eaTGplnq8O8Gqx9ok" + }, + { + "id": "xtN_m9HdbobLbAV1oGEpC", + "type": "arrow" + }, + { + "id": "DffsfZQo3EdyDYreD651F", + "type": "arrow" + }, + { + "id": "b58DD6x3YdYB3N2noILhL", + "type": "arrow" + } + ], + "updated": 1763391064682, + "link": null, + "locked": false + }, + { + "id": "SjJ-eaTGplnq8O8Gqx9ok", + "type": "text", + "x": 2790.122100830077, + "y": 373.0791727701825, + "width": 205.81204223632812, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aB", + "roundness": null, + "seed": 1397105438, + "version": 842, + "versionNonce": 1999108762, + "isDeleted": false, + "boundElements": [], + "updated": 1763391064682, + "link": null, + "locked": false, + "text": "Platform-\nProvisioning", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "F_81STR9IKF2KqlGNdupb", + "originalText": "Platform-Provisioning", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "_SA6WTuXA_hi0TaT8Y2cb", + "type": "rectangle", + "x": 2890.8614552815734, + "y": 574.4125061035156, + "width": 235.33333333333334, + "height": 143.00000000000014, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aC", + "roundness": { + "type": 3 + }, + "seed": 1529105182, + "version": 888, + "versionNonce": 1143562586, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "F7mNndoMDKgsucrJyfMaw" + }, + { + "id": "xtN_m9HdbobLbAV1oGEpC", + "type": "arrow" + }, + { + "id": "Bhuw2euYW-eTFNU9i16zc", + "type": "arrow" + }, + { + "id": "9OOdwZcFnO8NfwcqvkMHD", + "type": "arrow" + }, + { + "id": "Eo2LC08bZTyqHZ_pAvf1c", + "type": "arrow" + } + ], + "updated": 1763391118113, + "link": null, + "locked": false + }, + { + "id": "F7mNndoMDKgsucrJyfMaw", + "type": "text", + "x": 2948.570098876951, + "y": 623.4125061035157, + "width": 119.91604614257812, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aD", + "roundness": null, + "seed": 1827223390, + "version": 951, + "versionNonce": 1268730138, + "isDeleted": false, + "boundElements": [], + "updated": 1763391118113, + "link": null, + "locked": false, + "text": "Stacks", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_SA6WTuXA_hi0TaT8Y2cb", + "originalText": "Stacks", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "8RoIcXb7xOv272dQSIUus", + "type": "rectangle", + "x": 2650.194788614907, + "y": 811.7458394368496, + "width": 233.6666666666666, + "height": 129.66666666666652, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aE", + "roundness": { + "type": 3 + }, + "seed": 2095895938, + "version": 915, + "versionNonce": 880936582, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "TXRFI99H-wPV8jJYQr3HX" + }, + { + "id": "Bhuw2euYW-eTFNU9i16zc", + "type": "arrow" + } + ], + "updated": 1763390995501, + "link": null, + "locked": false + }, + { + "id": "TXRFI99H-wPV8jJYQr3HX", + "type": "text", + "x": 2659.064086914061, + "y": 854.0791727701828, + "width": 215.92807006835938, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aF", + "roundness": null, + "seed": 1501222210, + "version": 996, + "versionNonce": 1422607814, + "isDeleted": false, + "boundElements": [], + "updated": 1763390995501, + "link": null, + "locked": false, + "text": "Component 1", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "8RoIcXb7xOv272dQSIUus", + "originalText": "Component 1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "lkOogWCLbvj4ncEE1hva8", + "type": "arrow", + "x": 3448.1479014392758, + "y": 12.60854263833994, + "width": 326.26024839165575, + "height": 157.81544986050005, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aI", + "roundness": { + "type": 2 + }, + "seed": 1540868446, + "version": 1640, + "versionNonce": 1678092038, + "isDeleted": false, + "boundElements": [], + "updated": 1763384982446, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -326.26024839165575, + 157.81544986050005 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "vkEBND0A690yxuKyCwa5r", + "focus": 0.28485983606564225, + "gap": 1 + }, + "endBinding": { + "elementId": "4lTu_DNrwnbxtfzzQ-TrP", + "focus": 0.1519523386576579, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "bFzKsoWrxziwbSPRxWwVS", + "type": "arrow", + "x": 2842.6674388659812, + "y": 263.08798961655305, + "width": 202.79999779555055, + "height": 106.08130661261316, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aJ", + "roundness": { + "type": 2 + }, + "seed": 2005135874, + "version": 1628, + "versionNonce": 390323014, + "isDeleted": false, + "boundElements": [], + "updated": 1763391073115, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -202.79999779555055, + 106.08130661261316 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "4lTu_DNrwnbxtfzzQ-TrP", + "focus": 0.20732912257650107, + "gap": 11.12417597375916 + }, + "endBinding": { + "elementId": "NKe13dkM6xQgKluQErmaO", + "focus": 0.2014749804163801, + "gap": 5.670835819366529 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "zbnZollP3pYTELPsUG-Xo", + "type": "arrow", + "x": 2468.7619737407026, + "y": 489.4221224367187, + "width": 20.199540611416523, + "height": 75.34198164952329, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aK", + "roundness": { + "type": 2 + }, + "seed": 223921282, + "version": 1463, + "versionNonce": 1691358598, + "isDeleted": false, + "boundElements": [], + "updated": 1763391080214, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -20.199540611416523, + 75.34198164952329 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "NKe13dkM6xQgKluQErmaO", + "focus": 0.03153454772276274, + "gap": 1 + }, + "endBinding": { + "elementId": "layt3FacJkYmYXuCA3eqg", + "focus": -0.09286907973609843, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a4N0-GhX7PXNPpXhJrLLe", + "type": "arrow", + "x": 3577.23363489021, + "y": 84.83362334905378, + "width": 30.87910068197698, + "height": 70.46286980778127, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aL", + "roundness": { + "type": 2 + }, + "seed": 1324012318, + "version": 1758, + "versionNonce": 483878618, + "isDeleted": false, + "boundElements": [], + "updated": 1763391152611, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 30.87910068197698, + 70.46286980778127 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "vkEBND0A690yxuKyCwa5r", + "focus": 0.14536315130697988, + "gap": 3.2499942476817694 + }, + "endBinding": { + "elementId": "t0TPl7T0HbrKo0OK0MQB4", + "focus": 0.04500219885520195, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "xtN_m9HdbobLbAV1oGEpC", + "type": "arrow", + "x": 2936.28220592564, + "y": 492.7487135612349, + "width": 41.35890088822225, + "height": 81.14243949452828, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aN", + "roundness": { + "type": 2 + }, + "seed": 269450754, + "version": 1599, + "versionNonce": 1843930650, + "isDeleted": false, + "boundElements": [], + "updated": 1763391118113, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 41.35890088822225, + 81.14243949452828 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "F_81STR9IKF2KqlGNdupb", + "focus": -0.034244415659738126, + "gap": 2.5655005249741407 + }, + "endBinding": { + "elementId": "_SA6WTuXA_hi0TaT8Y2cb", + "focus": 0.03776994298778566, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "DffsfZQo3EdyDYreD651F", + "type": "arrow", + "x": 2964.5167682942715, + "y": 281.85222879409713, + "width": 21.98468917118862, + "height": 62.31825384997899, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aO", + "roundness": { + "type": 2 + }, + "seed": 583904478, + "version": 1579, + "versionNonce": 898210842, + "isDeleted": false, + "boundElements": [], + "updated": 1763391064732, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -21.98468917118862, + 62.31825384997899 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "4lTu_DNrwnbxtfzzQ-TrP", + "focus": -0.0044550562715617165, + "gap": 1 + }, + "endBinding": { + "elementId": "F_81STR9IKF2KqlGNdupb", + "focus": 0.15576156975679706, + "gap": 1.1108165692702414 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "Bhuw2euYW-eTFNU9i16zc", + "type": "arrow", + "x": 2932.020304616605, + "y": 722.132905056231, + "width": 92.86372693028488, + "height": 87.72319267494106, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aP", + "roundness": { + "type": 2 + }, + "seed": 537301698, + "version": 1667, + "versionNonce": 619729626, + "isDeleted": false, + "boundElements": [], + "updated": 1763391118113, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -92.86372693028488, + 87.72319267494106 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "_SA6WTuXA_hi0TaT8Y2cb", + "focus": -0.021599078143972487, + "gap": 8.806116783999528 + }, + "endBinding": { + "elementId": "8RoIcXb7xOv272dQSIUus", + "focus": 0.005511523490681001, + "gap": 3.821071664652436 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "OpdnLYI8J5szelucqIce1", + "type": "rectangle", + "x": 3188.528121948242, + "y": 807.4125061035154, + "width": 238.66666666666697, + "height": 126.33333333333306, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aQ", + "roundness": { + "type": 3 + }, + "seed": 2039569858, + "version": 1099, + "versionNonce": 932242202, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "4I1Olz0jRI1IrWCCpMl_6" + }, + { + "id": "9OOdwZcFnO8NfwcqvkMHD", + "type": "arrow" + }, + { + "id": "MhRtWxLCedKpv3iZU6Rfx", + "type": "arrow" + }, + { + "id": "Few8zOmHv71iXvDfoexhc", + "type": "arrow" + } + ], + "updated": 1763390991701, + "link": null, + "locked": false + }, + { + "id": "4I1Olz0jRI1IrWCCpMl_6", + "type": "text", + "x": 3196.2794240315757, + "y": 848.0791727701819, + "width": 223.1640625, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aR", + "roundness": null, + "seed": 417617282, + "version": 1185, + "versionNonce": 343502810, + "isDeleted": false, + "boundElements": [], + "updated": 1763390991701, + "link": null, + "locked": false, + "text": "Component X", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "OpdnLYI8J5szelucqIce1", + "originalText": "Component X", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "9OOdwZcFnO8NfwcqvkMHD", + "type": "arrow", + "x": 3097.8152212385676, + "y": 717.8713052992143, + "width": 164.06503145121724, + "height": 89.07067600321659, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aS", + "roundness": { + "type": 2 + }, + "seed": 536559106, + "version": 1755, + "versionNonce": 1272244122, + "isDeleted": false, + "boundElements": [], + "updated": 1763391118113, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 164.06503145121724, + 89.07067600321659 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "_SA6WTuXA_hi0TaT8Y2cb", + "focus": 0.17347242703939872, + "gap": 1 + }, + "endBinding": { + "elementId": "OpdnLYI8J5szelucqIce1", + "focus": 0.30491075133428747, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "MhRtWxLCedKpv3iZU6Rfx", + "type": "arrow", + "x": 3379.7138934365817, + "y": 811.1608108197398, + "width": 147.10907084991595, + "height": 518.6851927279531, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aT", + "roundness": { + "type": 2 + }, + "seed": 524561282, + "version": 1938, + "versionNonce": 24615770, + "isDeleted": false, + "boundElements": [], + "updated": 1763391711481, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 51.11894350939383, + -411.7024622276173 + ], + [ + 147.10907084991595, + -518.6851927279531 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "OpdnLYI8J5szelucqIce1", + "focus": 0.5069711552521924, + "gap": 3.7483047162244247 + }, + "endBinding": { + "elementId": "t0TPl7T0HbrKo0OK0MQB4", + "focus": 0.21913979612959741, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "kmtDycZxwwqCxwxbJ62VN", + "type": "rectangle", + "x": 3461.3614552815748, + "y": 371.57917277018214, + "width": 192.00000000000003, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aU", + "roundness": { + "type": 3 + }, + "seed": 1659730626, + "version": 960, + "versionNonce": 1090785094, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ASpNMYOiBSktj9CiNGRi7" + }, + { + "id": "35YnFI-q2BjED7vgPVNiH", + "type": "arrow" + } + ], + "updated": 1763385009911, + "link": null, + "locked": false + }, + { + "id": "ASpNMYOiBSktj9CiNGRi7", + "type": "text", + "x": 3485.3074391682935, + "y": 390.57917277018214, + "width": 144.1080322265625, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aV", + "roundness": null, + "seed": 448057986, + "version": 961, + "versionNonce": 1032730246, + "isDeleted": false, + "boundElements": [], + "updated": 1763385009911, + "link": null, + "locked": false, + "text": "Project-\nmgmt", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "kmtDycZxwwqCxwxbJ62VN", + "originalText": "Project-mgmt", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "AuV1TlXW4532KFhbJ1qOy", + "type": "rectangle", + "x": 3690.5281219482417, + "y": 364.4958394368491, + "width": 192.00000000000003, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aW", + "roundness": { + "type": 3 + }, + "seed": 2043252162, + "version": 1013, + "versionNonce": 627380186, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "a5DWUJIk5eQplJNbp0otf" + }, + { + "id": "CwM7TPKWAvOReKBmO5JAt", + "type": "arrow" + }, + { + "id": "qSP9tR0BuFoaLIiwdNAHv", + "type": "arrow" + }, + { + "id": "OLypIFGhJuPTv_5fZ1c5H", + "type": "arrow" + }, + { + "id": "-g0IjFN-WFXq9V-ETpJB7", + "type": "arrow" + }, + { + "id": "df09G6vYHr0eiQitHZcBm", + "type": "arrow" + } + ], + "updated": 1763391668632, + "link": null, + "locked": false + }, + { + "id": "a5DWUJIk5eQplJNbp0otf", + "type": "text", + "x": 3720.9001007080074, + "y": 405.9958394368491, + "width": 131.25604248046875, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aX", + "roundness": null, + "seed": 1117160834, + "version": 1015, + "versionNonce": 841018310, + "isDeleted": false, + "boundElements": [], + "updated": 1763385011561, + "link": null, + "locked": false, + "text": "Actions", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "AuV1TlXW4532KFhbJ1qOy", + "originalText": "Actions", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "HGDqZbDbJ49R2jRs9GJIZ", + "type": "rectangle", + "x": 3858.7198537190734, + "y": 570.2124938964841, + "width": 188.66666666666697, + "height": 136.33333333333326, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aY", + "roundness": { + "type": 3 + }, + "seed": 1246374302, + "version": 1143, + "versionNonce": 1582074950, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "PmePFMsiWUJPlO2riNhKV" + }, + { + "id": "OLypIFGhJuPTv_5fZ1c5H", + "type": "arrow" + }, + { + "id": "ITzr29HGvJ1h4aIH-tm4Q", + "type": "arrow" + }, + { + "id": "IuHuUZm7W9LJpRuMzCgjb", + "type": "arrow" + } + ], + "updated": 1763385080458, + "link": null, + "locked": false + }, + { + "id": "PmePFMsiWUJPlO2riNhKV", + "type": "text", + "x": 3893.923166910806, + "y": 615.8791605631508, + "width": 118.26004028320312, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aZ", + "roundness": null, + "seed": 1758414302, + "version": 1151, + "versionNonce": 1992233862, + "isDeleted": false, + "boundElements": [], + "updated": 1763385080458, + "link": null, + "locked": false, + "text": "Runner", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "HGDqZbDbJ49R2jRs9GJIZ", + "originalText": "Runner", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "03jCrwPTuTbzVdpJni9ur", + "type": "rectangle", + "x": 3586.236333211262, + "y": 572.8291727701825, + "width": 192.00000000000003, + "height": 145, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aa", + "roundness": { + "type": 3 + }, + "seed": 586159938, + "version": 1188, + "versionNonce": 1237377286, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "qb0juwUBn201I_3S8RiT4" + }, + { + "id": "qSP9tR0BuFoaLIiwdNAHv", + "type": "arrow" + }, + { + "id": "IuHuUZm7W9LJpRuMzCgjb", + "type": "arrow" + } + ], + "updated": 1763384611677, + "link": null, + "locked": false + }, + { + "id": "qb0juwUBn201I_3S8RiT4", + "type": "text", + "x": 3595.2783101399727, + "y": 577.8291727701825, + "width": 173.91604614257812, + "height": 135, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ab", + "roundness": null, + "seed": 1764744962, + "version": 1211, + "versionNonce": 1112199238, + "isDeleted": false, + "boundElements": [], + "updated": 1763384611677, + "link": null, + "locked": false, + "text": "Runner-\nOrchestra\ntion", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "03jCrwPTuTbzVdpJni9ur", + "originalText": "Runner-Orchestration", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "35YnFI-q2BjED7vgPVNiH", + "type": "arrow", + "x": 3626.4145149400288, + "y": 292.6565181408057, + "width": 28.641286766907342, + "height": 78.36597963704418, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ac", + "roundness": { + "type": 2 + }, + "seed": 1611251358, + "version": 1611, + "versionNonce": 184219738, + "isDeleted": false, + "boundElements": [], + "updated": 1763391152611, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -28.641286766907342, + 78.36597963704418 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "t0TPl7T0HbrKo0OK0MQB4", + "focus": -0.13368249489502643, + "gap": 1.221558390886571 + }, + "endBinding": { + "elementId": "kmtDycZxwwqCxwxbJ62VN", + "focus": 0.14045563524470103, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "CwM7TPKWAvOReKBmO5JAt", + "type": "arrow", + "x": 3681.6553001844177, + "y": 292.55351294668077, + "width": 69.11222120735647, + "height": 71.32418416564747, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ad", + "roundness": { + "type": 2 + }, + "seed": 682017950, + "version": 1588, + "versionNonce": 879680794, + "isDeleted": false, + "boundElements": [], + "updated": 1763391152612, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 69.11222120735647, + 71.32418416564747 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "t0TPl7T0HbrKo0OK0MQB4", + "focus": 0.0800859255357604, + "gap": 1 + }, + "endBinding": { + "elementId": "AuV1TlXW4532KFhbJ1qOy", + "focus": 0.16974068696432618, + "gap": 1.1099916743343101 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "qSP9tR0BuFoaLIiwdNAHv", + "type": "arrow", + "x": 3749.2100601611082, + "y": 495.0046139963675, + "width": 58.5478204371293, + "height": 76.44966472549294, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ae", + "roundness": { + "type": 2 + }, + "seed": 1443786690, + "version": 1543, + "versionNonce": 1693896710, + "isDeleted": false, + "boundElements": [], + "updated": 1763385012011, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -58.5478204371293, + 76.44966472549294 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "AuV1TlXW4532KFhbJ1qOy", + "focus": -0.08956284844114419, + "gap": 4.455062828851851 + }, + "endBinding": { + "elementId": "03jCrwPTuTbzVdpJni9ur", + "focus": -0.31936453669195425, + "gap": 2.270603451832244 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "OLypIFGhJuPTv_5fZ1c5H", + "type": "arrow", + "x": 3846.2590342234744, + "y": 494.05094250390056, + "width": 56.900326618306735, + "height": 75.52753527137321, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "af", + "roundness": { + "type": 2 + }, + "seed": 1271403138, + "version": 1579, + "versionNonce": 1172222662, + "isDeleted": false, + "boundElements": [], + "updated": 1763385080458, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 56.900326618306735, + 75.52753527137321 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "AuV1TlXW4532KFhbJ1qOy", + "focus": -0.0673988430842441, + "gap": 2.776658341000825 + }, + "endBinding": { + "elementId": "HGDqZbDbJ49R2jRs9GJIZ", + "focus": 0.010660183928777166, + "gap": 1.0794208734004087 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "gacAPFdY1RyNH397B5m1U", + "type": "rectangle", + "x": 4323.889862060546, + "y": 160.99173482259135, + "width": 237.00000000000006, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ag", + "roundness": { + "type": 3 + }, + "seed": 1851075330, + "version": 1039, + "versionNonce": 1577296774, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "6eO7nuzJq274YnpWW-66w" + }, + { + "id": "HvP_lxaks2dOd2SDvhfLI", + "type": "arrow" + }, + { + "id": "VXKR-23IgHtvHvAOfqBJK", + "type": "arrow" + }, + { + "id": "oiu375_RGxk2Fye0pSHWl", + "type": "arrow" + } + ], + "updated": 1763384969462, + "link": null, + "locked": false + }, + { + "id": "6eO7nuzJq274YnpWW-66w", + "type": "text", + "x": 4333.831832885741, + "y": 202.49173482259135, + "width": 217.11605834960938, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ah", + "roundness": null, + "seed": 1983675074, + "version": 1035, + "versionNonce": 1980842694, + "isDeleted": false, + "boundElements": [], + "updated": 1763384969462, + "link": null, + "locked": false, + "text": "Deployments", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gacAPFdY1RyNH397B5m1U", + "originalText": "Deployments", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "HvP_lxaks2dOd2SDvhfLI", + "type": "arrow", + "x": 3674.408467408685, + "y": 27.814129841038977, + "width": 705.4734361804935, + "height": 132.61786743910753, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ai", + "roundness": { + "type": 2 + }, + "seed": 506905730, + "version": 1670, + "versionNonce": 1370028550, + "isDeleted": false, + "boundElements": [], + "updated": 1763384969462, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 417.18112202816474, + 58.310885417750285 + ], + [ + 705.4734361804935, + 132.61786743910753 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "vkEBND0A690yxuKyCwa5r", + "focus": 0.13842181822847455, + "gap": 2.262001175630303 + }, + "endBinding": { + "elementId": "gacAPFdY1RyNH397B5m1U", + "focus": 0.5124469690822768, + "gap": 1.170358416083019 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "qNeeLvM5XS8SbneZGVW0q", + "type": "rectangle", + "x": 4397.819864908852, + "y": 375.5458818308476, + "width": 192.00000000000003, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aj", + "roundness": { + "type": 3 + }, + "seed": 57307458, + "version": 1241, + "versionNonce": 1525705370, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "M64AWjiJS8JuMU0z5fLRi" + }, + { + "id": "oiu375_RGxk2Fye0pSHWl", + "type": "arrow" + }, + { + "id": "uLoZmI9exhZHMKYhjSP-i", + "type": "arrow" + } + ], + "updated": 1763385028394, + "link": null, + "locked": false + }, + { + "id": "M64AWjiJS8JuMU0z5fLRi", + "type": "text", + "x": 4453.2658487955705, + "y": 417.0458818308476, + "width": 81.1080322265625, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ak", + "roundness": null, + "seed": 1028585730, + "version": 1238, + "versionNonce": 1098647386, + "isDeleted": false, + "boundElements": [], + "updated": 1763385028394, + "link": null, + "locked": false, + "text": "OTC", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "qNeeLvM5XS8SbneZGVW0q", + "originalText": "OTC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "rl_lEbITjZxZu5tmsHPG-", + "type": "rectangle", + "x": 4655.891967773436, + "y": 382.53346626281404, + "width": 272, + "height": 129.66666666666674, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "al", + "roundness": { + "type": 3 + }, + "seed": 1155100062, + "version": 1306, + "versionNonce": 879891354, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "XKscc6NBAbjTdhnv_vYNs" + }, + { + "id": "VXKR-23IgHtvHvAOfqBJK", + "type": "arrow" + }, + { + "id": "AwhH7M8t1q6KeZgpF4XnY", + "type": "arrow" + }, + { + "id": "ewu_wkEI_N0QlOuQFAwot", + "type": "arrow" + } + ], + "updated": 1763384897115, + "link": null, + "locked": false + }, + { + "id": "XKscc6NBAbjTdhnv_vYNs", + "type": "text", + "x": 4678.869926452635, + "y": 424.8667995961475, + "width": 226.04408264160156, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "am", + "roundness": null, + "seed": 1490422238, + "version": 1316, + "versionNonce": 786468954, + "isDeleted": false, + "boundElements": [], + "updated": 1763384897115, + "link": null, + "locked": false, + "text": "EdgeConnect", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rl_lEbITjZxZu5tmsHPG-", + "originalText": "EdgeConnect", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "fWp85O5NBU84CIOiCRAVO", + "type": "rectangle", + "x": 4558.137908935542, + "y": 789.5836625925663, + "width": 385.3333333333338, + "height": 134.66666666666686, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "an", + "roundness": { + "type": 3 + }, + "seed": 261837890, + "version": 1407, + "versionNonce": 617794566, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "9SgHNFxPpzs6RDS3xTZoQ" + }, + { + "id": "AwhH7M8t1q6KeZgpF4XnY", + "type": "arrow" + }, + { + "id": "FxyBjbU6oLIrTe1vA6Wat", + "type": "arrow" + }, + { + "id": "PsCiD7UuKAUpoL34oJV4C", + "type": "arrow" + } + ], + "updated": 1763391365258, + "link": null, + "locked": false + }, + { + "id": "9SgHNFxPpzs6RDS3xTZoQ", + "type": "text", + "x": 4588.930521647131, + "y": 834.4169959258998, + "width": 323.74810791015625, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ao", + "roundness": null, + "seed": 2003532802, + "version": 1421, + "versionNonce": 1508334406, + "isDeleted": false, + "boundElements": [], + "updated": 1763391365258, + "link": null, + "locked": false, + "text": "EdgeConnectClient", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fWp85O5NBU84CIOiCRAVO", + "originalText": "EdgeConnectClient", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "VXKR-23IgHtvHvAOfqBJK", + "type": "arrow", + "x": 4560.789212327934, + "y": 268.93995006037903, + "width": 152.07787355595428, + "height": 113.16039305428501, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ap", + "roundness": { + "type": 2 + }, + "seed": 2109377474, + "version": 1770, + "versionNonce": 667404614, + "isDeleted": false, + "boundElements": [], + "updated": 1763384969463, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 152.07787355595428, + 113.16039305428501 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "gacAPFdY1RyNH397B5m1U", + "focus": -0.2902863001493682, + "gap": 1.289924287763078 + }, + "endBinding": { + "elementId": "rl_lEbITjZxZu5tmsHPG-", + "focus": 0.04104255304194183, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "AwhH7M8t1q6KeZgpF4XnY", + "type": "arrow", + "x": 4758.229635882192, + "y": 513.3020686103432, + "width": 3.4113431387913806, + "height": 72.34650144375053, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aq", + "roundness": { + "type": 2 + }, + "seed": 279119618, + "version": 2146, + "versionNonce": 1625801178, + "isDeleted": false, + "boundElements": [], + "updated": 1763384897116, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 3.4113431387913806, + 72.34650144375053 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rl_lEbITjZxZu5tmsHPG-", + "focus": 0.26009804332056685, + "gap": 2.519959810605087 + }, + "endBinding": { + "elementId": "uw_e9SDMZg5n02CI_rcGi", + "focus": 0.17524221808273333, + "gap": 3.792578784600437 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "oiu375_RGxk2Fye0pSHWl", + "type": "arrow", + "x": 4458.895332668404, + "y": 290.0585325478296, + "width": 10.771630603813719, + "height": 84.57976492942612, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "ar", + "roundness": { + "type": 2 + }, + "seed": 1602753218, + "version": 1793, + "versionNonce": 905317402, + "isDeleted": false, + "boundElements": [], + "updated": 1763385028394, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 10.771630603813719, + 84.57976492942612 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "gacAPFdY1RyNH397B5m1U", + "focus": -0.07089903848836447, + "gap": 2.2181859611155232 + }, + "endBinding": { + "elementId": "qNeeLvM5XS8SbneZGVW0q", + "focus": -0.14829601841891402, + "gap": 1.626823150743462 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "jhFoxlSdAZtcvOozYLo9m", + "type": "rectangle", + "x": 2336.8356984456364, + "y": 814.9085730743369, + "width": 192.00000000000003, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "as", + "roundness": { + "type": 3 + }, + "seed": 1405762142, + "version": 864, + "versionNonce": 724812442, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "9DUHGNzpdsbkuUUYSdxnB" + }, + { + "id": "W9xzjyUSDx4oatQjQMCTa", + "type": "arrow" + }, + { + "id": "aOkWrFPJPKyv8zz8zr7ZI", + "type": "arrow" + }, + { + "id": "PsCiD7UuKAUpoL34oJV4C", + "type": "arrow" + } + ], + "updated": 1763391365258, + "link": null, + "locked": false + }, + { + "id": "9DUHGNzpdsbkuUUYSdxnB", + "type": "text", + "x": 2360.2416814168278, + "y": 856.4085730743369, + "width": 145.1880340576172, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "at", + "roundness": null, + "seed": 294600350, + "version": 920, + "versionNonce": 1948779142, + "isDeleted": false, + "boundElements": [], + "updated": 1763391365258, + "link": null, + "locked": false, + "text": "Provider", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "jhFoxlSdAZtcvOozYLo9m", + "originalText": "Provider", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "W9xzjyUSDx4oatQjQMCTa", + "type": "arrow", + "x": 2427.219138859704, + "y": 739.1525625804243, + "width": 3.0920624680015862, + "height": 75.19933550158032, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "au", + "roundness": { + "type": 2 + }, + "seed": 571565022, + "version": 1305, + "versionNonce": 1132566790, + "isDeleted": false, + "boundElements": [], + "updated": 1763391365259, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -3.0920624680015862, + 75.19933550158032 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "layt3FacJkYmYXuCA3eqg", + "focus": 0.06491121823017398, + "gap": 1 + }, + "endBinding": { + "elementId": "jhFoxlSdAZtcvOozYLo9m", + "focus": -0.11501899351464845, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "PsCiD7UuKAUpoL34oJV4C", + "type": "arrow", + "x": 2443.1411890515974, + "y": 947.282454654001, + "width": 2118.0065331180745, + "height": 178.43001471405125, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b06", + "roundness": { + "type": 2 + }, + "seed": 940832450, + "version": 4187, + "versionNonce": 1851831686, + "isDeleted": false, + "boundElements": [], + "updated": 1763391629298, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 161.78173371858566, + 132.1758939381216 + ], + [ + 819.8140585168994, + 93.84256060478856 + ], + [ + 1866.8639047118318, + -24.520577218092058 + ], + [ + 2118.0065331180745, + -46.254120775929664 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "jhFoxlSdAZtcvOozYLo9m", + "focus": 0.42093228752165524, + "gap": 4.373881579664044 + }, + "endBinding": { + "elementId": "fWp85O5NBU84CIOiCRAVO", + "focus": -0.32972100940531696, + "gap": 2.2715512431810336 + }, + "startArrowhead": null, + "endArrowhead": null, + "elbowed": false + }, + { + "id": "X317oP4QIdCMkfQF-OHmn", + "type": "rectangle", + "x": 3944.1725565592415, + "y": 155.68767412821109, + "width": 333.66666666666663, + "height": 129.66666666666674, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b07", + "roundness": { + "type": 3 + }, + "seed": 151037762, + "version": 1292, + "versionNonce": 1845214470, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ta5uMdOel67C_lIjXufuD" + }, + { + "id": "DNfr5h1rXvZeS5O5BU772", + "type": "arrow" + }, + { + "id": "BTLJNPaKn9k-WNIbpNd0k", + "type": "arrow" + }, + { + "id": "-g0IjFN-WFXq9V-ETpJB7", + "type": "arrow" + }, + { + "id": "loerItqer0HSwXUpB9cF7", + "type": "arrow" + } + ], + "updated": 1763385152688, + "link": null, + "locked": false + }, + { + "id": "ta5uMdOel67C_lIjXufuD", + "type": "text", + "x": 3963.333847045895, + "y": 198.02100746154446, + "width": 295.3440856933594, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b08", + "roundness": null, + "seed": 1588489986, + "version": 1304, + "versionNonce": 1388981318, + "isDeleted": false, + "boundElements": [], + "updated": 1763385152688, + "link": null, + "locked": false, + "text": "DevEnvironments", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "X317oP4QIdCMkfQF-OHmn", + "originalText": "DevEnvironments", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "DNfr5h1rXvZeS5O5BU772", + "type": "arrow", + "x": 3674.790446993681, + "y": 45.05141050313457, + "width": 305.72013926184763, + "height": 110.15641402800262, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b09", + "roundness": { + "type": 2 + }, + "seed": 121163074, + "version": 1431, + "versionNonce": 1250472838, + "isDeleted": false, + "boundElements": [], + "updated": 1763385152688, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 305.72013926184763, + 110.15641402800262 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "vkEBND0A690yxuKyCwa5r", + "focus": 0.04839371208373105, + "gap": 2.7438709743342224 + }, + "endBinding": { + "elementId": "X317oP4QIdCMkfQF-OHmn", + "focus": 0.14767675739600847, + "gap": 1.310806899352201 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "rRY3HaVMSMHWyZgjxpq2v", + "type": "rectangle", + "x": 3846.291849772133, + "y": 1020.0762962304948, + "width": 272.00000000000006, + "height": 118, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0A", + "roundness": { + "type": 3 + }, + "seed": 2126920926, + "version": 1329, + "versionNonce": 1472945222, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "6gMzVcWbiqyLsPNsRGJhG" + }, + { + "id": "ITzr29HGvJ1h4aIH-tm4Q", + "type": "arrow" + }, + { + "id": "aOkWrFPJPKyv8zz8zr7ZI", + "type": "arrow" + }, + { + "id": "zLoCSwM-U6aaxtdSILFjo", + "type": "arrow" + }, + { + "id": "aWjuRCS_Tywc_R495HtXb", + "type": "arrow" + }, + { + "id": "ra2CnfFkuG-gakqxTeOIy", + "type": "arrow" + }, + { + "id": "uLoZmI9exhZHMKYhjSP-i", + "type": "arrow" + }, + { + "id": "ewu_wkEI_N0QlOuQFAwot", + "type": "arrow" + }, + { + "id": "BTLJNPaKn9k-WNIbpNd0k", + "type": "arrow" + }, + { + "id": "we6HVdaRQ2_30cgo_gGUE", + "type": "arrow" + }, + { + "id": "j5CwusOfOj3sDuV4ryd0L", + "type": "arrow" + } + ], + "updated": 1763385141322, + "link": null, + "locked": false + }, + { + "id": "6gMzVcWbiqyLsPNsRGJhG", + "type": "text", + "x": 3870.907816569008, + "y": 1056.5762962304948, + "width": 222.76806640625, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0B", + "roundness": null, + "seed": 853995806, + "version": 1350, + "versionNonce": 629639066, + "isDeleted": false, + "boundElements": [], + "updated": 1763385159713, + "link": null, + "locked": false, + "text": "PhysicalEnvs", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rRY3HaVMSMHWyZgjxpq2v", + "originalText": "PhysicalEnvs", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ITzr29HGvJ1h4aIH-tm4Q", + "type": "arrow", + "x": 3962.2104578599938, + "y": 707.1798433510277, + "width": 4.277899742854061, + "height": 312.49528332548505, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0C", + "roundness": { + "type": 2 + }, + "seed": 1818419906, + "version": 1519, + "versionNonce": 1776911046, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141322, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -4.277899742854061, + 312.49528332548505 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "HGDqZbDbJ49R2jRs9GJIZ", + "focus": -0.10893108584966793, + "gap": 1.079420873400295 + }, + "endBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": -0.1840076802158442, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "IuHuUZm7W9LJpRuMzCgjb", + "type": "arrow", + "x": 3783.0026230490926, + "y": 629.7180964066447, + "width": 72.34813741045537, + "height": 0.6981674421065236, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0D", + "roundness": { + "type": 2 + }, + "seed": 2086441090, + "version": 1391, + "versionNonce": 385431878, + "isDeleted": false, + "boundElements": [], + "updated": 1763385080458, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 72.34813741045537, + 0.6981674421065236 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "03jCrwPTuTbzVdpJni9ur", + "focus": -0.2158631796542971, + "gap": 6.014496189932288 + }, + "endBinding": { + "elementId": "HGDqZbDbJ49R2jRs9GJIZ", + "focus": 0.0881504966998736, + "gap": 4.180012524406266 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "aOkWrFPJPKyv8zz8zr7ZI", + "type": "arrow", + "x": 2519.278472522735, + "y": 937.3386399061632, + "width": 1321.718322787593, + "height": 145.2287532279828, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0E", + "roundness": { + "type": 2 + }, + "seed": 302844446, + "version": 2229, + "versionNonce": 1275618886, + "isDeleted": false, + "boundElements": [], + "updated": 1763391492584, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 100.64445024744782, + 77.1197086859595 + ], + [ + 797.3111169141148, + 140.45304201929264 + ], + [ + 1321.718322787593, + 145.2287532279828 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "jhFoxlSdAZtcvOozYLo9m", + "focus": -0.05675655732228243, + "gap": 1 + }, + "endBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": -0.07931556413677532, + "gap": 5.295054461805194 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "2R1wTqnj3ubPsQMZU_PxS", + "type": "rectangle", + "x": 3621.3794352213517, + "y": 1210.959576666692, + "width": 192.00000000000003, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0F", + "roundness": { + "type": 3 + }, + "seed": 2116317122, + "version": 1315, + "versionNonce": 219617734, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "b4p6Hvv4dpMpPwT-o3Ou2" + }, + { + "id": "zLoCSwM-U6aaxtdSILFjo", + "type": "arrow" + } + ], + "updated": 1763383971669, + "link": null, + "locked": false + }, + { + "id": "b4p6Hvv4dpMpPwT-o3Ou2", + "type": "text", + "x": 3656.7914148966447, + "y": 1252.459576666692, + "width": 121.17604064941406, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0G", + "roundness": null, + "seed": 2101684098, + "version": 1344, + "versionNonce": 1474031878, + "isDeleted": false, + "boundElements": [], + "updated": 1763383971669, + "link": null, + "locked": false, + "text": "Docker", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "2R1wTqnj3ubPsQMZU_PxS", + "originalText": "Docker", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "KojM_KzLAG1V7jiuobzUd", + "type": "rectangle", + "x": 4130.7793579101535, + "y": 1220.6263247135673, + "width": 228.66666666666694, + "height": 106.33333333333346, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0H", + "roundness": { + "type": 3 + }, + "seed": 1330695326, + "version": 1472, + "versionNonce": 968792154, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "sJpQ0pZRAKSruhAWeXqOH" + }, + { + "id": "aWjuRCS_Tywc_R495HtXb", + "type": "arrow" + }, + { + "id": "ZYIe0A8Pa_WkIT4gVML9E", + "type": "arrow" + } + ], + "updated": 1763384145646, + "link": null, + "locked": false + }, + { + "id": "sJpQ0pZRAKSruhAWeXqOH", + "type": "text", + "x": 4149.1546681721975, + "y": 1251.292991380234, + "width": 191.91604614257812, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0I", + "roundness": null, + "seed": 2064222430, + "version": 1511, + "versionNonce": 155287194, + "isDeleted": false, + "boundElements": [], + "updated": 1763384145646, + "link": null, + "locked": false, + "text": "Kubernetes", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "KojM_KzLAG1V7jiuobzUd", + "originalText": "Kubernetes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "zLoCSwM-U6aaxtdSILFjo", + "type": "arrow", + "x": 3913.697236173266, + "y": 1138.6225671511845, + "width": 105.92635104170358, + "height": 78.89281612144464, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0J", + "roundness": { + "type": 2 + }, + "seed": 1418783902, + "version": 1280, + "versionNonce": 848300358, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141322, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -105.92635104170358, + 78.89281612144464 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": -0.054105302974298795, + "gap": 1.3578892127572153 + }, + "endBinding": { + "elementId": "2R1wTqnj3ubPsQMZU_PxS", + "focus": 0.07707192456052014, + "gap": 2.7629031464324063 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "aWjuRCS_Tywc_R495HtXb", + "type": "arrow", + "x": 4059.5309326323736, + "y": 1138.4774657844766, + "width": 117.3396700731978, + "height": 80.44365540828198, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0K", + "roundness": { + "type": 2 + }, + "seed": 830730910, + "version": 1414, + "versionNonce": 1334505606, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 117.3396700731978, + 80.44365540828198 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": 0.043357881583191, + "gap": 1 + }, + "endBinding": { + "elementId": "KojM_KzLAG1V7jiuobzUd", + "focus": 0.06803604961437397, + "gap": 3.922269337634134 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "upPAv38LJEAZS_l-LkEu-", + "type": "rectangle", + "x": 3890.883728027343, + "y": 1220.7097394271086, + "width": 173.666666666667, + "height": 109.66666666666674, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0L", + "roundness": { + "type": 3 + }, + "seed": 967122882, + "version": 1401, + "versionNonce": 296403226, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "8o7YkUXTFWqjaK6FdUAoD" + }, + { + "id": "ra2CnfFkuG-gakqxTeOIy", + "type": "arrow" + } + ], + "updated": 1763384139196, + "link": null, + "locked": false + }, + { + "id": "8o7YkUXTFWqjaK6FdUAoD", + "type": "text", + "x": 3945.317052205403, + "y": 1253.043072760442, + "width": 64.80001831054688, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0M", + "roundness": null, + "seed": 1697634178, + "version": 1432, + "versionNonce": 195530202, + "isDeleted": false, + "boundElements": [], + "updated": 1763384139196, + "link": null, + "locked": false, + "text": "LXC", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "upPAv38LJEAZS_l-LkEu-", + "originalText": "LXC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ra2CnfFkuG-gakqxTeOIy", + "type": "arrow", + "x": 3971.211301884916, + "y": 1138.4774657844766, + "width": 22.417090493436717, + "height": 77.09341378981071, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0N", + "roundness": { + "type": 2 + }, + "seed": 2034512542, + "version": 1314, + "versionNonce": 858189766, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 22.417090493436717, + 77.09341378981071 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": 0.18603406557969024, + "gap": 1 + }, + "endBinding": { + "elementId": "upPAv38LJEAZS_l-LkEu-", + "focus": 0.331532005664942, + "gap": 9.261062959145589 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "uLoZmI9exhZHMKYhjSP-i", + "type": "arrow", + "x": 4465.685559194899, + "y": 504.7368722186192, + "width": 416.66639859664883, + "height": 513.8492916147236, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0O", + "roundness": { + "type": 2 + }, + "seed": 360002590, + "version": 1472, + "versionNonce": 427886342, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -416.66639859664883, + 513.8492916147236 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "qNeeLvM5XS8SbneZGVW0q", + "focus": -0.16751604248648713, + "gap": 2.131147600886095 + }, + "endBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": 0.09616785773585025, + "gap": 3.640766669647064 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "ewu_wkEI_N0QlOuQFAwot", + "type": "arrow", + "x": 4655.018816874993, + "y": 495.7977198749062, + "width": 553.8776891080634, + "height": 525.1891222998178, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0P", + "roundness": { + "type": 2 + }, + "seed": 2125809374, + "version": 1642, + "versionNonce": 857093702, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -221.76256077147536, + 181.99396205054973 + ], + [ + -553.8776891080634, + 525.1891222998178 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rl_lEbITjZxZu5tmsHPG-", + "focus": 0.3621355014904502, + "gap": 3.260200817805893 + }, + "endBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": 0.3243749380630405, + "gap": 1.126033152432464 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "BTLJNPaKn9k-WNIbpNd0k", + "type": "arrow", + "x": 4040.276578936203, + "y": 477.5521333195176, + "width": 57.974144646894274, + "height": 544.4961278689279, + "angle": 0.0633163393295888, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0Q", + "roundness": { + "type": 2 + }, + "seed": 576394754, + "version": 1653, + "versionNonce": 415464838, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 37.107450986672575, + 240.52126279105897 + ], + [ + -20.8666936602217, + 544.4961278689279 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "nOSvpvwFCOMwGd2-U8NK4", + "focus": -0.22925723808690657, + "gap": 1 + }, + "endBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": 0.030798161473846564, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "BXRXeMn6eO7IJgm7NLwzv", + "type": "text", + "x": 2472.133514404295, + "y": -75.3570686376699, + "width": 504.36016845703125, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0R", + "roundness": null, + "seed": 1231995842, + "version": 316, + "versionNonce": 380936454, + "isDeleted": false, + "boundElements": [], + "updated": 1763383022708, + "link": null, + "locked": false, + "text": "eDF Product Structure Tree", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "eDF Product Structure Tree", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "sTl4MwlP7u0CR0h6eLvJQ", + "type": "rectangle", + "x": 4626.422922770184, + "y": 170.45834859212238, + "width": 311.9999999999998, + "height": 104.66666666666652, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0S", + "roundness": { + "type": 3 + }, + "seed": 1782051974, + "version": 1226, + "versionNonce": 501466438, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-ylDXHMB5GzSZtgYIZozG" + }, + { + "id": "Ed3PIiHWUxcNH9Mh-kOuU", + "type": "arrow" + } + ], + "updated": 1763384736922, + "link": null, + "locked": false + }, + { + "id": "-ylDXHMB5GzSZtgYIZozG", + "type": "text", + "x": 4652.64287821452, + "y": 177.79168192545563, + "width": 259.5600891113281, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0T", + "roundness": null, + "seed": 2039706566, + "version": 1242, + "versionNonce": 285682822, + "isDeleted": false, + "boundElements": [], + "updated": 1763384736922, + "link": null, + "locked": false, + "text": "Documentation\nSystem", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "sTl4MwlP7u0CR0h6eLvJQ", + "originalText": "Documentation\nSystem", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "Ed3PIiHWUxcNH9Mh-kOuU", + "type": "arrow", + "x": 3674.166532263675, + "y": -7.539423043387444, + "width": 1001.9695327207187, + "height": 177.08777153390812, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0U", + "roundness": { + "type": 2 + }, + "seed": 1405220934, + "version": 1822, + "versionNonce": 1908124614, + "isDeleted": false, + "boundElements": [], + "updated": 1763384736922, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 702.4230571731755, + 76.99777163550999 + ], + [ + 1001.9695327207187, + 177.08777153390812 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "vkEBND0A690yxuKyCwa5r", + "focus": -0.18532736315942697, + "gap": 1.9570338578978408 + }, + "endBinding": { + "elementId": "sTl4MwlP7u0CR0h6eLvJQ", + "focus": 0.16972033991295915, + "gap": 2.7752666400353974 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "bakJjzmrp7G7d2sBa5bE1", + "type": "rectangle", + "x": 3116.422922770184, + "y": 349.4583485921225, + "width": 227.00000000000048, + "height": 145.00000000000003, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0V", + "roundness": { + "type": 3 + }, + "seed": 504948806, + "version": 863, + "versionNonce": 1596722566, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "_Pg-V6Tz2Rl3fLlB6nXEi" + }, + { + "id": "rRYwarMxk0bw-nql_bbzS", + "type": "arrow" + }, + { + "id": "f3GA0aaVLJtRbObBOfoLx", + "type": "arrow" + } + ], + "updated": 1763391068631, + "link": null, + "locked": false + }, + { + "id": "_Pg-V6Tz2Rl3fLlB6nXEi", + "type": "text", + "x": 3127.0169016520204, + "y": 376.9583485921225, + "width": 205.81204223632812, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0W", + "roundness": null, + "seed": 882896774, + "version": 927, + "versionNonce": 1251765446, + "isDeleted": false, + "boundElements": [], + "updated": 1763391068631, + "link": null, + "locked": false, + "text": "Application-\nProvisioning", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "bakJjzmrp7G7d2sBa5bE1", + "originalText": "Application-Provisioning", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "rRYwarMxk0bw-nql_bbzS", + "type": "arrow", + "x": 3111.6727479941255, + "y": 276.98888252002644, + "width": 103.18774040469634, + "height": 71.9292657941337, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0X", + "roundness": { + "type": 2 + }, + "seed": 955498202, + "version": 1684, + "versionNonce": 74324614, + "isDeleted": false, + "boundElements": [], + "updated": 1763391068698, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 103.18774040469634, + 71.9292657941337 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "4lTu_DNrwnbxtfzzQ-TrP", + "focus": -0.15928775176009108, + "gap": 1.3116249354053713 + }, + "endBinding": { + "elementId": "bakJjzmrp7G7d2sBa5bE1", + "focus": 0.41080086918406883, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "GQcnY9zMohoK_v73jNmE0", + "type": "rectangle", + "x": 3160.5895894368514, + "y": 581.2916819254557, + "width": 196.99999999999986, + "height": 124.66666666666681, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0Y", + "roundness": { + "type": 3 + }, + "seed": 530011866, + "version": 932, + "versionNonce": 1572672858, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "i41b16DABLTr-sgwa2oJx" + }, + { + "id": "f3GA0aaVLJtRbObBOfoLx", + "type": "arrow" + }, + { + "id": "6a4IhhXjxMI4h9w65P5eW", + "type": "arrow" + }, + { + "id": "Few8zOmHv71iXvDfoexhc", + "type": "arrow" + }, + { + "id": "df09G6vYHr0eiQitHZcBm", + "type": "arrow" + } + ], + "updated": 1763391150317, + "link": null, + "locked": false + }, + { + "id": "i41b16DABLTr-sgwa2oJx", + "type": "text", + "x": 3202.497556050621, + "y": 621.1250152587891, + "width": 113.18406677246094, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0Z", + "roundness": null, + "seed": 1660644250, + "version": 998, + "versionNonce": 1689711066, + "isDeleted": false, + "boundElements": [], + "updated": 1763391110163, + "link": null, + "locked": false, + "text": "CI/CD", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "GQcnY9zMohoK_v73jNmE0", + "originalText": "CI/CD", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "1z4ZshL3doX_LVv14PQd5", + "type": "rectangle", + "x": 2913.089589436851, + "y": 807.9583485921227, + "width": 238.66666666666697, + "height": 123.00000000000003, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0a", + "roundness": { + "type": 3 + }, + "seed": 1049767302, + "version": 1113, + "versionNonce": 346918790, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-fj92HOz7DaeDVXUB1ec8" + }, + { + "id": "Eo2LC08bZTyqHZ_pAvf1c", + "type": "arrow" + } + ], + "updated": 1763390993635, + "link": null, + "locked": false + }, + { + "id": "-fj92HOz7DaeDVXUB1ec8", + "type": "text", + "x": 2919.544886271161, + "y": 846.9583485921227, + "width": 225.75607299804688, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0b", + "roundness": null, + "seed": 406752454, + "version": 1200, + "versionNonce": 412987078, + "isDeleted": false, + "boundElements": [], + "updated": 1763390993635, + "link": null, + "locked": false, + "text": "Component 2", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "1z4ZshL3doX_LVv14PQd5", + "originalText": "Component 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "Eo2LC08bZTyqHZ_pAvf1c", + "type": "arrow", + "x": 3014.9546496983894, + "y": 719.5858048088286, + "width": 10.084360685561023, + "height": 86.78634400800888, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0c", + "roundness": { + "type": 2 + }, + "seed": 1405611994, + "version": 1768, + "versionNonce": 2059986010, + "isDeleted": false, + "boundElements": [], + "updated": 1763391118113, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 10.084360685561023, + 86.78634400800888 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "_SA6WTuXA_hi0TaT8Y2cb", + "focus": 0.016951854546525768, + "gap": 4.119957231626131 + }, + "endBinding": { + "elementId": "1z4ZshL3doX_LVv14PQd5", + "focus": -0.00007194541412355224, + "gap": 3.3933770804029564 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "f3GA0aaVLJtRbObBOfoLx", + "type": "arrow", + "x": 3240.366734040912, + "y": 496.4976753137354, + "width": 11.95393262985317, + "height": 82.10073781213828, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0d", + "roundness": { + "type": 2 + }, + "seed": 2111838554, + "version": 1745, + "versionNonce": 930064026, + "isDeleted": false, + "boundElements": [], + "updated": 1763391110163, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 11.95393262985317, + 82.10073781213828 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "bakJjzmrp7G7d2sBa5bE1", + "focus": 0.012131730411546674, + "gap": 3.740781409685951 + }, + "endBinding": { + "elementId": "GQcnY9zMohoK_v73jNmE0", + "focus": 0.020775065079411466, + "gap": 4.939956252930415 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "6a4IhhXjxMI4h9w65P5eW", + "type": "arrow", + "x": 3330.7592086354553, + "y": 580.8584663690883, + "width": 167.3425940593247, + "height": 313.72241070957364, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0e", + "roundness": { + "type": 2 + }, + "seed": 1751843014, + "version": 2045, + "versionNonce": 2005412314, + "isDeleted": false, + "boundElements": [], + "updated": 1763391152612, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 64.1637141347278, + -209.73345111029903 + ], + [ + 167.3425940593247, + -313.72241070957364 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "GQcnY9zMohoK_v73jNmE0", + "focus": 0.4462706193445063, + "gap": 1 + }, + "endBinding": { + "elementId": "t0TPl7T0HbrKo0OK0MQB4", + "focus": 0.44942698855441565, + "gap": 1.1905686018336108 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "Few8zOmHv71iXvDfoexhc", + "type": "arrow", + "x": 3279.0249240152916, + "y": 707.7974287724307, + "width": 31.146088471095027, + "height": 99.14455253000006, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0f", + "roundness": { + "type": 2 + }, + "seed": 506957338, + "version": 2010, + "versionNonce": 819349530, + "isDeleted": false, + "boundElements": [], + "updated": 1763391110164, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 31.146088471095027, + 99.14455253000006 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "GQcnY9zMohoK_v73jNmE0", + "focus": 0.004268442309165779, + "gap": 3.3927500565346236 + }, + "endBinding": { + "elementId": "OpdnLYI8J5szelucqIce1", + "focus": 0.1555692552487658, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "iyrKGKzHkFAHUCEepXNCP", + "type": "rectangle", + "x": 4154.7562561035165, + "y": 1400.958348592122, + "width": 188.66666666666703, + "height": 83.33333333333326, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0g", + "roundness": { + "type": 3 + }, + "seed": 1043629594, + "version": 1525, + "versionNonce": 1733889734, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "0VtVc_LsUgaakcwYELAIv" + }, + { + "id": "ZYIe0A8Pa_WkIT4gVML9E", + "type": "arrow" + } + ], + "updated": 1763384122279, + "link": null, + "locked": false + }, + { + "id": "0VtVc_LsUgaakcwYELAIv", + "type": "text", + "x": 4171.077573140463, + "y": 1420.1250152587886, + "width": 156.02403259277344, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0h", + "roundness": null, + "seed": 1823519450, + "version": 1567, + "versionNonce": 1612137990, + "isDeleted": false, + "boundElements": [], + "updated": 1763384122279, + "link": null, + "locked": false, + "text": "Operator", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "iyrKGKzHkFAHUCEepXNCP", + "originalText": "Operator", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ZYIe0A8Pa_WkIT4gVML9E", + "type": "arrow", + "x": 4251.370249081578, + "y": 1327.3847620453423, + "width": 1.8102403392640554, + "height": 72.2936218846628, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0i", + "roundness": { + "type": 2 + }, + "seed": 1331934342, + "version": 1479, + "versionNonce": 1105447386, + "isDeleted": false, + "boundElements": [], + "updated": 1763384145646, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 1.8102403392640554, + 72.2936218846628 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "KojM_KzLAG1V7jiuobzUd", + "focus": -0.042434316865628915, + "gap": 1 + }, + "endBinding": { + "elementId": "iyrKGKzHkFAHUCEepXNCP", + "focus": 0.05407803750606913, + "gap": 3.066797992077454 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "GE2ntK1-Y0o1hS7Vo9-zm", + "type": "rectangle", + "x": 3388.9229227701835, + "y": 1210.458348592123, + "width": 192.00000000000003, + "height": 128, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0j", + "roundness": { + "type": 3 + }, + "seed": 188493978, + "version": 1357, + "versionNonce": 1640059738, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-X_vMrljPS5ULaklilxhx" + }, + { + "id": "we6HVdaRQ2_30cgo_gGUE", + "type": "arrow" + } + ], + "updated": 1763384929590, + "link": null, + "locked": false + }, + { + "id": "-X_vMrljPS5ULaklilxhx", + "type": "text", + "x": 3460.4789148966483, + "y": 1251.958348592123, + "width": 48.88801574707031, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0k", + "roundness": null, + "seed": 1079971162, + "version": 1387, + "versionNonce": 861747930, + "isDeleted": false, + "boundElements": [], + "updated": 1763383979514, + "link": null, + "locked": false, + "text": "VM", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "GE2ntK1-Y0o1hS7Vo9-zm", + "originalText": "VM", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "uw_e9SDMZg5n02CI_rcGi", + "type": "rectangle", + "x": 4585.5895894368505, + "y": 587.1250152587893, + "width": 305.3333333333338, + "height": 124.66666666666686, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0l", + "roundness": { + "type": 3 + }, + "seed": 602888282, + "version": 1506, + "versionNonce": 996004742, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "2znQQlyW0T8QSBRjognw4" + }, + { + "id": "AwhH7M8t1q6KeZgpF4XnY", + "type": "arrow" + }, + { + "id": "FxyBjbU6oLIrTe1vA6Wat", + "type": "arrow" + } + ], + "updated": 1763384560453, + "link": null, + "locked": false + }, + { + "id": "2znQQlyW0T8QSBRjognw4", + "type": "text", + "x": 4618.03421020508, + "y": 604.4583485921227, + "width": 240.444091796875, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0m", + "roundness": null, + "seed": 1876376858, + "version": 1523, + "versionNonce": 1933076486, + "isDeleted": false, + "boundElements": [], + "updated": 1763384545979, + "link": null, + "locked": false, + "text": "EdgeConnect \nSDK", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "uw_e9SDMZg5n02CI_rcGi", + "originalText": "EdgeConnect \nSDK", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "FxyBjbU6oLIrTe1vA6Wat", + "type": "arrow", + "x": 4742.051466806003, + "y": 713.4471437591372, + "width": 5.8909444903556505, + "height": 75.80378361758562, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0n", + "roundness": { + "type": 2 + }, + "seed": 2009573594, + "version": 2150, + "versionNonce": 1144246490, + "isDeleted": false, + "boundElements": [], + "updated": 1763391365259, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 5.8909444903556505, + 75.80378361758562 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "uw_e9SDMZg5n02CI_rcGi", + "focus": 0.007476026682284668, + "gap": 4.238474561391172 + }, + "endBinding": { + "elementId": "fWp85O5NBU84CIOiCRAVO", + "focus": 0.012109051562514402, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "nOSvpvwFCOMwGd2-U8NK4", + "type": "rectangle", + "x": 3933.922922770184, + "y": 377.1250152587893, + "width": 192.00000000000003, + "height": 100, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0o", + "roundness": { + "type": 3 + }, + "seed": 626832582, + "version": 1088, + "versionNonce": 1823240666, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ZPMRObXGtXaQKfmBJJ-KQ" + }, + { + "id": "BTLJNPaKn9k-WNIbpNd0k", + "type": "arrow" + }, + { + "id": "-g0IjFN-WFXq9V-ETpJB7", + "type": "arrow" + } + ], + "updated": 1763385040095, + "link": null, + "locked": false + }, + { + "id": "ZPMRObXGtXaQKfmBJJ-KQ", + "type": "text", + "x": 3985.8589045206722, + "y": 404.6250152587893, + "width": 88.12803649902344, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0p", + "roundness": null, + "seed": 716581894, + "version": 1136, + "versionNonce": 1860531270, + "isDeleted": false, + "boundElements": [], + "updated": 1763385014061, + "link": null, + "locked": false, + "text": "Local", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "nOSvpvwFCOMwGd2-U8NK4", + "originalText": "Local", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "Q4aPE3RbERqqTQCSpoSFt", + "type": "rectangle", + "x": 4160.58958943685, + "y": 364.45834859212255, + "width": 213.66666666666706, + "height": 145, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0q", + "roundness": { + "type": 3 + }, + "seed": 109548870, + "version": 1201, + "versionNonce": 1322127642, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "iQ_kNDvjt10ji9Rskw65i" + }, + { + "id": "loerItqer0HSwXUpB9cF7", + "type": "arrow" + }, + { + "id": "j5CwusOfOj3sDuV4ryd0L", + "type": "arrow" + } + ], + "updated": 1763385064503, + "link": null, + "locked": false + }, + { + "id": "iQ_kNDvjt10ji9Rskw65i", + "type": "text", + "x": 4170.510889689129, + "y": 391.95834859212255, + "width": 193.82406616210938, + "height": 90, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0r", + "roundness": null, + "seed": 1420885126, + "version": 1201, + "versionNonce": 207114266, + "isDeleted": false, + "boundElements": [], + "updated": 1763385026627, + "link": null, + "locked": false, + "text": "Docker\nRemoteEnv", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Q4aPE3RbERqqTQCSpoSFt", + "originalText": "Docker\nRemoteEnv", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "we6HVdaRQ2_30cgo_gGUE", + "type": "arrow", + "x": 3852.174174884919, + "y": 1130.5023219437203, + "width": 289.33518309975443, + "height": 81.10957567525247, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0s", + "roundness": { + "type": 2 + }, + "seed": 1751588122, + "version": 1363, + "versionNonce": 1069931718, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -289.33518309975443, + 81.10957567525247 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": -0.1539472108942291, + "gap": 1 + }, + "endBinding": { + "elementId": "GE2ntK1-Y0o1hS7Vo9-zm", + "focus": -0.4546954019374654, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "-g0IjFN-WFXq9V-ETpJB7", + "type": "arrow", + "x": 4101.64589585709, + "y": 286.89444145496736, + "width": 49.65898007325768, + "height": 89.29117630522018, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0t", + "roundness": { + "type": 2 + }, + "seed": 579481370, + "version": 1636, + "versionNonce": 796152518, + "isDeleted": false, + "boundElements": [], + "updated": 1763385152689, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -49.65898007325768, + 89.29117630522018 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "X317oP4QIdCMkfQF-OHmn", + "focus": -0.13514163598325443, + "gap": 4.117292779330398 + }, + "endBinding": { + "elementId": "nOSvpvwFCOMwGd2-U8NK4", + "focus": -0.05543597463883624, + "gap": 2.0041358143996035 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "loerItqer0HSwXUpB9cF7", + "type": "arrow", + "x": 4192.801280649863, + "y": 289.5785332244855, + "width": 68.75839879773957, + "height": 74.31659743616035, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0u", + "roundness": { + "type": 2 + }, + "seed": 1171775110, + "version": 1647, + "versionNonce": 204081670, + "isDeleted": false, + "boundElements": [], + "updated": 1763385152689, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 68.75839879773957, + 74.31659743616035 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "X317oP4QIdCMkfQF-OHmn", + "focus": -0.08031868402593013, + "gap": 10.783959445996913 + }, + "endBinding": { + "elementId": "Q4aPE3RbERqqTQCSpoSFt", + "focus": 0.3526253866400684, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "j5CwusOfOj3sDuV4ryd0L", + "type": "arrow", + "x": 4266.321864921288, + "y": 511.89374589955844, + "width": 235.22137323132665, + "height": 504.2931782805525, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0v", + "roundness": { + "type": 2 + }, + "seed": 1801718682, + "version": 1598, + "versionNonce": 1840927750, + "isDeleted": false, + "boundElements": [], + "updated": 1763385141323, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -235.22137323132665, + 504.2931782805525 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "Q4aPE3RbERqqTQCSpoSFt", + "focus": -0.24131022543848235, + "gap": 4.283960062282063 + }, + "endBinding": { + "elementId": "rRY3HaVMSMHWyZgjxpq2v", + "focus": 0.11909908658082793, + "gap": 9.151362628033098 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "Z6xCNDUhdW5ZX0Y2ECV9n", + "type": "rectangle", + "x": 2613.9229227701835, + "y": 574.6250152587894, + "width": 238.66666666666683, + "height": 149.66666666666677, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0w", + "roundness": { + "type": 3 + }, + "seed": 775996294, + "version": 995, + "versionNonce": 587875334, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "VnDwUbLeVmXrmKoXyW4jE" + }, + { + "id": "b58DD6x3YdYB3N2noILhL", + "type": "arrow" + }, + { + "id": "KWgEAQqxr3S9KhRWsmBV2", + "type": "arrow" + }, + { + "id": "df09G6vYHr0eiQitHZcBm", + "type": "arrow" + } + ], + "updated": 1763391161789, + "link": null, + "locked": false + }, + { + "id": "VnDwUbLeVmXrmKoXyW4jE", + "type": "text", + "x": 2659.618247985841, + "y": 626.9583485921228, + "width": 147.27601623535156, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0wV", + "roundness": null, + "seed": 1052760026, + "version": 15, + "versionNonce": 1375590170, + "isDeleted": false, + "boundElements": null, + "updated": 1763390965217, + "link": null, + "locked": false, + "text": "Pipelines", + "fontSize": 36, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Z6xCNDUhdW5ZX0Y2ECV9n", + "originalText": "Pipelines", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "b58DD6x3YdYB3N2noILhL", + "type": "arrow", + "x": 2859.046465894031, + "y": 491.9302417078348, + "width": 119.31538317259992, + "height": 81.60007621041206, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0y", + "roundness": { + "type": 2 + }, + "seed": 800611098, + "version": 1672, + "versionNonce": 619907290, + "isDeleted": false, + "boundElements": [], + "updated": 1763391064732, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -119.31538317259992, + 81.60007621041206 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "F_81STR9IKF2KqlGNdupb", + "focus": -0.3213784454702341, + "gap": 1 + }, + "endBinding": { + "elementId": "Z6xCNDUhdW5ZX0Y2ECV9n", + "focus": -0.4576682084095265, + "gap": 2.0458557674033955 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "KWgEAQqxr3S9KhRWsmBV2", + "type": "arrow", + "x": 2570.760109010224, + "y": 489.4221224367187, + "width": 88.84700729503857, + "height": 83.61734694484142, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0z", + "roundness": { + "type": 2 + }, + "seed": 331115738, + "version": 1635, + "versionNonce": 378421702, + "isDeleted": false, + "boundElements": [], + "updated": 1763391073115, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 88.84700729503857, + 83.61734694484142 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "NKe13dkM6xQgKluQErmaO", + "focus": 0.006894475977603966, + "gap": 1 + }, + "endBinding": { + "elementId": "Z6xCNDUhdW5ZX0Y2ECV9n", + "focus": 0.03900456492483074, + "gap": 2.954144232596036 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "df09G6vYHr0eiQitHZcBm", + "type": "arrow", + "x": 2848.6028438322037, + "y": 576.019857228893, + "width": 850.3448277694256, + "height": 257.70910885318995, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b11", + "roundness": { + "type": 2 + }, + "seed": 1611589466, + "version": 2783, + "versionNonce": 1458828506, + "isDeleted": false, + "boundElements": [], + "updated": 1763391694545, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 36.320078937979815, + -34.8948419701037 + ], + [ + 204.65341227131285, + -56.56150863677044 + ], + [ + 224.65341227131285, + -233.22817530343718 + ], + [ + 396.8247546258358, + -257.70910885318995 + ], + [ + 772.9867456046463, + -251.56150863677044 + ], + [ + 850.3448277694256, + -208.71149598545628 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "Z6xCNDUhdW5ZX0Y2ECV9n", + "focus": 0.19728207817783538, + "gap": 7.564016222660115 + }, + "endBinding": { + "elementId": "AuV1TlXW4532KFhbJ1qOy", + "focus": 0.10817150001893147, + "gap": 3.6705406157783296 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/scripts/generate-build-info.sh b/scripts/generate-build-info.sh new file mode 100755 index 0000000..a10e2c2 --- /dev/null +++ b/scripts/generate-build-info.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Generate build information for Hugo +# This script collects git information and build metadata + +set -euo pipefail + +# Create data directory if it doesn't exist +mkdir -p data + +# Get git information +GIT_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "unknown") +GIT_COMMIT_SHORT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown") +GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown") +GIT_TAG=$(git describe --tags --exact-match 2>/dev/null || echo "") +GIT_DIRTY="" + +# Check if working directory is dirty +if git diff-index --quiet HEAD -- 2>/dev/null; then + GIT_DIRTY="false" +else + GIT_DIRTY="true" +fi + +# Get build information +BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ") +BUILD_TIME_HUMAN=$(date -u +"%Y-%m-%d %H:%M UTC") +BUILD_USER=$(whoami 2>/dev/null || echo "unknown") +BUILD_HOST=$(hostname 2>/dev/null || echo "unknown") + +# Create JSON file for Hugo +cat > data/build_info.json << EOF +{ + "git_commit": "${GIT_COMMIT}", + "git_commit_short": "${GIT_COMMIT_SHORT}", + "git_branch": "${GIT_BRANCH}", + "git_tag": "${GIT_TAG}", + "git_dirty": ${GIT_DIRTY}, + "build_time": "${BUILD_TIME}", + "build_time_human": "${BUILD_TIME_HUMAN}", + "build_user": "${BUILD_USER}", + "build_host": "${BUILD_HOST}" +} +EOF + +echo "✓ Build info generated: data/build_info.json" +echo " Git: ${GIT_BRANCH}@${GIT_COMMIT_SHORT}${GIT_TAG:+ (${GIT_TAG})}" +echo " Built: ${BUILD_TIME_HUMAN} by ${BUILD_USER}" \ No newline at end of file diff --git a/scripts/get-versions.sh b/scripts/get-versions.sh new file mode 100755 index 0000000..cc90f56 --- /dev/null +++ b/scripts/get-versions.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Load versions from .env.versions for Docker build +# Usage: source scripts/get-versions.sh + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +VERSIONS_FILE="${SCRIPT_DIR}/../.env.versions" + +if [ ! -f "$VERSIONS_FILE" ]; then + echo "Error: .env.versions not found at $VERSIONS_FILE" + exit 1 +fi + +# Load versions +set -a +source "$VERSIONS_FILE" +set +a + +echo "Loaded versions from .env.versions:" +echo " NODE_VERSION=${NODE_VERSION}" +echo " GO_VERSION=${GO_VERSION}" +echo " HUGO_VERSION=${HUGO_VERSION}" +echo "" +echo "Build Docker image with:" +echo " docker build --network=host \\" +echo " --build-arg NODE_VERSION=${NODE_VERSION} \\" +echo " --build-arg GO_VERSION=${GO_VERSION} \\" +echo " --build-arg HUGO_VERSION=${HUGO_VERSION} \\" +echo " -t ipceicis-developerframework:latest ." diff --git a/static/TeleNeoOffice-Bold.a7bb592b.ttf b/static/TeleNeoOffice-Bold.a7bb592b.ttf new file mode 120000 index 0000000..2099746 --- /dev/null +++ b/static/TeleNeoOffice-Bold.a7bb592b.ttf @@ -0,0 +1 @@ +fonts/TeleNeoOffice-Bold.a7bb592b.ttf \ No newline at end of file diff --git a/static/TeleNeoOffice-ExtraBold.fbe9fe42.ttf b/static/TeleNeoOffice-ExtraBold.fbe9fe42.ttf new file mode 120000 index 0000000..95eb627 --- /dev/null +++ b/static/TeleNeoOffice-ExtraBold.fbe9fe42.ttf @@ -0,0 +1 @@ +fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf \ No newline at end of file diff --git a/static/TeleNeoOffice-Medium.79fb426d.ttf b/static/TeleNeoOffice-Medium.79fb426d.ttf new file mode 120000 index 0000000..5531d58 --- /dev/null +++ b/static/TeleNeoOffice-Medium.79fb426d.ttf @@ -0,0 +1 @@ +fonts/TeleNeoOffice-Medium.79fb426d.ttf \ No newline at end of file diff --git a/static/TeleNeoOffice-Regular.b0a2cff1.ttf b/static/TeleNeoOffice-Regular.b0a2cff1.ttf new file mode 120000 index 0000000..dcd4564 --- /dev/null +++ b/static/TeleNeoOffice-Regular.b0a2cff1.ttf @@ -0,0 +1 @@ +fonts/TeleNeoOffice-Regular.b0a2cff1.ttf \ No newline at end of file diff --git a/static/TeleNeoOffice-Thin.53627df9.ttf b/static/TeleNeoOffice-Thin.53627df9.ttf new file mode 120000 index 0000000..717239f --- /dev/null +++ b/static/TeleNeoOffice-Thin.53627df9.ttf @@ -0,0 +1 @@ +fonts/TeleNeoOffice-Thin.53627df9.ttf \ No newline at end of file diff --git a/static/css/likec4-styles.css b/static/css/likec4-styles.css new file mode 100644 index 0000000..0f90974 --- /dev/null +++ b/static/css/likec4-styles.css @@ -0,0 +1,70 @@ +/* LikeC4 Component Styles for Hugo/Docsy */ +likec4-view { + display: block; + width: 100%; + height: 100%; + border: none; +} + +.likec4-container { + width: 100%; + height: 600px; + border: 1px solid #ddd; + border-radius: 4px; + background: #f9f9f9; + position: relative; + overflow: hidden; + margin: 2rem 0; +} + +.likec4-loading { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #666; + font-size: 14px; + font-family: system-ui, sans-serif; +} + +.likec4-loading::after { + content: ''; + display: inline-block; + width: 12px; + height: 12px; + margin-left: 8px; + border: 2px solid #dee2e6; + border-top: 2px solid #007bff; + border-radius: 50%; + animation: likec4-spin 1s linear infinite; +} + +@keyframes likec4-spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.likec4-header { + background: #f8f9fa; + border-bottom: 1px solid #e9ecef; + padding: 8px 16px; + font-size: 12px; + color: #495057; + border-radius: 4px 4px 0 0; +} + +/* Dark mode support for Docsy */ +body[data-dark-mode] .likec4-container { + background: #1e1e1e; + border-color: #444; +} + +body[data-dark-mode] .likec4-header { + background: #2d2d2d; + border-bottom-color: #444; + color: #ccc; +} + +body[data-dark-mode] .likec4-loading { + color: #ccc; +} diff --git a/static/css/version-info.css b/static/css/version-info.css new file mode 100644 index 0000000..89c7631 --- /dev/null +++ b/static/css/version-info.css @@ -0,0 +1,36 @@ +/* Navbar version info styles */ +.navbar-version-info { + flex: 1; + justify-content: center; + font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace; +} + +.navbar-version-info code { + background: rgba(255, 255, 255, 0.1); + padding: 0.1rem 0.3rem; + border-radius: 0.2rem; + font-size: 0.8rem; +} + +.navbar-version-info .badge { + font-size: 0.6rem; + padding: 0.1rem 0.3rem; +} + +/* Hide on small screens */ +@media (max-width: 767px) { + .navbar-version-info { + display: none !important; + } +} + +/* Additional responsive tweaks */ +@media (min-width: 768px) and (max-width: 991px) { + .navbar-version-info { + flex: 0.5; + } + + .navbar-version-info small { + font-size: 0.75rem; + } +} \ No newline at end of file diff --git a/static/fonts/TeleNeoOffice-Bold.a7bb592b.ttf b/static/fonts/TeleNeoOffice-Bold.a7bb592b.ttf new file mode 100644 index 0000000..88d13e1 Binary files /dev/null and b/static/fonts/TeleNeoOffice-Bold.a7bb592b.ttf differ diff --git a/static/fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf b/static/fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf new file mode 100644 index 0000000..158ffc8 Binary files /dev/null and b/static/fonts/TeleNeoOffice-ExtraBold.fbe9fe42.ttf differ diff --git a/static/fonts/TeleNeoOffice-Medium.79fb426d.ttf b/static/fonts/TeleNeoOffice-Medium.79fb426d.ttf new file mode 100644 index 0000000..6ceef93 Binary files /dev/null and b/static/fonts/TeleNeoOffice-Medium.79fb426d.ttf differ diff --git a/static/fonts/TeleNeoOffice-Regular.b0a2cff1.ttf b/static/fonts/TeleNeoOffice-Regular.b0a2cff1.ttf new file mode 100644 index 0000000..672a9b8 Binary files /dev/null and b/static/fonts/TeleNeoOffice-Regular.b0a2cff1.ttf differ diff --git a/static/fonts/TeleNeoOffice-Thin.53627df9.ttf b/static/fonts/TeleNeoOffice-Thin.53627df9.ttf new file mode 100644 index 0000000..edeb0d9 Binary files /dev/null and b/static/fonts/TeleNeoOffice-Thin.53627df9.ttf differ diff --git a/static/js/likec4-loader.js b/static/js/likec4-loader.js new file mode 100644 index 0000000..f165e99 --- /dev/null +++ b/static/js/likec4-loader.js @@ -0,0 +1,86 @@ +/* LikeC4 Webcomponent Loader for Hugo/Docsy */ +(function() { + 'use strict'; + + // Check if the component is already loaded + if (customElements.get('likec4-view')) { + console.log('LikeC4 component already loaded'); + return; + } + + // Function to dynamically import the ES6 module + function loadLikeC4Module() { + // Try different possible paths for the webcomponent + const possiblePaths = [ + // Absolute Hugo paths (most likely to work) + '/js/likec4-webcomponent.js', + // Relative paths from current page + '../js/likec4-webcomponent.js', + '../../js/likec4-webcomponent.js', + '../../../js/likec4-webcomponent.js', + // Fallback paths + './js/likec4-webcomponent.js', + 'js/likec4-webcomponent.js' + ]; + + let pathIndex = 0; + + function tryNextPath() { + if (pathIndex >= possiblePaths.length) { + console.error('All module paths failed'); + showErrorMessage('Failed to load interactive diagram module'); + return; + } + + const modulePath = possiblePaths[pathIndex]; + console.log(`Trying to load LikeC4 module from: ${modulePath}`); + + // Dynamic import with error handling + try { + const importFunction = new Function('specifier', 'return import(specifier)'); + importFunction(modulePath) + .then(function(module) { + console.log('LikeC4 webcomponent loaded successfully'); + // Hide any loading indicators + hideLoadingIndicators(); + }) + .catch(function(error) { + console.warn(`Failed to load from ${modulePath}:`, error.message); + pathIndex++; + tryNextPath(); + }); + } catch (error) { + console.warn(`Dynamic import failed for ${modulePath}:`, error.message); + pathIndex++; + tryNextPath(); + } + } + + tryNextPath(); + } + + function hideLoadingIndicators() { + const loadingElements = document.querySelectorAll('.likec4-loading, #likec4-loading'); + loadingElements.forEach(function(el) { + el.style.display = 'none'; + }); + } + + function showErrorMessage(message) { + const containers = document.querySelectorAll('.likec4-container'); + containers.forEach(function(container) { + const errorDiv = document.createElement('div'); + errorDiv.style.cssText = 'position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: #dc3545; text-align: center; font-size: 14px; max-width: 300px;'; + errorDiv.textContent = message; + container.appendChild(errorDiv); + }); + hideLoadingIndicators(); + } + + // Check if DOM is ready + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', loadLikeC4Module); + } else { + loadLikeC4Module(); + } +})(); diff --git a/static/js/likec4-webcomponent.js b/static/js/likec4-webcomponent.js new file mode 100644 index 0000000..b8c7e39 --- /dev/null +++ b/static/js/likec4-webcomponent.js @@ -0,0 +1,392 @@ +var LikeC4Views=(function(u6){"use strict";/* prettier-ignore-start */ +/* eslint-disable */ + +/****************************************************************************** + * This file was generated + * DO NOT EDIT MANUALLY! + ******************************************************************************/ + + +function S1e(e,r){for(var n=0;no[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function Vz(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var d6={exports:{}},p1={};var qz;function C1e(){if(qz)return p1;qz=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function n(o,a,i){var s=null;if(i!==void 0&&(s=""+i),a.key!==void 0&&(s=""+a.key),"key"in a){i={};for(var l in a)l!=="key"&&(i[l]=a[l])}else i=a;return a=i.ref,{$$typeof:e,type:o,key:s,ref:a!==void 0?a:null,props:i}}return p1.Fragment=r,p1.jsx=n,p1.jsxs=n,p1}var Uz;function T1e(){return Uz||(Uz=1,d6.exports=C1e()),d6.exports}var y=T1e(),p6={exports:{}},Ot={};var Wz;function A1e(){if(Wz)return Ot;Wz=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),s=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),f=Symbol.iterator;function g(G){return G===null||typeof G!="object"?null:(G=f&&G[f]||G["@@iterator"],typeof G=="function"?G:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,w={};function k(G,K,j){this.props=G,this.context=K,this.refs=w,this.updater=j||b}k.prototype.isReactComponent={},k.prototype.setState=function(G,K){if(typeof G!="object"&&typeof G!="function"&&G!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,G,K,"setState")},k.prototype.forceUpdate=function(G){this.updater.enqueueForceUpdate(this,G,"forceUpdate")};function C(){}C.prototype=k.prototype;function _(G,K,j){this.props=G,this.context=K,this.refs=w,this.updater=j||b}var T=_.prototype=new C;T.constructor=_,x(T,k.prototype),T.isPureReactComponent=!0;var A=Array.isArray;function R(){}var D={H:null,A:null,T:null,S:null},N=Object.prototype.hasOwnProperty;function M(G,K,j){var Y=j.ref;return{$$typeof:e,type:G,key:K,ref:Y!==void 0?Y:null,props:j}}function O(G,K){return M(G.type,K,G.props)}function F(G){return typeof G=="object"&&G!==null&&G.$$typeof===e}function L(G){var K={"=":"=0",":":"=2"};return"$"+G.replace(/[=:]/g,function(j){return K[j]})}var U=/\/+/g;function P(G,K){return typeof G=="object"&&G!==null&&G.key!=null?L(""+G.key):K.toString(36)}function V(G){switch(G.status){case"fulfilled":return G.value;case"rejected":throw G.reason;default:switch(typeof G.status=="string"?G.then(R,R):(G.status="pending",G.then(function(K){G.status==="pending"&&(G.status="fulfilled",G.value=K)},function(K){G.status==="pending"&&(G.status="rejected",G.reason=K)})),G.status){case"fulfilled":return G.value;case"rejected":throw G.reason}}throw G}function I(G,K,j,Y,Q){var J=typeof G;(J==="undefined"||J==="boolean")&&(G=null);var ie=!1;if(G===null)ie=!0;else switch(J){case"bigint":case"string":case"number":ie=!0;break;case"object":switch(G.$$typeof){case e:case r:ie=!0;break;case d:return ie=G._init,I(ie(G._payload),K,j,Y,Q)}}if(ie)return Q=Q(G),ie=Y===""?"."+P(G,0):Y,A(Q)?(j="",ie!=null&&(j=ie.replace(U,"$&/")+"/"),I(Q,K,j,"",function(ge){return ge})):Q!=null&&(F(Q)&&(Q=O(Q,j+(Q.key==null||G&&G.key===Q.key?"":(""+Q.key).replace(U,"$&/")+"/")+ie)),K.push(Q)),1;ie=0;var ne=Y===""?".":Y+":";if(A(G))for(var re=0;re"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(r){console.error(r)}}return e(),f6.exports=R1e(),f6.exports}var Ki=Kz();const Zz=Vz(Ki);function N1e(e,r,n){let o=a=>e(a,...r);return n===void 0?o:Object.assign(o,{lazy:n,lazyArgs:r})}function Do(e,r,n){let o=e.length-r.length;if(o===0)return e(...r);if(o===1)return N1e(e,r,n);throw Error("Wrong number of arguments")}function Kl(...e){return Do(D1e,e)}const D1e=(e,r)=>e.length>=r;function bt(e,r){if(typeof e>"u"||e==null){const n=typeof r=="function"?r():r;throw new Error(n??`Expected defined value, but received ${e}`)}return e}function at(e,r){if(!e)throw new Error(r??"Invariant failed")}function Zi(e){throw new Error(`NonExhaustive value: ${e}`)}function yr(e,r,n){const o=typeof r=="symbol"?r:Symbol.for(r);return e.hasOwnProperty(o)||Object.defineProperty(e,o,{enumerable:!1,writable:!1,value:n()}),e[o]}function $1e(...e){return Do(M1e,e)}function M1e(e,r){let n={};for(let[o,a]of e.entries())n[a]=r(a,o,e);return n}function Vv(...e){return Do(h1,e)}function h1(e,r){if(e===r||Object.is(e,r))return!0;if(typeof e!="object"||typeof r!="object"||e===null||r===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(r))return!1;if(Array.isArray(e))return P1e(e,r);if(e instanceof Map)return z1e(e,r);if(e instanceof Set)return I1e(e,r);if(e instanceof Date)return e.getTime()===r.getTime();if(e instanceof RegExp)return e.toString()===r.toString();if(Object.keys(e).length!==Object.keys(r).length)return!1;for(let[n,o]of Object.entries(e))if(!(n in r)||!h1(o,r[n]))return!1;return!0}function P1e(e,r){if(e.length!==r.length)return!1;for(let[n,o]of e.entries())if(!h1(o,r[n]))return!1;return!0}function z1e(e,r){if(e.size!==r.size)return!1;for(let[n,o]of e.entries())if(!r.has(n)||!h1(o,r.get(n)))return!1;return!0}function I1e(e,r){if(e.size!==r.size)return!1;let n=[...r];for(let o of e){let a=!1;for(let[i,s]of n.entries())if(h1(o,s)){a=!0,n.splice(i,1);break}if(!a)return!1}return!0}const{min:O1e,max:j1e}=Math,Od=(e,r=0,n=1)=>O1e(j1e(r,e),n),m6=e=>{e._clipped=!1,e._unclipped=e.slice(0);for(let r=0;r<=3;r++)r<3?((e[r]<0||e[r]>255)&&(e._clipped=!0),e[r]=Od(e[r],0,255)):r===3&&(e[r]=Od(e[r],0,1));return e},Qz={};for(let e of["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"])Qz[`[object ${e}]`]=e.toLowerCase();function Xt(e){return Qz[Object.prototype.toString.call(e)]||"object"}const Ft=(e,r=null)=>e.length>=3?Array.prototype.slice.call(e):Xt(e[0])=="object"&&r?r.split("").filter(n=>e[0][n]!==void 0).map(n=>e[0][n]):e[0].slice(0),Kh=e=>{if(e.length<2)return null;const r=e.length-1;return Xt(e[r])=="string"?e[r].toLowerCase():null},{PI:qv,min:Jz,max:eI}=Math,si=e=>Math.round(e*100)/100,g6=e=>Math.round(e*100)/100,Zl=qv*2,y6=qv/3,L1e=qv/180,B1e=180/qv;function tI(e){return[...e.slice(0,3).reverse(),...e.slice(3)]}const jt={format:{},autodetect:[]};let Ve=class{constructor(...r){const n=this;if(Xt(r[0])==="object"&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];let o=Kh(r),a=!1;if(!o){a=!0,jt.sorted||(jt.autodetect=jt.autodetect.sort((i,s)=>s.p-i.p),jt.sorted=!0);for(let i of jt.autodetect)if(o=i.test(...r),o)break}if(jt.format[o]){const i=jt.format[o].apply(null,a?r:r.slice(0,-1));n._rgb=m6(i)}else throw new Error("unknown format: "+r);n._rgb.length===3&&n._rgb.push(1)}toString(){return Xt(this.hex)=="function"?this.hex():`[${this._rgb.join(",")}]`}};const F1e="3.1.2",Lt=(...e)=>new Ve(...e);Lt.version=F1e;const Zh={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",cyan:"#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",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",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",maroon2:"#7f0000",maroon3:"#b03060",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",purple2:"#7f007f",purple3:"#a020f0",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",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},H1e=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,V1e=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,rI=e=>{if(e.match(H1e)){(e.length===4||e.length===7)&&(e=e.substr(1)),e.length===3&&(e=e.split(""),e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]);const r=parseInt(e,16),n=r>>16,o=r>>8&255,a=r&255;return[n,o,a,1]}if(e.match(V1e)){(e.length===5||e.length===9)&&(e=e.substr(1)),e.length===4&&(e=e.split(""),e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);const r=parseInt(e,16),n=r>>24&255,o=r>>16&255,a=r>>8&255,i=Math.round((r&255)/255*100)/100;return[n,o,a,i]}throw new Error(`unknown hex color: ${e}`)},{round:Uv}=Math,nI=(...e)=>{let[r,n,o,a]=Ft(e,"rgba"),i=Kh(e)||"auto";a===void 0&&(a=1),i==="auto"&&(i=a<1?"rgba":"rgb"),r=Uv(r),n=Uv(n),o=Uv(o);let l="000000"+(r<<16|n<<8|o).toString(16);l=l.substr(l.length-6);let c="0"+Uv(a*255).toString(16);switch(c=c.substr(c.length-2),i.toLowerCase()){case"rgba":return`#${l}${c}`;case"argb":return`#${c}${l}`;default:return`#${l}`}};Ve.prototype.name=function(){const e=nI(this._rgb,"rgb");for(let r of Object.keys(Zh))if(Zh[r]===e)return r.toLowerCase();return e},jt.format.named=e=>{if(e=e.toLowerCase(),Zh[e])return rI(Zh[e]);throw new Error("unknown color name: "+e)},jt.autodetect.push({p:5,test:(e,...r)=>{if(!r.length&&Xt(e)==="string"&&Zh[e.toLowerCase()])return"named"}}),Ve.prototype.alpha=function(e,r=!1){return e!==void 0&&Xt(e)==="number"?r?(this._rgb[3]=e,this):new Ve([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},Ve.prototype.clipped=function(){return this._rgb._clipped||!1};const rl={Kn:18,labWhitePoint:"d65",Xn:.95047,Yn:1,Zn:1.08883,kE:216/24389,kKE:8,kK:24389/27,RefWhiteRGB:{X:.95047,Y:1,Z:1.08883},MtxRGB2XYZ:{m00:.4124564390896922,m01:.21267285140562253,m02:.0193338955823293,m10:.357576077643909,m11:.715152155287818,m12:.11919202588130297,m20:.18043748326639894,m21:.07217499330655958,m22:.9503040785363679},MtxXYZ2RGB:{m00:3.2404541621141045,m01:-.9692660305051868,m02:.055643430959114726,m10:-1.5371385127977166,m11:1.8760108454466942,m12:-.2040259135167538,m20:-.498531409556016,m21:.041556017530349834,m22:1.0572251882231791},As:.9414285350000001,Bs:1.040417467,Cs:1.089532651,MtxAdaptMa:{m00:.8951,m01:-.7502,m02:.0389,m10:.2664,m11:1.7135,m12:-.0685,m20:-.1614,m21:.0367,m22:1.0296},MtxAdaptMaI:{m00:.9869929054667123,m01:.43230526972339456,m02:-.008528664575177328,m10:-.14705425642099013,m11:.5183602715367776,m12:.04004282165408487,m20:.15996265166373125,m21:.0492912282128556,m22:.9684866957875502}},q1e=new Map([["a",[1.0985,.35585]],["b",[1.0985,.35585]],["c",[.98074,1.18232]],["d50",[.96422,.82521]],["d55",[.95682,.92149]],["d65",[.95047,1.08883]],["e",[1,1,1]],["f2",[.99186,.67393]],["f7",[.95041,1.08747]],["f11",[1.00962,.6435]],["icc",[.96422,.82521]]]);function Ql(e){const r=q1e.get(String(e).toLowerCase());if(!r)throw new Error("unknown Lab illuminant "+e);rl.labWhitePoint=e,rl.Xn=r[0],rl.Zn=r[1]}function f1(){return rl.labWhitePoint}const b6=(...e)=>{e=Ft(e,"lab");const[r,n,o]=e,[a,i,s]=U1e(r,n,o),[l,c,u]=oI(a,i,s);return[l,c,u,e.length>3?e[3]:1]},U1e=(e,r,n)=>{const{kE:o,kK:a,kKE:i,Xn:s,Yn:l,Zn:c}=rl,u=(e+16)/116,d=.002*r+u,h=u-.005*n,f=d*d*d,g=h*h*h,b=f>o?f:(116*d-16)/a,x=e>i?Math.pow((e+16)/116,3):e/a,w=g>o?g:(116*h-16)/a,k=b*s,C=x*l,_=w*c;return[k,C,_]},v6=e=>{const r=Math.sign(e);return e=Math.abs(e),(e<=.0031308?e*12.92:1.055*Math.pow(e,1/2.4)-.055)*r},oI=(e,r,n)=>{const{MtxAdaptMa:o,MtxAdaptMaI:a,MtxXYZ2RGB:i,RefWhiteRGB:s,Xn:l,Yn:c,Zn:u}=rl,d=l*o.m00+c*o.m10+u*o.m20,h=l*o.m01+c*o.m11+u*o.m21,f=l*o.m02+c*o.m12+u*o.m22,g=s.X*o.m00+s.Y*o.m10+s.Z*o.m20,b=s.X*o.m01+s.Y*o.m11+s.Z*o.m21,x=s.X*o.m02+s.Y*o.m12+s.Z*o.m22,w=(e*o.m00+r*o.m10+n*o.m20)*(g/d),k=(e*o.m01+r*o.m11+n*o.m21)*(b/h),C=(e*o.m02+r*o.m12+n*o.m22)*(x/f),_=w*a.m00+k*a.m10+C*a.m20,T=w*a.m01+k*a.m11+C*a.m21,A=w*a.m02+k*a.m12+C*a.m22,R=v6(_*i.m00+T*i.m10+A*i.m20),D=v6(_*i.m01+T*i.m11+A*i.m21),N=v6(_*i.m02+T*i.m12+A*i.m22);return[R*255,D*255,N*255]},x6=(...e)=>{const[r,n,o,...a]=Ft(e,"rgb"),[i,s,l]=aI(r,n,o),[c,u,d]=W1e(i,s,l);return[c,u,d,...a.length>0&&a[0]<1?[a[0]]:[]]};function W1e(e,r,n){const{Xn:o,Yn:a,Zn:i,kE:s,kK:l}=rl,c=e/o,u=r/a,d=n/i,h=c>s?Math.pow(c,1/3):(l*c+16)/116,f=u>s?Math.pow(u,1/3):(l*u+16)/116,g=d>s?Math.pow(d,1/3):(l*d+16)/116;return[116*f-16,500*(h-f),200*(f-g)]}function w6(e){const r=Math.sign(e);return e=Math.abs(e),(e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4))*r}const aI=(e,r,n)=>{e=w6(e/255),r=w6(r/255),n=w6(n/255);const{MtxRGB2XYZ:o,MtxAdaptMa:a,MtxAdaptMaI:i,Xn:s,Yn:l,Zn:c,As:u,Bs:d,Cs:h}=rl;let f=e*o.m00+r*o.m10+n*o.m20,g=e*o.m01+r*o.m11+n*o.m21,b=e*o.m02+r*o.m12+n*o.m22;const x=s*a.m00+l*a.m10+c*a.m20,w=s*a.m01+l*a.m11+c*a.m21,k=s*a.m02+l*a.m12+c*a.m22;let C=f*a.m00+g*a.m10+b*a.m20,_=f*a.m01+g*a.m11+b*a.m21,T=f*a.m02+g*a.m12+b*a.m22;return C*=x/u,_*=w/d,T*=k/h,f=C*i.m00+_*i.m10+T*i.m20,g=C*i.m01+_*i.m11+T*i.m21,b=C*i.m02+_*i.m12+T*i.m22,[f,g,b]};Ve.prototype.lab=function(){return x6(this._rgb)},Object.assign(Lt,{lab:(...e)=>new Ve(...e,"lab"),getLabWhitePoint:f1,setLabWhitePoint:Ql}),jt.format.lab=b6,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"lab"),Xt(e)==="array"&&e.length===3)return"lab"}}),Ve.prototype.darken=function(e=1){const r=this,n=r.lab();return n[0]-=rl.Kn*e,new Ve(n,"lab").alpha(r.alpha(),!0)},Ve.prototype.brighten=function(e=1){return this.darken(-e)},Ve.prototype.darker=Ve.prototype.darken,Ve.prototype.brighter=Ve.prototype.brighten,Ve.prototype.get=function(e){const[r,n]=e.split("."),o=this[r]();if(n){const a=r.indexOf(n)-(r.substr(0,2)==="ok"?2:0);if(a>-1)return o[a];throw new Error(`unknown channel ${n} in mode ${r}`)}else return o};const{pow:Y1e}=Math,G1e=1e-7,X1e=20;Ve.prototype.luminance=function(e,r="rgb"){if(e!==void 0&&Xt(e)==="number"){if(e===0)return new Ve([0,0,0,this._rgb[3]],"rgb");if(e===1)return new Ve([255,255,255,this._rgb[3]],"rgb");let n=this.luminance(),o=X1e;const a=(s,l)=>{const c=s.interpolate(l,.5,r),u=c.luminance();return Math.abs(e-u)e?a(s,c):a(c,l)},i=(n>e?a(new Ve([0,0,0]),this):a(this,new Ve([255,255,255]))).rgb();return new Ve([...i,this._rgb[3]])}return K1e(...this._rgb.slice(0,3))};const K1e=(e,r,n)=>(e=k6(e),r=k6(r),n=k6(n),.2126*e+.7152*r+.0722*n),k6=e=>(e/=255,e<=.03928?e/12.92:Y1e((e+.055)/1.055,2.4)),$o={},Qh=(e,r,n=.5,...o)=>{let a=o[0]||"lrgb";if(!$o[a]&&!o.length&&(a=Object.keys($o)[0]),!$o[a])throw new Error(`interpolation mode ${a} is not defined`);return Xt(e)!=="object"&&(e=new Ve(e)),Xt(r)!=="object"&&(r=new Ve(r)),$o[a](e,r,n).alpha(e.alpha()+n*(r.alpha()-e.alpha()))};Ve.prototype.mix=Ve.prototype.interpolate=function(e,r=.5,...n){return Qh(this,e,r,...n)},Ve.prototype.premultiply=function(e=!1){const r=this._rgb,n=r[3];return e?(this._rgb=[r[0]*n,r[1]*n,r[2]*n,n],this):new Ve([r[0]*n,r[1]*n,r[2]*n,n],"rgb")};const{sin:Z1e,cos:Q1e}=Math,iI=(...e)=>{let[r,n,o]=Ft(e,"lch");return isNaN(o)&&(o=0),o=o*L1e,[r,Q1e(o)*n,Z1e(o)*n]},_6=(...e)=>{e=Ft(e,"lch");const[r,n,o]=e,[a,i,s]=iI(r,n,o),[l,c,u]=b6(a,i,s);return[l,c,u,e.length>3?e[3]:1]},J1e=(...e)=>{const r=tI(Ft(e,"hcl"));return _6(...r)},{sqrt:e0e,atan2:t0e,round:r0e}=Math,sI=(...e)=>{const[r,n,o]=Ft(e,"lab"),a=e0e(n*n+o*o);let i=(t0e(o,n)*B1e+360)%360;return r0e(a*1e4)===0&&(i=Number.NaN),[r,a,i]},E6=(...e)=>{const[r,n,o,...a]=Ft(e,"rgb"),[i,s,l]=x6(r,n,o),[c,u,d]=sI(i,s,l);return[c,u,d,...a.length>0&&a[0]<1?[a[0]]:[]]};Ve.prototype.lch=function(){return E6(this._rgb)},Ve.prototype.hcl=function(){return tI(E6(this._rgb))},Object.assign(Lt,{lch:(...e)=>new Ve(...e,"lch"),hcl:(...e)=>new Ve(...e,"hcl")}),jt.format.lch=_6,jt.format.hcl=J1e,["lch","hcl"].forEach(e=>jt.autodetect.push({p:2,test:(...r)=>{if(r=Ft(r,e),Xt(r)==="array"&&r.length===3)return e}})),Ve.prototype.saturate=function(e=1){const r=this,n=r.lch();return n[1]+=rl.Kn*e,n[1]<0&&(n[1]=0),new Ve(n,"lch").alpha(r.alpha(),!0)},Ve.prototype.desaturate=function(e=1){return this.saturate(-e)},Ve.prototype.set=function(e,r,n=!1){const[o,a]=e.split("."),i=this[o]();if(a){const s=o.indexOf(a)-(o.substr(0,2)==="ok"?2:0);if(s>-1){if(Xt(r)=="string")switch(r.charAt(0)){case"+":i[s]+=+r;break;case"-":i[s]+=+r;break;case"*":i[s]*=+r.substr(1);break;case"/":i[s]/=+r.substr(1);break;default:i[s]=+r}else if(Xt(r)==="number")i[s]=r;else throw new Error("unsupported value for Color.set");const l=new Ve(i,o);return n?(this._rgb=l._rgb,this):l}throw new Error(`unknown channel ${a} in mode ${o}`)}else return i},Ve.prototype.tint=function(e=.5,...r){return Qh(this,"white",e,...r)},Ve.prototype.shade=function(e=.5,...r){return Qh(this,"black",e,...r)};const n0e=(e,r,n)=>{const o=e._rgb,a=r._rgb;return new Ve(o[0]+n*(a[0]-o[0]),o[1]+n*(a[1]-o[1]),o[2]+n*(a[2]-o[2]),"rgb")};$o.rgb=n0e;const{sqrt:S6,pow:Jh}=Math,o0e=(e,r,n)=>{const[o,a,i]=e._rgb,[s,l,c]=r._rgb;return new Ve(S6(Jh(o,2)*(1-n)+Jh(s,2)*n),S6(Jh(a,2)*(1-n)+Jh(l,2)*n),S6(Jh(i,2)*(1-n)+Jh(c,2)*n),"rgb")};$o.lrgb=o0e;const a0e=(e,r,n)=>{const o=e.lab(),a=r.lab();return new Ve(o[0]+n*(a[0]-o[0]),o[1]+n*(a[1]-o[1]),o[2]+n*(a[2]-o[2]),"lab")};$o.lab=a0e;const ef=(e,r,n,o)=>{let a,i;o==="hsl"?(a=e.hsl(),i=r.hsl()):o==="hsv"?(a=e.hsv(),i=r.hsv()):o==="hcg"?(a=e.hcg(),i=r.hcg()):o==="hsi"?(a=e.hsi(),i=r.hsi()):o==="lch"||o==="hcl"?(o="hcl",a=e.hcl(),i=r.hcl()):o==="oklch"&&(a=e.oklch().reverse(),i=r.oklch().reverse());let s,l,c,u,d,h;(o.substr(0,1)==="h"||o==="oklch")&&([s,c,d]=a,[l,u,h]=i);let f,g,b,x;return!isNaN(s)&&!isNaN(l)?(l>s&&l-s>180?x=l-(s+360):l180?x=l+360-s:x=l-s,g=s+n*x):isNaN(s)?isNaN(l)?g=Number.NaN:(g=l,(d==1||d==0)&&o!="hsv"&&(f=u)):(g=s,(h==1||h==0)&&o!="hsv"&&(f=c)),f===void 0&&(f=c+n*(u-c)),b=d+n*(h-d),o==="oklch"?new Ve([b,f,g],o):new Ve([g,f,b],o)},lI=(e,r,n)=>ef(e,r,n,"lch");$o.lch=lI,$o.hcl=lI;const i0e=e=>{if(Xt(e)=="number"&&e>=0&&e<=16777215){const r=e>>16,n=e>>8&255,o=e&255;return[r,n,o,1]}throw new Error("unknown num color: "+e)},s0e=(...e)=>{const[r,n,o]=Ft(e,"rgb");return(r<<16)+(n<<8)+o};Ve.prototype.num=function(){return s0e(this._rgb)},Object.assign(Lt,{num:(...e)=>new Ve(...e,"num")}),jt.format.num=i0e,jt.autodetect.push({p:5,test:(...e)=>{if(e.length===1&&Xt(e[0])==="number"&&e[0]>=0&&e[0]<=16777215)return"num"}});const l0e=(e,r,n)=>{const o=e.num(),a=r.num();return new Ve(o+n*(a-o),"num")};$o.num=l0e;const{floor:c0e}=Math,u0e=(...e)=>{e=Ft(e,"hcg");let[r,n,o]=e,a,i,s;o=o*255;const l=n*255;if(n===0)a=i=s=o;else{r===360&&(r=0),r>360&&(r-=360),r<0&&(r+=360),r/=60;const c=c0e(r),u=r-c,d=o*(1-n),h=d+l*(1-u),f=d+l*u,g=d+l;switch(c){case 0:[a,i,s]=[g,f,d];break;case 1:[a,i,s]=[h,g,d];break;case 2:[a,i,s]=[d,g,f];break;case 3:[a,i,s]=[d,h,g];break;case 4:[a,i,s]=[f,d,g];break;case 5:[a,i,s]=[g,d,h];break}}return[a,i,s,e.length>3?e[3]:1]},d0e=(...e)=>{const[r,n,o]=Ft(e,"rgb"),a=Jz(r,n,o),i=eI(r,n,o),s=i-a,l=s*100/255,c=a/(255-s)*100;let u;return s===0?u=Number.NaN:(r===i&&(u=(n-o)/s),n===i&&(u=2+(o-r)/s),o===i&&(u=4+(r-n)/s),u*=60,u<0&&(u+=360)),[u,l,c]};Ve.prototype.hcg=function(){return d0e(this._rgb)};const p0e=(...e)=>new Ve(...e,"hcg");Lt.hcg=p0e,jt.format.hcg=u0e,jt.autodetect.push({p:1,test:(...e)=>{if(e=Ft(e,"hcg"),Xt(e)==="array"&&e.length===3)return"hcg"}});const h0e=(e,r,n)=>ef(e,r,n,"hcg");$o.hcg=h0e;const{cos:tf}=Math,f0e=(...e)=>{e=Ft(e,"hsi");let[r,n,o]=e,a,i,s;return isNaN(r)&&(r=0),isNaN(n)&&(n=0),r>360&&(r-=360),r<0&&(r+=360),r/=360,r<1/3?(s=(1-n)/3,a=(1+n*tf(Zl*r)/tf(y6-Zl*r))/3,i=1-(s+a)):r<2/3?(r-=1/3,a=(1-n)/3,i=(1+n*tf(Zl*r)/tf(y6-Zl*r))/3,s=1-(a+i)):(r-=2/3,i=(1-n)/3,s=(1+n*tf(Zl*r)/tf(y6-Zl*r))/3,a=1-(i+s)),a=Od(o*a*3),i=Od(o*i*3),s=Od(o*s*3),[a*255,i*255,s*255,e.length>3?e[3]:1]},{min:m0e,sqrt:g0e,acos:y0e}=Math,b0e=(...e)=>{let[r,n,o]=Ft(e,"rgb");r/=255,n/=255,o/=255;let a;const i=m0e(r,n,o),s=(r+n+o)/3,l=s>0?1-i/s:0;return l===0?a=NaN:(a=(r-n+(r-o))/2,a/=g0e((r-n)*(r-n)+(r-o)*(n-o)),a=y0e(a),o>n&&(a=Zl-a),a/=Zl),[a*360,l,s]};Ve.prototype.hsi=function(){return b0e(this._rgb)};const v0e=(...e)=>new Ve(...e,"hsi");Lt.hsi=v0e,jt.format.hsi=f0e,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"hsi"),Xt(e)==="array"&&e.length===3)return"hsi"}});const x0e=(e,r,n)=>ef(e,r,n,"hsi");$o.hsi=x0e;const C6=(...e)=>{e=Ft(e,"hsl");const[r,n,o]=e;let a,i,s;if(n===0)a=i=s=o*255;else{const l=[0,0,0],c=[0,0,0],u=o<.5?o*(1+n):o+n-o*n,d=2*o-u,h=r/360;l[0]=h+1/3,l[1]=h,l[2]=h-1/3;for(let f=0;f<3;f++)l[f]<0&&(l[f]+=1),l[f]>1&&(l[f]-=1),6*l[f]<1?c[f]=d+(u-d)*6*l[f]:2*l[f]<1?c[f]=u:3*l[f]<2?c[f]=d+(u-d)*(2/3-l[f])*6:c[f]=d;[a,i,s]=[c[0]*255,c[1]*255,c[2]*255]}return e.length>3?[a,i,s,e[3]]:[a,i,s,1]},cI=(...e)=>{e=Ft(e,"rgba");let[r,n,o]=e;r/=255,n/=255,o/=255;const a=Jz(r,n,o),i=eI(r,n,o),s=(i+a)/2;let l,c;return i===a?(l=0,c=Number.NaN):l=s<.5?(i-a)/(i+a):(i-a)/(2-i-a),r==i?c=(n-o)/(i-a):n==i?c=2+(o-r)/(i-a):o==i&&(c=4+(r-n)/(i-a)),c*=60,c<0&&(c+=360),e.length>3&&e[3]!==void 0?[c,l,s,e[3]]:[c,l,s]};Ve.prototype.hsl=function(){return cI(this._rgb)};const w0e=(...e)=>new Ve(...e,"hsl");Lt.hsl=w0e,jt.format.hsl=C6,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"hsl"),Xt(e)==="array"&&e.length===3)return"hsl"}});const k0e=(e,r,n)=>ef(e,r,n,"hsl");$o.hsl=k0e;const{floor:_0e}=Math,E0e=(...e)=>{e=Ft(e,"hsv");let[r,n,o]=e,a,i,s;if(o*=255,n===0)a=i=s=o;else{r===360&&(r=0),r>360&&(r-=360),r<0&&(r+=360),r/=60;const l=_0e(r),c=r-l,u=o*(1-n),d=o*(1-n*c),h=o*(1-n*(1-c));switch(l){case 0:[a,i,s]=[o,h,u];break;case 1:[a,i,s]=[d,o,u];break;case 2:[a,i,s]=[u,o,h];break;case 3:[a,i,s]=[u,d,o];break;case 4:[a,i,s]=[h,u,o];break;case 5:[a,i,s]=[o,u,d];break}}return[a,i,s,e.length>3?e[3]:1]},{min:S0e,max:C0e}=Math,T0e=(...e)=>{e=Ft(e,"rgb");let[r,n,o]=e;const a=S0e(r,n,o),i=C0e(r,n,o),s=i-a;let l,c,u;return u=i/255,i===0?(l=Number.NaN,c=0):(c=s/i,r===i&&(l=(n-o)/s),n===i&&(l=2+(o-r)/s),o===i&&(l=4+(r-n)/s),l*=60,l<0&&(l+=360)),[l,c,u]};Ve.prototype.hsv=function(){return T0e(this._rgb)};const A0e=(...e)=>new Ve(...e,"hsv");Lt.hsv=A0e,jt.format.hsv=E0e,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"hsv"),Xt(e)==="array"&&e.length===3)return"hsv"}});const R0e=(e,r,n)=>ef(e,r,n,"hsv");$o.hsv=R0e;function Wv(e,r){let n=e.length;Array.isArray(e[0])||(e=[e]),Array.isArray(r[0])||(r=r.map(s=>[s]));let o=r[0].length,a=r[0].map((s,l)=>r.map(c=>c[l])),i=e.map(s=>a.map(l=>Array.isArray(s)?s.reduce((c,u,d)=>c+u*(l[d]||0),0):l.reduce((c,u)=>c+u*s,0)));return n===1&&(i=i[0]),o===1?i.map(s=>s[0]):i}const T6=(...e)=>{e=Ft(e,"lab");const[r,n,o,...a]=e,[i,s,l]=N0e([r,n,o]),[c,u,d]=oI(i,s,l);return[c,u,d,...a.length>0&&a[0]<1?[a[0]]:[]]};function N0e(e){var r=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],n=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],o=Wv(n,e);return Wv(r,o.map(a=>a**3))}const A6=(...e)=>{const[r,n,o,...a]=Ft(e,"rgb"),i=aI(r,n,o);return[...D0e(i),...a.length>0&&a[0]<1?[a[0]]:[]]};function D0e(e){const r=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],n=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],o=Wv(r,e);return Wv(n,o.map(a=>Math.cbrt(a)))}Ve.prototype.oklab=function(){return A6(this._rgb)},Object.assign(Lt,{oklab:(...e)=>new Ve(...e,"oklab")}),jt.format.oklab=T6,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"oklab"),Xt(e)==="array"&&e.length===3)return"oklab"}});const $0e=(e,r,n)=>{const o=e.oklab(),a=r.oklab();return new Ve(o[0]+n*(a[0]-o[0]),o[1]+n*(a[1]-o[1]),o[2]+n*(a[2]-o[2]),"oklab")};$o.oklab=$0e;const M0e=(e,r,n)=>ef(e,r,n,"oklch");$o.oklch=M0e;const{pow:R6,sqrt:N6,PI:D6,cos:uI,sin:dI,atan2:P0e}=Math,z0e=(e,r="lrgb",n=null)=>{const o=e.length;n||(n=Array.from(new Array(o)).map(()=>1));const a=o/n.reduce(function(h,f){return h+f});if(n.forEach((h,f)=>{n[f]*=a}),e=e.map(h=>new Ve(h)),r==="lrgb")return I0e(e,n);const i=e.shift(),s=i.get(r),l=[];let c=0,u=0;for(let h=0;h{const g=h.get(r);d+=h.alpha()*n[f+1];for(let b=0;b=360;)f-=360;s[h]=f}else s[h]=s[h]/l[h];return d/=o,new Ve(s,r).alpha(d>.99999?1:d,!0)},I0e=(e,r)=>{const n=e.length,o=[0,0,0,0];for(let a=0;a.9999999&&(o[3]=1),new Ve(m6(o))},{pow:O0e}=Math;function Yv(e){let r="rgb",n=Lt("#ccc"),o=0,a=[0,1],i=[],s=[0,0],l=!1,c=[],u=!1,d=0,h=1,f=!1,g={},b=!0,x=1;const w=function(D){if(D=D||["#fff","#000"],D&&Xt(D)==="string"&&Lt.brewer&&Lt.brewer[D.toLowerCase()]&&(D=Lt.brewer[D.toLowerCase()]),Xt(D)==="array"){D.length===1&&(D=[D[0],D[0]]),D=D.slice(0);for(let N=0;N=l[M];)M++;return M-1}return 0};let C=D=>D,_=D=>D;const T=function(D,N){let M,O;if(N==null&&(N=!1),isNaN(D)||D===null)return n;N?O=D:l&&l.length>2?O=k(D)/(l.length-2):h!==d?O=(D-d)/(h-d):O=1,O=_(O),N||(O=C(O)),x!==1&&(O=O0e(O,x)),O=s[0]+O*(1-s[0]-s[1]),O=Od(O,0,1);const F=Math.floor(O*1e4);if(b&&g[F])M=g[F];else{if(Xt(c)==="array")for(let L=0;L=U&&L===i.length-1){M=c[L];break}if(O>U&&Og={};w(e);const R=function(D){const N=Lt(T(D));return u&&N[u]?N[u]():N};return R.classes=function(D){if(D!=null){if(Xt(D)==="array")l=D,a=[D[0],D[D.length-1]];else{const N=Lt.analyze(a);D===0?l=[N.min,N.max]:l=Lt.limits(N,"e",D)}return R}return l},R.domain=function(D){if(!arguments.length)return a;d=D[0],h=D[D.length-1],i=[];const N=c.length;if(D.length===N&&d!==h)for(let M of Array.from(D))i.push((M-d)/(h-d));else{for(let M=0;M2){const M=D.map((F,L)=>L/(D.length-1)),O=D.map(F=>(F-d)/(h-d));O.every((F,L)=>M[L]===F)||(_=F=>{if(F<=0||F>=1)return F;let L=0;for(;F>=O[L+1];)L++;const U=(F-O[L])/(O[L+1]-O[L]);return M[L]+U*(M[L+1]-M[L])})}}return a=[d,h],R},R.mode=function(D){return arguments.length?(r=D,A(),R):r},R.range=function(D,N){return w(D),R},R.out=function(D){return u=D,R},R.spread=function(D){return arguments.length?(o=D,R):o},R.correctLightness=function(D){return D==null&&(D=!0),f=D,A(),f?C=function(N){const M=T(0,!0).lab()[0],O=T(1,!0).lab()[0],F=M>O;let L=T(N,!0).lab()[0];const U=M+(O-M)*N;let P=L-U,V=0,I=1,H=20;for(;Math.abs(P)>.01&&H-- >0;)(function(){return F&&(P*=-1),P<0?(V=N,N+=(I-N)*.5):(I=N,N+=(V-N)*.5),L=T(N,!0).lab()[0],P=L-U})();return N}:C=N=>N,R},R.padding=function(D){return D!=null?(Xt(D)==="number"&&(D=[D,D]),s=D,R):s},R.colors=function(D,N){arguments.length<2&&(N="hex");let M=[];if(arguments.length===0)M=c.slice(0);else if(D===1)M=[R(.5)];else if(D>1){const O=a[0],F=a[1]-O;M=j0e(0,D).map(L=>R(O+L/(D-1)*F))}else{e=[];let O=[];if(l&&l.length>2)for(let F=1,L=l.length,U=1<=L;U?FL;U?F++:F--)O.push((l[F-1]+l[F])*.5);else O=a;M=O.map(F=>R(F))}return Lt[N]&&(M=M.map(O=>O[N]())),M},R.cache=function(D){return D!=null?(b=D,R):b},R.gamma=function(D){return D!=null?(x=D,R):x},R.nodata=function(D){return D!=null?(n=Lt(D),R):n},R}function j0e(e,r,n){let o=[],a=ei;a?s++:s--)o.push(s);return o}const L0e=function(e){let r=[1,1];for(let n=1;nnew Ve(i)),e.length===2)[n,o]=e.map(i=>i.lab()),r=function(i){const s=[0,1,2].map(l=>n[l]+i*(o[l]-n[l]));return new Ve(s,"lab")};else if(e.length===3)[n,o,a]=e.map(i=>i.lab()),r=function(i){const s=[0,1,2].map(l=>(1-i)*(1-i)*n[l]+2*(1-i)*i*o[l]+i*i*a[l]);return new Ve(s,"lab")};else if(e.length===4){let i;[n,o,a,i]=e.map(s=>s.lab()),r=function(s){const l=[0,1,2].map(c=>(1-s)*(1-s)*(1-s)*n[c]+3*(1-s)*(1-s)*s*o[c]+3*(1-s)*s*s*a[c]+s*s*s*i[c]);return new Ve(l,"lab")}}else if(e.length>=5){let i,s,l;i=e.map(c=>c.lab()),l=e.length-1,s=L0e(l),r=function(c){const u=1-c,d=[0,1,2].map(h=>i.reduce((f,g,b)=>f+s[b]*u**(l-b)*c**b*g[h],0));return new Ve(d,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return r},F0e=e=>{const r=B0e(e);return r.scale=()=>Yv(r),r},{round:pI}=Math;Ve.prototype.rgb=function(e=!0){return e===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(pI)},Ve.prototype.rgba=function(e=!0){return this._rgb.slice(0,4).map((r,n)=>n<3?e===!1?r:pI(r):r)},Object.assign(Lt,{rgb:(...e)=>new Ve(...e,"rgb")}),jt.format.rgb=(...e)=>{const r=Ft(e,"rgba");return r[3]===void 0&&(r[3]=1),r},jt.autodetect.push({p:3,test:(...e)=>{if(e=Ft(e,"rgba"),Xt(e)==="array"&&(e.length===3||e.length===4&&Xt(e[3])=="number"&&e[3]>=0&&e[3]<=1))return"rgb"}});const Qi=(e,r,n)=>{if(!Qi[n])throw new Error("unknown blend mode "+n);return Qi[n](e,r)},su=e=>(r,n)=>{const o=Lt(n).rgb(),a=Lt(r).rgb();return Lt.rgb(e(o,a))},lu=e=>(r,n)=>{const o=[];return o[0]=e(r[0],n[0]),o[1]=e(r[1],n[1]),o[2]=e(r[2],n[2]),o},H0e=e=>e,V0e=(e,r)=>e*r/255,q0e=(e,r)=>e>r?r:e,U0e=(e,r)=>e>r?e:r,W0e=(e,r)=>255*(1-(1-e/255)*(1-r/255)),Y0e=(e,r)=>r<128?2*e*r/255:255*(1-2*(1-e/255)*(1-r/255)),G0e=(e,r)=>255*(1-(1-r/255)/(e/255)),X0e=(e,r)=>e===255?255:(e=255*(r/255)/(1-e/255),e>255?255:e);Qi.normal=su(lu(H0e)),Qi.multiply=su(lu(V0e)),Qi.screen=su(lu(W0e)),Qi.overlay=su(lu(Y0e)),Qi.darken=su(lu(q0e)),Qi.lighten=su(lu(U0e)),Qi.dodge=su(lu(X0e)),Qi.burn=su(lu(G0e));const{pow:K0e,sin:Z0e,cos:Q0e}=Math;function J0e(e=300,r=-1.5,n=1,o=1,a=[0,1]){let i=0,s;Xt(a)==="array"?s=a[1]-a[0]:(s=0,a=[a,a]);const l=function(c){const u=Zl*((e+120)/360+r*c),d=K0e(a[0]+s*c,o),f=(i!==0?n[0]+c*i:n)*d*(1-d)/2,g=Q0e(u),b=Z0e(u),x=d+f*(-.14861*g+1.78277*b),w=d+f*(-.29227*g-.90649*b),k=d+f*(1.97294*g);return Lt(m6([x*255,w*255,k*255,1]))};return l.start=function(c){return c==null?e:(e=c,l)},l.rotations=function(c){return c==null?r:(r=c,l)},l.gamma=function(c){return c==null?o:(o=c,l)},l.hue=function(c){return c==null?n:(n=c,Xt(n)==="array"?(i=n[1]-n[0],i===0&&(n=n[1])):i=0,l)},l.lightness=function(c){return c==null?a:(Xt(c)==="array"?(a=c,s=c[1]-c[0]):(a=[c,c],s=0),l)},l.scale=()=>Lt.scale(l),l.hue(n),l}const eye="0123456789abcdef",{floor:tye,random:rye}=Math,nye=()=>{let e="#";for(let r=0;r<6;r++)e+=eye.charAt(tye(rye()*16));return new Ve(e,"hex")},{log:hI,pow:oye,floor:aye,abs:iye}=Math;function fI(e,r=null){const n={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return Xt(e)==="object"&&(e=Object.values(e)),e.forEach(o=>{r&&Xt(o)==="object"&&(o=o[r]),o!=null&&!isNaN(o)&&(n.values.push(o),n.sum+=o,on.max&&(n.max=o),n.count+=1)}),n.domain=[n.min,n.max],n.limits=(o,a)=>mI(n,o,a),n}function mI(e,r="equal",n=7){Xt(e)=="array"&&(e=fI(e));const{min:o,max:a}=e,i=e.values.sort((l,c)=>l-c);if(n===1)return[o,a];const s=[];if(r.substr(0,1)==="c"&&(s.push(o),s.push(a)),r.substr(0,1)==="e"){s.push(o);for(let l=1;l 0");const l=Math.LOG10E*hI(o),c=Math.LOG10E*hI(a);s.push(o);for(let u=1;u200&&(h=!1)}const b={};for(let w=0;ww-k),s.push(x[0]);for(let w=1;w{e=new Ve(e),r=new Ve(r);const n=e.luminance(),o=r.luminance();return n>o?(n+.05)/(o+.05):(o+.05)/(n+.05)};const gI=.027,lye=5e-4,cye=.1,yI=1.14,Gv=.022,bI=1.414,uye=(e,r)=>{e=new Ve(e),r=new Ve(r),e.alpha()<1&&(e=Qh(r,e,e.alpha(),"rgb"));const n=vI(...e.rgb()),o=vI(...r.rgb()),a=n>=Gv?n:n+Math.pow(Gv-n,bI),i=o>=Gv?o:o+Math.pow(Gv-o,bI),s=Math.pow(i,.56)-Math.pow(a,.57),l=Math.pow(i,.65)-Math.pow(a,.62),c=Math.abs(i-a)0?c-gI:c+gI)*100};function vI(e,r,n){return .2126729*Math.pow(e/255,2.4)+.7151522*Math.pow(r/255,2.4)+.072175*Math.pow(n/255,2.4)}const{sqrt:Jl,pow:Nn,min:dye,max:pye,atan2:xI,abs:wI,cos:Xv,sin:kI,exp:hye,PI:_I}=Math;function fye(e,r,n=1,o=1,a=1){var i=function(j){return 360*j/(2*_I)},s=function(j){return 2*_I*j/360};e=new Ve(e),r=new Ve(r);const[l,c,u]=Array.from(e.lab()),[d,h,f]=Array.from(r.lab()),g=(l+d)/2,b=Jl(Nn(c,2)+Nn(u,2)),x=Jl(Nn(h,2)+Nn(f,2)),w=(b+x)/2,k=.5*(1-Jl(Nn(w,7)/(Nn(w,7)+Nn(25,7)))),C=c*(1+k),_=h*(1+k),T=Jl(Nn(C,2)+Nn(u,2)),A=Jl(Nn(_,2)+Nn(f,2)),R=(T+A)/2,D=i(xI(u,C)),N=i(xI(f,_)),M=D>=0?D:D+360,O=N>=0?N:N+360,F=wI(M-O)>180?(M+O+360)/2:(M+O)/2,L=1-.17*Xv(s(F-30))+.24*Xv(s(2*F))+.32*Xv(s(3*F+6))-.2*Xv(s(4*F-63));let U=O-M;U=wI(U)<=180?U:O<=M?U+360:U-360,U=2*Jl(T*A)*kI(s(U)/2);const P=d-l,V=A-T,I=1+.015*Nn(g-50,2)/Jl(20+Nn(g-50,2)),H=1+.045*R,q=1+.015*R*L,Z=30*hye(-Nn((F-275)/25,2)),G=-(2*Jl(Nn(R,7)/(Nn(R,7)+Nn(25,7))))*kI(2*s(Z)),K=Jl(Nn(P/(n*I),2)+Nn(V/(o*H),2)+Nn(U/(a*q),2)+G*(V/(o*H))*(U/(a*q)));return pye(0,dye(100,K))}function mye(e,r,n="lab"){e=new Ve(e),r=new Ve(r);const o=e.get(n),a=r.get(n);let i=0;for(let s in o){const l=(o[s]||0)-(a[s]||0);i+=l*l}return Math.sqrt(i)}const gye=(...e)=>{try{return new Ve(...e),!0}catch{return!1}},yye={cool(){return Yv([Lt.hsl(180,1,.9),Lt.hsl(250,.7,.4)])},hot(){return Yv(["#000","#f00","#ff0","#fff"]).mode("rgb")}},$6={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},EI=Object.keys($6),SI=new Map(EI.map(e=>[e.toLowerCase(),e])),bye=typeof Proxy=="function"?new Proxy($6,{get(e,r){const n=r.toLowerCase();if(SI.has(n))return e[SI.get(n)]},getOwnPropertyNames(){return Object.getOwnPropertyNames(EI)}}):$6,vye=(...e)=>{e=Ft(e,"cmyk");const[r,n,o,a]=e,i=e.length>4?e[4]:1;return a===1?[0,0,0,i]:[r>=1?0:255*(1-r)*(1-a),n>=1?0:255*(1-n)*(1-a),o>=1?0:255*(1-o)*(1-a),i]},{max:CI}=Math,xye=(...e)=>{let[r,n,o]=Ft(e,"rgb");r=r/255,n=n/255,o=o/255;const a=1-CI(r,CI(n,o)),i=a<1?1/(1-a):0,s=(1-r-a)*i,l=(1-n-a)*i,c=(1-o-a)*i;return[s,l,c,a]};Ve.prototype.cmyk=function(){return xye(this._rgb)},Object.assign(Lt,{cmyk:(...e)=>new Ve(...e,"cmyk")}),jt.format.cmyk=vye,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"cmyk"),Xt(e)==="array"&&e.length===4)return"cmyk"}});const wye=(...e)=>{const r=Ft(e,"hsla");let n=Kh(e)||"lsa";return r[0]=si(r[0]||0)+"deg",r[1]=si(r[1]*100)+"%",r[2]=si(r[2]*100)+"%",n==="hsla"||r.length>3&&r[3]<1?(r[3]="/ "+(r.length>3?r[3]:1),n="hsla"):r.length=3,`${n.substr(0,3)}(${r.join(" ")})`},kye=(...e)=>{const r=Ft(e,"lab");let n=Kh(e)||"lab";return r[0]=si(r[0])+"%",r[1]=si(r[1]),r[2]=si(r[2]),n==="laba"||r.length>3&&r[3]<1?r[3]="/ "+(r.length>3?r[3]:1):r.length=3,`lab(${r.join(" ")})`},_ye=(...e)=>{const r=Ft(e,"lch");let n=Kh(e)||"lab";return r[0]=si(r[0])+"%",r[1]=si(r[1]),r[2]=isNaN(r[2])?"none":si(r[2])+"deg",n==="lcha"||r.length>3&&r[3]<1?r[3]="/ "+(r.length>3?r[3]:1):r.length=3,`lch(${r.join(" ")})`},Eye=(...e)=>{const r=Ft(e,"lab");return r[0]=si(r[0]*100)+"%",r[1]=g6(r[1]),r[2]=g6(r[2]),r.length>3&&r[3]<1?r[3]="/ "+(r.length>3?r[3]:1):r.length=3,`oklab(${r.join(" ")})`},TI=(...e)=>{const[r,n,o,...a]=Ft(e,"rgb"),[i,s,l]=A6(r,n,o),[c,u,d]=sI(i,s,l);return[c,u,d,...a.length>0&&a[0]<1?[a[0]]:[]]},Sye=(...e)=>{const r=Ft(e,"lch");return r[0]=si(r[0]*100)+"%",r[1]=g6(r[1]),r[2]=isNaN(r[2])?"none":si(r[2])+"deg",r.length>3&&r[3]<1?r[3]="/ "+(r.length>3?r[3]:1):r.length=3,`oklch(${r.join(" ")})`},{round:M6}=Math,Cye=(...e)=>{const r=Ft(e,"rgba");let n=Kh(e)||"rgb";if(n.substr(0,3)==="hsl")return wye(cI(r),n);if(n.substr(0,3)==="lab"){const o=f1();Ql("d50");const a=kye(x6(r),n);return Ql(o),a}if(n.substr(0,3)==="lch"){const o=f1();Ql("d50");const a=_ye(E6(r),n);return Ql(o),a}return n.substr(0,5)==="oklab"?Eye(A6(r)):n.substr(0,5)==="oklch"?Sye(TI(r)):(r[0]=M6(r[0]),r[1]=M6(r[1]),r[2]=M6(r[2]),(n==="rgba"||r.length>3&&r[3]<1)&&(r[3]="/ "+(r.length>3?r[3]:1),n="rgba"),`${n.substr(0,3)}(${r.slice(0,n==="rgb"?3:4).join(" ")})`)},AI=(...e)=>{e=Ft(e,"lch");const[r,n,o,...a]=e,[i,s,l]=iI(r,n,o),[c,u,d]=T6(i,s,l);return[c,u,d,...a.length>0&&a[0]<1?[a[0]]:[]]},ec=/((?:-?\d+)|(?:-?\d+(?:\.\d+)?)%|none)/.source,Ji=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)%?)|none)/.source,Kv=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)%)|none)/.source,li=/\s*/.source,rf=/\s+/.source,P6=/\s*,\s*/.source,Zv=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)(?:deg)?)|none)/.source,nf=/\s*(?:\/\s*((?:[01]|[01]?\.\d+)|\d+(?:\.\d+)?%))?/.source,RI=new RegExp("^rgba?\\("+li+[ec,ec,ec].join(rf)+nf+"\\)$"),NI=new RegExp("^rgb\\("+li+[ec,ec,ec].join(P6)+li+"\\)$"),DI=new RegExp("^rgba\\("+li+[ec,ec,ec,Ji].join(P6)+li+"\\)$"),$I=new RegExp("^hsla?\\("+li+[Zv,Kv,Kv].join(rf)+nf+"\\)$"),MI=new RegExp("^hsl?\\("+li+[Zv,Kv,Kv].join(P6)+li+"\\)$"),PI=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,zI=new RegExp("^lab\\("+li+[Ji,Ji,Ji].join(rf)+nf+"\\)$"),II=new RegExp("^lch\\("+li+[Ji,Ji,Zv].join(rf)+nf+"\\)$"),OI=new RegExp("^oklab\\("+li+[Ji,Ji,Ji].join(rf)+nf+"\\)$"),jI=new RegExp("^oklch\\("+li+[Ji,Ji,Zv].join(rf)+nf+"\\)$"),{round:LI}=Math,of=e=>e.map((r,n)=>n<=2?Od(LI(r),0,255):r),Dn=(e,r=0,n=100,o=!1)=>(typeof e=="string"&&e.endsWith("%")&&(e=parseFloat(e.substring(0,e.length-1))/100,o?e=r+(e+1)*.5*(n-r):e=r+e*(n-r)),+e),Yo=(e,r)=>e==="none"?r:e,z6=e=>{if(e=e.toLowerCase().trim(),e==="transparent")return[0,0,0,0];let r;if(jt.format.named)try{return jt.format.named(e)}catch{}if((r=e.match(RI))||(r=e.match(NI))){let n=r.slice(1,4);for(let a=0;a<3;a++)n[a]=+Dn(Yo(n[a],0),0,255);n=of(n);const o=r[4]!==void 0?+Dn(r[4],0,1):1;return n[3]=o,n}if(r=e.match(DI)){const n=r.slice(1,5);for(let o=0;o<4;o++)n[o]=+Dn(n[o],0,255);return n}if((r=e.match($I))||(r=e.match(MI))){const n=r.slice(1,4);n[0]=+Yo(n[0].replace("deg",""),0),n[1]=+Dn(Yo(n[1],0),0,100)*.01,n[2]=+Dn(Yo(n[2],0),0,100)*.01;const o=of(C6(n)),a=r[4]!==void 0?+Dn(r[4],0,1):1;return o[3]=a,o}if(r=e.match(PI)){const n=r.slice(1,4);n[1]*=.01,n[2]*=.01;const o=C6(n);for(let a=0;a<3;a++)o[a]=LI(o[a]);return o[3]=+r[4],o}if(r=e.match(zI)){const n=r.slice(1,4);n[0]=Dn(Yo(n[0],0),0,100),n[1]=Dn(Yo(n[1],0),-125,125,!0),n[2]=Dn(Yo(n[2],0),-125,125,!0);const o=f1();Ql("d50");const a=of(b6(n));Ql(o);const i=r[4]!==void 0?+Dn(r[4],0,1):1;return a[3]=i,a}if(r=e.match(II)){const n=r.slice(1,4);n[0]=Dn(n[0],0,100),n[1]=Dn(Yo(n[1],0),0,150,!1),n[2]=+Yo(n[2].replace("deg",""),0);const o=f1();Ql("d50");const a=of(_6(n));Ql(o);const i=r[4]!==void 0?+Dn(r[4],0,1):1;return a[3]=i,a}if(r=e.match(OI)){const n=r.slice(1,4);n[0]=Dn(Yo(n[0],0),0,1),n[1]=Dn(Yo(n[1],0),-.4,.4,!0),n[2]=Dn(Yo(n[2],0),-.4,.4,!0);const o=of(T6(n)),a=r[4]!==void 0?+Dn(r[4],0,1):1;return o[3]=a,o}if(r=e.match(jI)){const n=r.slice(1,4);n[0]=Dn(Yo(n[0],0),0,1),n[1]=Dn(Yo(n[1],0),0,.4,!1),n[2]=+Yo(n[2].replace("deg",""),0);const o=of(AI(n)),a=r[4]!==void 0?+Dn(r[4],0,1):1;return o[3]=a,o}};z6.test=e=>RI.test(e)||$I.test(e)||zI.test(e)||II.test(e)||OI.test(e)||jI.test(e)||NI.test(e)||DI.test(e)||MI.test(e)||PI.test(e)||e==="transparent",Ve.prototype.css=function(e){return Cye(this._rgb,e)};const Tye=(...e)=>new Ve(...e,"css");Lt.css=Tye,jt.format.css=z6,jt.autodetect.push({p:5,test:(e,...r)=>{if(!r.length&&Xt(e)==="string"&&z6.test(e))return"css"}}),jt.format.gl=(...e)=>{const r=Ft(e,"rgba");return r[0]*=255,r[1]*=255,r[2]*=255,r};const Aye=(...e)=>new Ve(...e,"gl");Lt.gl=Aye,Ve.prototype.gl=function(){const e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]},Ve.prototype.hex=function(e){return nI(this._rgb,e)};const Rye=(...e)=>new Ve(...e,"hex");Lt.hex=Rye,jt.format.hex=rI,jt.autodetect.push({p:4,test:(e,...r)=>{if(!r.length&&Xt(e)==="string"&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});const{log:Qv}=Math,BI=e=>{const r=e/100;let n,o,a;return r<66?(n=255,o=r<6?0:-155.25485562709179-.44596950469579133*(o=r-2)+104.49216199393888*Qv(o),a=r<20?0:-254.76935184120902+.8274096064007395*(a=r-10)+115.67994401066147*Qv(a)):(n=351.97690566805693+.114206453784165*(n=r-55)-40.25366309332127*Qv(n),o=325.4494125711974+.07943456536662342*(o=r-50)-28.0852963507957*Qv(o),a=255),[n,o,a,1]},{round:Nye}=Math,Dye=(...e)=>{const r=Ft(e,"rgb"),n=r[0],o=r[2];let a=1e3,i=4e4;const s=.4;let l;for(;i-a>s;){l=(i+a)*.5;const c=BI(l);c[2]/c[0]>=o/n?i=l:a=l}return Nye(l)};Ve.prototype.temp=Ve.prototype.kelvin=Ve.prototype.temperature=function(){return Dye(this._rgb)};const I6=(...e)=>new Ve(...e,"temp");Object.assign(Lt,{temp:I6,kelvin:I6,temperature:I6}),jt.format.temp=jt.format.kelvin=jt.format.temperature=BI,Ve.prototype.oklch=function(){return TI(this._rgb)},Object.assign(Lt,{oklch:(...e)=>new Ve(...e,"oklch")}),jt.format.oklch=AI,jt.autodetect.push({p:2,test:(...e)=>{if(e=Ft(e,"oklch"),Xt(e)==="array"&&e.length===3)return"oklch"}}),Object.assign(Lt,{analyze:fI,average:z0e,bezier:F0e,blend:Qi,brewer:bye,Color:Ve,colors:Zh,contrast:sye,contrastAPCA:uye,cubehelix:J0e,deltaE:fye,distance:mye,input:jt,interpolate:Qh,limits:mI,mix:Qh,random:nye,scale:Yv,scales:yye,valid:gye});const O6=[.96,.907,.805,.697,.605,.547,.518,.445,.395,.34],FI=[.32,.16,.08,.04,0,0,.04,.08,.16,.32];function $ye(e){const r=e.get("hsl.l");return O6.reduce((n,o)=>Math.abs(o-r)i===n),a=O6.map(i=>r.set("hsl.l",i)).map(i=>Lt(i)).map((i,s)=>{const l=FI[s]-FI[o];return l>=0?i.saturate(l):i.desaturate(l*-1)});return a[o]=Lt(e),{baseColorIndex:o,colors:a}}function Pye(e){return Mye(e).colors.map(r=>r.hex())}const HI={fill:"#3b82f6",stroke:"#2563eb",hiContrast:"#eff6ff",loContrast:"#bfdbfe"},VI={fill:"#0284c7",stroke:"#0369a1",hiContrast:"#f0f9ff",loContrast:"#B6ECF7"},qI={fill:"#64748b",stroke:"#475569",hiContrast:"#f8fafc",loContrast:"#cbd5e1"},zye={primary:HI,blue:HI,secondary:VI,sky:VI,muted:qI,slate:qI,gray:{fill:"#737373",stroke:"#525252",hiContrast:"#fafafa",loContrast:"#d4d4d4"},red:{fill:"#AC4D39",stroke:"#853A2D",hiContrast:"#FBD3CB",loContrast:"#f5b2a3"},green:{fill:"#428a4f",stroke:"#2d5d39",hiContrast:"#f8fafc",loContrast:"#c2f0c2"},amber:{fill:"#A35829",stroke:"#7E451D",hiContrast:"#FFE0C2",loContrast:"#f9b27c"},indigo:{fill:"#6366f1",stroke:"#4f46e5",hiContrast:"#eef2ff",loContrast:"#c7d2fe"}},Iye={line:"#6E6E6E",labelBg:"#18191b",label:"#C6C6C6"},UI={line:"#64748b",labelBg:"#0f172a",label:"#cbd5e1"},WI={line:"#3b82f6",labelBg:"#172554",label:"#60a5fa"},YI={line:"#0ea5e9",labelBg:"#082f49",label:"#38bdf8"},Oye={amber:{line:"#b45309",labelBg:"#78350f",label:"#FFE0C2"},blue:WI,gray:Iye,green:{line:"#15803d",labelBg:"#052e16",label:"#22c55e"},indigo:{line:"#6366f1",labelBg:"#1e1b4b",label:"#818cf8"},muted:UI,primary:WI,red:{line:"#AC4D39",labelBg:"#b91c1c",label:"#f5b2a3"},secondary:YI,sky:YI,slate:UI},GI=60,XI=2,KI=1;function jye(e){at(Lt.valid(e),`Invalid color: ${e}`);const r=Pye(e),n=r[6],o=Lye(n);return{elements:{fill:n,stroke:r[7],hiContrast:o[0],loContrast:o[1]},relationships:{line:r[4],label:r[3],labelBg:r[9]}}}function Lye(e){const r=Lt(e);let n=r.brighten(XI),o=r.darken(XI),a,i,s,l;do a=n,i=o,n=n.brighten(KI),o=o.darken(KI),s=Lt.contrastAPCA(r,n),l=Lt.contrastAPCA(r,o);while(Math.abs(s)Math.abs(l)?[n.brighten(.4).hex(),n.hex()]:[o.darken(.4).hex(),o.hex()]}const Bye={color:"primary",size:"md",opacity:15,shape:"rectangle",group:{opacity:15,border:"dashed"},relationship:{color:"gray",line:"dashed",arrow:"normal"}},Fye=["rectangle","person","browser","mobile","cylinder","storage","queue"],Hye={colors:$1e(["amber","blue","gray","slate","green","indigo","muted","primary","red","secondary","sky"],e=>({elements:zye[e],relationships:Oye[e]})),sizes:{xs:{width:180,height:100},sm:{width:240,height:135},md:{width:320,height:180},lg:{width:420,height:234},xl:{width:520,height:290}},spacing:{xs:8,sm:10,md:16,lg:24,xl:32},textSizes:{xs:13.33,sm:16,md:19.2,lg:23.04,xl:27.65}};function j6(e){if(e===null||typeof e!="object")return!1;const r=Object.getPrototypeOf(e);return r!==null&&r!==Object.prototype&&Object.getPrototypeOf(r)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function L6(e,r,n=".",o){if(!j6(r))return L6(e,{},n);const a=Object.assign({},r);for(const i in e){if(i==="__proto__"||i==="constructor")continue;const s=e[i];s!=null&&(Array.isArray(s)&&Array.isArray(a[i])?a[i]=[...s,...a[i]]:j6(s)&&j6(a[i])?a[i]=L6(s,a[i],(n?`${n}.`:"")+i.toString()):a[i]=s)}return a}function Vye(e){return(...r)=>r.reduce((n,o)=>L6(n,o,""),{})}const qye=Vye();function Jv({size:e,padding:r,textSize:n,...o},a=B6.defaults.size){return e??=a,n??=e,r??=e,{...o,size:e,padding:r,textSize:n}}const B6={theme:Hye,defaults:Bye};let ZI=class Hz{constructor(r){this.config=r,this.theme=r.theme,this.defaults=r.defaults}theme;defaults;static DEFAULT=new Hz(B6);static from(...r){return Kl(r,1)?new Hz(qye(...r,B6)):this.DEFAULT}get elementColors(){return this.theme.colors[this.defaults.color].elements}get relationshipColors(){return this.theme.colors[this.defaults.relationship.color].relationships}get groupColors(){const r=this.defaults.group?.color;return r?yr(this,"defaultGroup",()=>({...this.elementColors,...this.theme.colors[r].elements})):this.elementColors}isDefaultColor(r){return r===this.defaults.color}colors(r){if(r??=this.defaults.color,this.isThemeColor(r))return this.theme.colors[r];throw new Error(`Unknown color: ${r}`)}fontSize(r){return r??=this.defaults.text??this.defaults.size,this.theme.textSizes[r]}padding(r){return r??=this.defaults.padding??this.defaults.size,this.theme.spacing[r]}isThemeColor(r){return r in this.theme.colors}nodeSizes(r){const n=Jv(r,this.defaults.size);return{sizes:n,values:{sizes:this.theme.sizes[n.size],padding:this.padding(n.padding),textSize:this.fontSize(n.textSize)}}}computeFrom(r){return this.isThemeColor(r)?this.theme.colors[r]:yr(this,`compute-${r}`,()=>{if(!Lt.valid(r))throw new Error(`Invalid color value: "${r}"`);return jye(r)})}equals(r){return r===this?!0:Vv(this.config,r.config)}};function m1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function cu(e){return typeof e=="string"}var F6={exports:{}},QI;function Uye(){if(QI)return F6.exports;QI=1;var e=function(r,n){var o,a,i=1,s=0,l=0,c=String.alphabet;function u(d,h,f){if(f){for(o=h;f=u(d,o),f<76&&f>65;)++o;return+d.slice(h-1,o)}return f=c&&c.indexOf(d.charAt(h)),f>-1?f+76:(f=d.charCodeAt(h)||0,f<45||f>127?f:f<46?65:f<48?f-1:f<58?f+18:f<65?f-11:f<91?f+11:f<97?f-37:f<123?f+5:f-63)}if((r+="")!=(n+="")){for(;i;)if(a=u(r,s++),i=u(n,l++),a<76&&i<76&&a>66&&i>66&&(a=u(r,s,s),i=u(n,l,s=o),l=o),a!=i)return a{if(n===o)return 0;if(!n)return-1;if(!o)return 1;const a=n.split(e),i=o.split(e),s=Math.min(a.length,i.length);for(let c=0;c0?e.slice(0,r):null}function g1(e){const r=e.lastIndexOf(".");return r>0?e.slice(r+1):e}const y1=e=>H6(e)?e:e.id;function to(e,r){const n=y1(e);return r?y1(r).startsWith(n+"."):o=>{const a=y1(o);return n.startsWith(a+".")}}function tO(e,r){if(!r)return a=>tO(e,a);const n=y1(e),o=y1(r);return n===o||o.startsWith(n+".")||n.startsWith(o+".")}function rO(e,r){return n=>to(e,n)}function rx(e){return(H6(e)?e:e.id).split(".").length}function b1(e,r){const n=e.split(".");if(n.length<2)return null;const o=r.split(".");if(o.length<2)return null;let a=[];for(let i=0;ia===0?(n.push(o),n):(n.unshift(`${n[0]}.${o}`),n),[])}function Yye(e,r){let n=r;for(const o of e)to(o,n)&&(n=o);return n!==r?n:null}function uu(e){const r=[],n=[...e];let o;for(;o=n.shift();){let a;for(;a=Yye(n,o);)r.push(n.splice(n.indexOf(a),1)[0]);r.push(o)}return r}function nO(e,r){if(!e||H6(e)){const o=e??"asc";return a=>nO(a,o)}const n=r==="desc"?-1:1;return e.map(o=>({item:o,fqn:o.id.split(".")})).sort((o,a)=>{if(o.fqn.length!==a.fqn.length)return(o.fqn.length-a.fqn.length)*n;for(let i=0;io)}var nx={},oO;function Gye(){return oO||(oO=1,nx.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u",nx.SYMBOL_SUPPORT=typeof Symbol<"u"),nx}var V6,aO;function iO(){if(aO)return V6;aO=1;function e(r){if(typeof r!="function")throw new Error("obliterator/iterator: expecting a function!");this.next=r}return typeof Symbol<"u"&&(e.prototype[Symbol.iterator]=function(){return this}),e.of=function(){var r=arguments,n=r.length,o=0;return new e(function(){return o>=n?{done:!0}:{done:!1,value:r[o++]}})},e.empty=function(){var r=new e(function(){return{done:!0}});return r},e.fromSequence=function(r){var n=0,o=r.length;return new e(function(){return n>=o?{done:!0}:{done:!1,value:r[n++]}})},e.is=function(r){return r instanceof e?!0:typeof r=="object"&&r!==null&&typeof r.next=="function"},V6=e,V6}var q6,sO;function ox(){if(sO)return q6;sO=1;var e=Gye(),r=e.ARRAY_BUFFER_SUPPORT,n=e.SYMBOL_SUPPORT;return q6=function(a,i){var s,l,c,u,d;if(!a)throw new Error("obliterator/forEach: invalid iterable.");if(typeof i!="function")throw new Error("obliterator/forEach: expecting a callback.");if(Array.isArray(a)||r&&ArrayBuffer.isView(a)||typeof a=="string"||a.toString()==="[object Arguments]"){for(c=0,u=a.length;c{const n=(a,i)=>(e.set(i,a),a),o=a=>{if(e.has(a))return e.get(a);const[i,s]=r[a];switch(i){case ax:case lO:return n(s,a);case v1:{const l=n([],a);for(const c of s)l.push(o(c));return l}case ix:{const l=n({},a);for(const[c,u]of s)l[o(c)]=o(u);return l}case U6:return n(new Date(s),a);case W6:{const{source:l,flags:c}=s;return n(new RegExp(l,c),a)}case Y6:{const l=n(new Map,a);for(const[c,u]of s)l.set(o(c),o(u));return l}case G6:{const l=n(new Set,a);for(const c of s)l.add(o(c));return l}case cO:{const{name:l,message:c}=s;return n(new dO[l](c),a)}case uO:return n(BigInt(s),a);case"BigInt":return n(Object(BigInt(s)),a);case"ArrayBuffer":return n(new Uint8Array(s).buffer,s);case"DataView":{const{buffer:l}=new Uint8Array(s);return n(new DataView(l),s)}}return n(new dO[i](s),a)};return o},pO=e=>Xye(new Map,e)(0),af="",{toString:Kye}={},{keys:Zye}=Object,x1=e=>{const r=typeof e;if(r!=="object"||!e)return[ax,r];const n=Kye.call(e).slice(8,-1);switch(n){case"Array":return[v1,af];case"Object":return[ix,af];case"Date":return[U6,af];case"RegExp":return[W6,af];case"Map":return[Y6,af];case"Set":return[G6,af];case"DataView":return[v1,n]}return n.includes("Array")?[v1,n]:n.includes("Error")?[cO,n]:[ix,n]},sx=([e,r])=>e===ax&&(r==="function"||r==="symbol"),Qye=(e,r,n,o)=>{const a=(s,l)=>{const c=o.push(s)-1;return n.set(l,c),c},i=s=>{if(n.has(s))return n.get(s);let[l,c]=x1(s);switch(l){case ax:{let d=s;switch(c){case"bigint":l=uO,d=s.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+c);d=null;break;case"undefined":return a([lO],s)}return a([l,d],s)}case v1:{if(c){let f=s;return c==="DataView"?f=new Uint8Array(s.buffer):c==="ArrayBuffer"&&(f=new Uint8Array(s)),a([c,[...f]],s)}const d=[],h=a([l,d],s);for(const f of s)d.push(i(f));return h}case ix:{if(c)switch(c){case"BigInt":return a([c,s.toString()],s);case"Boolean":case"Number":case"String":return a([c,s.valueOf()],s)}if(r&&"toJSON"in s)return i(s.toJSON());const d=[],h=a([l,d],s);for(const f of Zye(s))(e||!sx(x1(s[f])))&&d.push([i(f),i(s[f])]);return h}case U6:return a([l,s.toISOString()],s);case W6:{const{source:d,flags:h}=s;return a([l,{source:d,flags:h}],s)}case Y6:{const d=[],h=a([l,d],s);for(const[f,g]of s)(e||!(sx(x1(f))||sx(x1(g))))&&d.push([i(f),i(g)]);return h}case G6:{const d=[],h=a([l,d],s);for(const f of s)(e||!sx(x1(f)))&&d.push(i(f));return h}}const{message:u}=s;return a([l,{name:c,message:u}],s)};return i},hO=(e,{json:r,lossy:n}={})=>{const o=[];return Qye(!(r||n),!!r,new Map,o)(e),o},Ld=typeof structuredClone=="function"?(e,r)=>r&&("json"in r||"lossy"in r)?pO(hO(e,r)):structuredClone(e):(e,r)=>pO(hO(e,r));function ekt(){}let w1=class{constructor(r,n,o){this.normal=n,this.property=r,o&&(this.space=o)}};w1.prototype.normal={},w1.prototype.property={},w1.prototype.space=void 0;function fO(e,r){const n={},o={};for(const a of e)Object.assign(n,a.property),Object.assign(o,a.normal);return new w1(n,o,r)}function k1(e){return e.toLowerCase()}let oa=class{constructor(r,n){this.attribute=n,this.property=r}};oa.prototype.attribute="",oa.prototype.booleanish=!1,oa.prototype.boolean=!1,oa.prototype.commaOrSpaceSeparated=!1,oa.prototype.commaSeparated=!1,oa.prototype.defined=!1,oa.prototype.mustUseProperty=!1,oa.prototype.number=!1,oa.prototype.overloadedBoolean=!1,oa.prototype.property="",oa.prototype.spaceSeparated=!1,oa.prototype.space=void 0;let Jye=0;const Ht=Bd(),$n=Bd(),mO=Bd(),Ue=Bd(),jr=Bd(),sf=Bd(),Ra=Bd();function Bd(){return 2**++Jye}const X6={__proto__:null,boolean:Ht,booleanish:$n,commaOrSpaceSeparated:Ra,commaSeparated:sf,number:Ue,overloadedBoolean:mO,spaceSeparated:jr},K6=Object.keys(X6);let Z6=class extends oa{constructor(r,n,o,a){let i=-1;if(super(r,n),gO(this,"space",a),typeof o=="number")for(;++i4&&n.slice(0,4)==="data"&&nbe.test(r)){if(r.charAt(4)==="-"){const i=r.slice(5).replace(_O,abe);o="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=r.slice(4);if(!_O.test(i)){let s=i.replace(rbe,obe);s.charAt(0)!=="-"&&(s="-"+s),r="data"+s}}a=Z6}return new a(o,r)}function obe(e){return"-"+e.toLowerCase()}function abe(e){return e.charAt(1).toUpperCase()}const lx=fO([yO,ebe,xO,wO,kO],"html"),_1=fO([yO,tbe,xO,wO,kO],"svg");function EO(e){const r=[],n=String(e||"");let o=n.indexOf(","),a=0,i=!1;for(;!i;){o===-1&&(o=n.length,i=!0);const s=n.slice(a,o).trim();(s||!i)&&r.push(s),a=o+1,o=n.indexOf(",",a)}return r}function SO(e,r){const n=r||{};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const CO=/[#.]/g;function ibe(e,r){const n=e||"",o={};let a=0,i,s;for(;a-1&&i<=r.length){let s=0;for(;;){let l=n[s];if(l===void 0){const c=DO(r,n[s-1]);l=c===-1?r.length+1:c+1,n[s]=l}if(l>i)return{line:s+1,column:i-(s>0?n[s-1]:0)+1,offset:i};s++}}}function a(i){if(i&&typeof i.line=="number"&&typeof i.column=="number"&&!Number.isNaN(i.line)&&!Number.isNaN(i.column)){for(;n.length1?n[i.line-2]:0)+i.column-1;if(s4&&n.slice(0,4)==="data"&&_be.test(r)){if(r.charAt(4)==="-"){const i=r.slice(5).replace(qO,Tbe);o="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=r.slice(4);if(!qO.test(i)){let s=i.replace(Ebe,Cbe);s.charAt(0)!=="-"&&(s="-"+s),r="data"+s}}a=o8}return new a(o,r)}function Cbe(e){return"-"+e.toLowerCase()}function Tbe(e){return e.charAt(1).toUpperCase()}const Abe=zO([LO,jO,HO,VO,wbe],"html"),UO=zO([LO,jO,HO,VO,kbe],"svg"),WO={}.hasOwnProperty;function a8(e,r){const n=r||{};function o(a,...i){let s=o.invalid;const l=o.handlers;if(a&&WO.call(a,e)){const c=String(a[e]);s=WO.call(l,c)?l[c]:o.unknown}if(s)return s.call(this,a,...i)}return o.handlers=n.handlers||{},o.invalid=n.invalid,o.unknown=n.unknown,o}const Rbe={},Nbe={}.hasOwnProperty,YO=a8("type",{handlers:{root:$be,element:Obe,text:zbe,comment:Ibe,doctype:Pbe}});function Dbe(e,r){const o=(r||Rbe).space;return YO(e,o==="svg"?UO:Abe)}function $be(e,r){const n={nodeName:"#document",mode:(e.data||{}).quirksMode?"quirks":"no-quirks",childNodes:[]};return n.childNodes=i8(e.children,n,r),pf(e,n),n}function Mbe(e,r){const n={nodeName:"#document-fragment",childNodes:[]};return n.childNodes=i8(e.children,n,r),pf(e,n),n}function Pbe(e){const r={nodeName:"#documentType",name:"html",publicId:"",systemId:"",parentNode:null};return pf(e,r),r}function zbe(e){const r={nodeName:"#text",value:e.value,parentNode:null};return pf(e,r),r}function Ibe(e){const r={nodeName:"#comment",data:e.value,parentNode:null};return pf(e,r),r}function Obe(e,r){const n=r;let o=n;e.type==="element"&&e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(o=UO);const a=[];let i;if(e.properties){for(i in e.properties)if(i!=="children"&&Nbe.call(e.properties,i)){const c=jbe(o,i,e.properties[i]);c&&a.push(c)}}const s=o.space,l={nodeName:e.tagName,tagName:e.tagName,attrs:a,namespaceURI:Fd[s],childNodes:[],parentNode:null};return l.childNodes=i8(e.children,l,o),pf(e,l),e.tagName==="template"&&e.content&&(l.content=Mbe(e.content,o)),l}function jbe(e,r,n){const o=Sbe(e,r);if(n===!1||n===null||n===void 0||typeof n=="number"&&Number.isNaN(n)||!n&&o.boolean)return;Array.isArray(n)&&(n=o.commaSeparated?SO(n):AO(n));const a={name:o.attribute,value:n===!0?"":String(n)};if(o.space&&o.space!=="html"&&o.space!=="svg"){const i=a.name.indexOf(":");i<0?a.prefix="":(a.name=a.name.slice(i+1),a.prefix=o.attribute.slice(0,i)),a.namespace=Fd[o.space]}return a}function i8(e,r,n){let o=-1;const a=[];if(e)for(;++o=55296&&e<=57343}function Bbe(e){return e>=56320&&e<=57343}function Fbe(e,r){return(e-55296)*1024+9216+r}function KO(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function ZO(e){return e>=64976&&e<=65007||Lbe.has(e)}var Ae;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(Ae||(Ae={}));const Hbe=65536;class Vbe{constructor(r){this.handler=r,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=Hbe,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(r,n){const{line:o,col:a,offset:i}=this,s=a+n,l=i+n;return{code:r,startLine:o,endLine:o,startCol:s,endCol:s,startOffset:l,endOffset:l}}_err(r){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(r,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(r){if(this.pos!==this.html.length-1){const n=this.html.charCodeAt(this.pos+1);if(Bbe(n))return this.pos++,this._addGap(),Fbe(r,n)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,se.EOF;return this._err(Ae.surrogateInInputStream),r}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(r,n){this.html.length>0?this.html+=r:this.html=r,this.endOfChunkHit=!1,this.lastChunkWritten=n}insertHtmlAtCurrentPos(r){this.html=this.html.substring(0,this.pos+1)+r+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(r,n){if(this.pos+r.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(n)return this.html.startsWith(r,this.pos);for(let o=0;o=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,se.EOF;const o=this.html.charCodeAt(n);return o===se.CARRIAGE_RETURN?se.LINE_FEED:o}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,se.EOF;let r=this.html.charCodeAt(this.pos);return r===se.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,se.LINE_FEED):r===se.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,XO(r)&&(r=this._processSurrogate(r)),this.handler.onParseError===null||r>31&&r<127||r===se.LINE_FEED||r===se.CARRIAGE_RETURN||r>159&&r<64976||this._checkForProblematicCharacters(r),r)}_checkForProblematicCharacters(r){KO(r)?this._err(Ae.controlCharacterInInputStream):ZO(r)&&this._err(Ae.noncharacterInInputStream)}retreat(r){for(this.pos-=r;this.pos=0;n--)if(e.attrs[n].name===r)return e.attrs[n].value;return null}const JO=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),qbe=new Uint16Array("Ȁaglq \x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(e=>e.charCodeAt(0)));var s8;const Ube=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),Wbe=(s8=String.fromCodePoint)!==null&&s8!==void 0?s8:function(e){let r="";return e>65535&&(e-=65536,r+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),r+=String.fromCharCode(e),r};function Ybe(e){var r;return e>=55296&&e<=57343||e>1114111?65533:(r=Ube.get(e))!==null&&r!==void 0?r:e}var ro;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(ro||(ro={}));const Gbe=32;var du;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(du||(du={}));function l8(e){return e>=ro.ZERO&&e<=ro.NINE}function Xbe(e){return e>=ro.UPPER_A&&e<=ro.UPPER_F||e>=ro.LOWER_A&&e<=ro.LOWER_F}function Kbe(e){return e>=ro.UPPER_A&&e<=ro.UPPER_Z||e>=ro.LOWER_A&&e<=ro.LOWER_Z||l8(e)}function Zbe(e){return e===ro.EQUALS||Kbe(e)}var no;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(no||(no={}));var tc;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(tc||(tc={}));class ej{constructor(r,n,o){this.decodeTree=r,this.emitCodePoint=n,this.errors=o,this.state=no.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=tc.Strict}startEntity(r){this.decodeMode=r,this.state=no.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(r,n){switch(this.state){case no.EntityStart:return r.charCodeAt(n)===ro.NUM?(this.state=no.NumericStart,this.consumed+=1,this.stateNumericStart(r,n+1)):(this.state=no.NamedEntity,this.stateNamedEntity(r,n));case no.NumericStart:return this.stateNumericStart(r,n);case no.NumericDecimal:return this.stateNumericDecimal(r,n);case no.NumericHex:return this.stateNumericHex(r,n);case no.NamedEntity:return this.stateNamedEntity(r,n)}}stateNumericStart(r,n){return n>=r.length?-1:(r.charCodeAt(n)|Gbe)===ro.LOWER_X?(this.state=no.NumericHex,this.consumed+=1,this.stateNumericHex(r,n+1)):(this.state=no.NumericDecimal,this.stateNumericDecimal(r,n))}addToNumericResult(r,n,o,a){if(n!==o){const i=o-n;this.result=this.result*Math.pow(a,i)+parseInt(r.substr(n,i),a),this.consumed+=i}}stateNumericHex(r,n){const o=n;for(;n>14;for(;n>14,i!==0){if(s===ro.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==tc.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var r;const{result:n,decodeTree:o}=this,a=(o[n]&du.VALUE_LENGTH)>>14;return this.emitNamedEntityData(n,a,this.consumed),(r=this.errors)===null||r===void 0||r.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(r,n,o){const{decodeTree:a}=this;return this.emitCodePoint(n===1?a[r]&~du.VALUE_LENGTH:a[r+1],o),n===3&&this.emitCodePoint(a[r+2],o),o}end(){var r;switch(this.state){case no.NamedEntity:return this.result!==0&&(this.decodeMode!==tc.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case no.NumericDecimal:return this.emitNumericEntity(0,2);case no.NumericHex:return this.emitNumericEntity(0,3);case no.NumericStart:return(r=this.errors)===null||r===void 0||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case no.EntityStart:return 0}}}function tj(e){let r="";const n=new ej(e,o=>r+=Wbe(o));return function(a,i){let s=0,l=0;for(;(l=a.indexOf("&",l))>=0;){r+=a.slice(s,l),n.startEntity(i);const u=n.write(a,l+1);if(u<0){s=l+n.end();break}s=l+u,l=u===0?s+1:s}const c=r+a.slice(s);return r="",c}}function Qbe(e,r,n,o){const a=(r&du.BRANCH_LENGTH)>>7,i=r&du.JUMP_TABLE;if(a===0)return i!==0&&o===i?n:-1;if(i){const c=o-i;return c<0||c>=a?-1:e[n+c]-1}let s=n,l=s+a-1;for(;s<=l;){const c=s+l>>>1,u=e[c];if(uo)l=c-1;else return e[c+a]}return-1}tj(JO),tj(qbe);var je;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(je||(je={}));var Vd;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(Vd||(Vd={}));var ui;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(ui||(ui={}));var ve;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(ve||(ve={}));var B;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(B||(B={}));const Jbe=new Map([[ve.A,B.A],[ve.ADDRESS,B.ADDRESS],[ve.ANNOTATION_XML,B.ANNOTATION_XML],[ve.APPLET,B.APPLET],[ve.AREA,B.AREA],[ve.ARTICLE,B.ARTICLE],[ve.ASIDE,B.ASIDE],[ve.B,B.B],[ve.BASE,B.BASE],[ve.BASEFONT,B.BASEFONT],[ve.BGSOUND,B.BGSOUND],[ve.BIG,B.BIG],[ve.BLOCKQUOTE,B.BLOCKQUOTE],[ve.BODY,B.BODY],[ve.BR,B.BR],[ve.BUTTON,B.BUTTON],[ve.CAPTION,B.CAPTION],[ve.CENTER,B.CENTER],[ve.CODE,B.CODE],[ve.COL,B.COL],[ve.COLGROUP,B.COLGROUP],[ve.DD,B.DD],[ve.DESC,B.DESC],[ve.DETAILS,B.DETAILS],[ve.DIALOG,B.DIALOG],[ve.DIR,B.DIR],[ve.DIV,B.DIV],[ve.DL,B.DL],[ve.DT,B.DT],[ve.EM,B.EM],[ve.EMBED,B.EMBED],[ve.FIELDSET,B.FIELDSET],[ve.FIGCAPTION,B.FIGCAPTION],[ve.FIGURE,B.FIGURE],[ve.FONT,B.FONT],[ve.FOOTER,B.FOOTER],[ve.FOREIGN_OBJECT,B.FOREIGN_OBJECT],[ve.FORM,B.FORM],[ve.FRAME,B.FRAME],[ve.FRAMESET,B.FRAMESET],[ve.H1,B.H1],[ve.H2,B.H2],[ve.H3,B.H3],[ve.H4,B.H4],[ve.H5,B.H5],[ve.H6,B.H6],[ve.HEAD,B.HEAD],[ve.HEADER,B.HEADER],[ve.HGROUP,B.HGROUP],[ve.HR,B.HR],[ve.HTML,B.HTML],[ve.I,B.I],[ve.IMG,B.IMG],[ve.IMAGE,B.IMAGE],[ve.INPUT,B.INPUT],[ve.IFRAME,B.IFRAME],[ve.KEYGEN,B.KEYGEN],[ve.LABEL,B.LABEL],[ve.LI,B.LI],[ve.LINK,B.LINK],[ve.LISTING,B.LISTING],[ve.MAIN,B.MAIN],[ve.MALIGNMARK,B.MALIGNMARK],[ve.MARQUEE,B.MARQUEE],[ve.MATH,B.MATH],[ve.MENU,B.MENU],[ve.META,B.META],[ve.MGLYPH,B.MGLYPH],[ve.MI,B.MI],[ve.MO,B.MO],[ve.MN,B.MN],[ve.MS,B.MS],[ve.MTEXT,B.MTEXT],[ve.NAV,B.NAV],[ve.NOBR,B.NOBR],[ve.NOFRAMES,B.NOFRAMES],[ve.NOEMBED,B.NOEMBED],[ve.NOSCRIPT,B.NOSCRIPT],[ve.OBJECT,B.OBJECT],[ve.OL,B.OL],[ve.OPTGROUP,B.OPTGROUP],[ve.OPTION,B.OPTION],[ve.P,B.P],[ve.PARAM,B.PARAM],[ve.PLAINTEXT,B.PLAINTEXT],[ve.PRE,B.PRE],[ve.RB,B.RB],[ve.RP,B.RP],[ve.RT,B.RT],[ve.RTC,B.RTC],[ve.RUBY,B.RUBY],[ve.S,B.S],[ve.SCRIPT,B.SCRIPT],[ve.SEARCH,B.SEARCH],[ve.SECTION,B.SECTION],[ve.SELECT,B.SELECT],[ve.SOURCE,B.SOURCE],[ve.SMALL,B.SMALL],[ve.SPAN,B.SPAN],[ve.STRIKE,B.STRIKE],[ve.STRONG,B.STRONG],[ve.STYLE,B.STYLE],[ve.SUB,B.SUB],[ve.SUMMARY,B.SUMMARY],[ve.SUP,B.SUP],[ve.TABLE,B.TABLE],[ve.TBODY,B.TBODY],[ve.TEMPLATE,B.TEMPLATE],[ve.TEXTAREA,B.TEXTAREA],[ve.TFOOT,B.TFOOT],[ve.TD,B.TD],[ve.TH,B.TH],[ve.THEAD,B.THEAD],[ve.TITLE,B.TITLE],[ve.TR,B.TR],[ve.TRACK,B.TRACK],[ve.TT,B.TT],[ve.U,B.U],[ve.UL,B.UL],[ve.SVG,B.SVG],[ve.VAR,B.VAR],[ve.WBR,B.WBR],[ve.XMP,B.XMP]]);function hf(e){var r;return(r=Jbe.get(e))!==null&&r!==void 0?r:B.UNKNOWN}const Fe=B,eve={[je.HTML]:new Set([Fe.ADDRESS,Fe.APPLET,Fe.AREA,Fe.ARTICLE,Fe.ASIDE,Fe.BASE,Fe.BASEFONT,Fe.BGSOUND,Fe.BLOCKQUOTE,Fe.BODY,Fe.BR,Fe.BUTTON,Fe.CAPTION,Fe.CENTER,Fe.COL,Fe.COLGROUP,Fe.DD,Fe.DETAILS,Fe.DIR,Fe.DIV,Fe.DL,Fe.DT,Fe.EMBED,Fe.FIELDSET,Fe.FIGCAPTION,Fe.FIGURE,Fe.FOOTER,Fe.FORM,Fe.FRAME,Fe.FRAMESET,Fe.H1,Fe.H2,Fe.H3,Fe.H4,Fe.H5,Fe.H6,Fe.HEAD,Fe.HEADER,Fe.HGROUP,Fe.HR,Fe.HTML,Fe.IFRAME,Fe.IMG,Fe.INPUT,Fe.LI,Fe.LINK,Fe.LISTING,Fe.MAIN,Fe.MARQUEE,Fe.MENU,Fe.META,Fe.NAV,Fe.NOEMBED,Fe.NOFRAMES,Fe.NOSCRIPT,Fe.OBJECT,Fe.OL,Fe.P,Fe.PARAM,Fe.PLAINTEXT,Fe.PRE,Fe.SCRIPT,Fe.SECTION,Fe.SELECT,Fe.SOURCE,Fe.STYLE,Fe.SUMMARY,Fe.TABLE,Fe.TBODY,Fe.TD,Fe.TEMPLATE,Fe.TEXTAREA,Fe.TFOOT,Fe.TH,Fe.THEAD,Fe.TITLE,Fe.TR,Fe.TRACK,Fe.UL,Fe.WBR,Fe.XMP]),[je.MATHML]:new Set([Fe.MI,Fe.MO,Fe.MN,Fe.MS,Fe.MTEXT,Fe.ANNOTATION_XML]),[je.SVG]:new Set([Fe.TITLE,Fe.FOREIGN_OBJECT,Fe.DESC]),[je.XLINK]:new Set,[je.XML]:new Set,[je.XMLNS]:new Set},c8=new Set([Fe.H1,Fe.H2,Fe.H3,Fe.H4,Fe.H5,Fe.H6]);ve.STYLE,ve.SCRIPT,ve.XMP,ve.IFRAME,ve.NOEMBED,ve.NOFRAMES,ve.PLAINTEXT;var ce;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(ce||(ce={}));const kn={DATA:ce.DATA,RCDATA:ce.RCDATA,RAWTEXT:ce.RAWTEXT,SCRIPT_DATA:ce.SCRIPT_DATA,PLAINTEXT:ce.PLAINTEXT,CDATA_SECTION:ce.CDATA_SECTION};function tve(e){return e>=se.DIGIT_0&&e<=se.DIGIT_9}function S1(e){return e>=se.LATIN_CAPITAL_A&&e<=se.LATIN_CAPITAL_Z}function rve(e){return e>=se.LATIN_SMALL_A&&e<=se.LATIN_SMALL_Z}function pu(e){return rve(e)||S1(e)}function rj(e){return pu(e)||tve(e)}function ux(e){return e+32}function nj(e){return e===se.SPACE||e===se.LINE_FEED||e===se.TABULATION||e===se.FORM_FEED}function oj(e){return nj(e)||e===se.SOLIDUS||e===se.GREATER_THAN_SIGN}function nve(e){return e===se.NULL?Ae.nullCharacterReference:e>1114111?Ae.characterReferenceOutsideUnicodeRange:XO(e)?Ae.surrogateCharacterReference:ZO(e)?Ae.noncharacterCharacterReference:KO(e)||e===se.CARRIAGE_RETURN?Ae.controlCharacterReference:null}class ove{constructor(r,n){this.options=r,this.handler=n,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=ce.DATA,this.returnState=ce.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new Vbe(n),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new ej(JO,(o,a)=>{this.preprocessor.pos=this.entityStartPos+a-1,this._flushCodePointConsumedAsCharacterReference(o)},n.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(Ae.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:o=>{this._err(Ae.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+o)},validateNumericCharacterReference:o=>{const a=nve(o);a&&this._err(a,1)}}:void 0)}_err(r,n=0){var o,a;(a=(o=this.handler).onParseError)===null||a===void 0||a.call(o,this.preprocessor.getError(r,n))}getCurrentLocation(r){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-r,startOffset:this.preprocessor.offset-r,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const r=this._consume();this._ensureHibernation()||this._callState(r)}this.inLoop=!1}}pause(){this.paused=!0}resume(r){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||r?.())}write(r,n,o){this.active=!0,this.preprocessor.write(r,n),this._runParsingLoop(),this.paused||o?.()}insertHtmlAtCurrentPos(r){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(r),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(r){this.consumedAfterSnapshot+=r;for(let n=0;n0&&this._err(Ae.endTagWithAttributes),r.selfClosing&&this._err(Ae.endTagWithTrailingSolidus),this.handler.onEndTag(r)),this.preprocessor.dropParsedChunk()}emitCurrentComment(r){this.prepareToken(r),this.handler.onComment(r),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(r){this.prepareToken(r),this.handler.onDoctype(r),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(r){if(this.currentCharacterToken){switch(r&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=r.startLine,this.currentCharacterToken.location.endCol=r.startCol,this.currentCharacterToken.location.endOffset=r.startOffset),this.currentCharacterToken.type){case Kt.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case Kt.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case Kt.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const r=this.getCurrentLocation(0);r&&(r.endLine=r.startLine,r.endCol=r.startCol,r.endOffset=r.startOffset),this._emitCurrentCharacterToken(r),this.handler.onEof({type:Kt.EOF,location:r}),this.active=!1}_appendCharToCurrentCharacterToken(r,n){if(this.currentCharacterToken)if(this.currentCharacterToken.type===r){this.currentCharacterToken.chars+=n;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(r,n)}_emitCodePoint(r){const n=nj(r)?Kt.WHITESPACE_CHARACTER:r===se.NULL?Kt.NULL_CHARACTER:Kt.CHARACTER;this._appendCharToCurrentCharacterToken(n,String.fromCodePoint(r))}_emitChars(r){this._appendCharToCurrentCharacterToken(Kt.CHARACTER,r)}_startCharacterReference(){this.returnState=this.state,this.state=ce.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?tc.Attribute:tc.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===ce.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===ce.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===ce.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(r){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(r):this._emitCodePoint(r)}_callState(r){switch(this.state){case ce.DATA:{this._stateData(r);break}case ce.RCDATA:{this._stateRcdata(r);break}case ce.RAWTEXT:{this._stateRawtext(r);break}case ce.SCRIPT_DATA:{this._stateScriptData(r);break}case ce.PLAINTEXT:{this._statePlaintext(r);break}case ce.TAG_OPEN:{this._stateTagOpen(r);break}case ce.END_TAG_OPEN:{this._stateEndTagOpen(r);break}case ce.TAG_NAME:{this._stateTagName(r);break}case ce.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(r);break}case ce.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(r);break}case ce.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(r);break}case ce.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(r);break}case ce.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(r);break}case ce.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(r);break}case ce.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(r);break}case ce.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(r);break}case ce.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(r);break}case ce.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(r);break}case ce.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(r);break}case ce.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(r);break}case ce.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(r);break}case ce.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(r);break}case ce.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(r);break}case ce.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(r);break}case ce.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(r);break}case ce.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(r);break}case ce.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(r);break}case ce.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(r);break}case ce.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(r);break}case ce.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(r);break}case ce.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(r);break}case ce.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(r);break}case ce.ATTRIBUTE_NAME:{this._stateAttributeName(r);break}case ce.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(r);break}case ce.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(r);break}case ce.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(r);break}case ce.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(r);break}case ce.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(r);break}case ce.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(r);break}case ce.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(r);break}case ce.BOGUS_COMMENT:{this._stateBogusComment(r);break}case ce.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(r);break}case ce.COMMENT_START:{this._stateCommentStart(r);break}case ce.COMMENT_START_DASH:{this._stateCommentStartDash(r);break}case ce.COMMENT:{this._stateComment(r);break}case ce.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(r);break}case ce.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(r);break}case ce.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(r);break}case ce.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(r);break}case ce.COMMENT_END_DASH:{this._stateCommentEndDash(r);break}case ce.COMMENT_END:{this._stateCommentEnd(r);break}case ce.COMMENT_END_BANG:{this._stateCommentEndBang(r);break}case ce.DOCTYPE:{this._stateDoctype(r);break}case ce.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(r);break}case ce.DOCTYPE_NAME:{this._stateDoctypeName(r);break}case ce.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(r);break}case ce.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(r);break}case ce.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(r);break}case ce.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(r);break}case ce.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(r);break}case ce.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(r);break}case ce.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(r);break}case ce.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(r);break}case ce.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(r);break}case ce.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(r);break}case ce.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(r);break}case ce.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(r);break}case ce.BOGUS_DOCTYPE:{this._stateBogusDoctype(r);break}case ce.CDATA_SECTION:{this._stateCdataSection(r);break}case ce.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(r);break}case ce.CDATA_SECTION_END:{this._stateCdataSectionEnd(r);break}case ce.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case ce.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(r);break}default:throw new Error("Unknown state")}}_stateData(r){switch(r){case se.LESS_THAN_SIGN:{this.state=ce.TAG_OPEN;break}case se.AMPERSAND:{this._startCharacterReference();break}case se.NULL:{this._err(Ae.unexpectedNullCharacter),this._emitCodePoint(r);break}case se.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(r)}}_stateRcdata(r){switch(r){case se.AMPERSAND:{this._startCharacterReference();break}case se.LESS_THAN_SIGN:{this.state=ce.RCDATA_LESS_THAN_SIGN;break}case se.NULL:{this._err(Ae.unexpectedNullCharacter),this._emitChars(Xr);break}case se.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(r)}}_stateRawtext(r){switch(r){case se.LESS_THAN_SIGN:{this.state=ce.RAWTEXT_LESS_THAN_SIGN;break}case se.NULL:{this._err(Ae.unexpectedNullCharacter),this._emitChars(Xr);break}case se.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(r)}}_stateScriptData(r){switch(r){case se.LESS_THAN_SIGN:{this.state=ce.SCRIPT_DATA_LESS_THAN_SIGN;break}case se.NULL:{this._err(Ae.unexpectedNullCharacter),this._emitChars(Xr);break}case se.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(r)}}_statePlaintext(r){switch(r){case se.NULL:{this._err(Ae.unexpectedNullCharacter),this._emitChars(Xr);break}case se.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(r)}}_stateTagOpen(r){if(pu(r))this._createStartTagToken(),this.state=ce.TAG_NAME,this._stateTagName(r);else switch(r){case se.EXCLAMATION_MARK:{this.state=ce.MARKUP_DECLARATION_OPEN;break}case se.SOLIDUS:{this.state=ce.END_TAG_OPEN;break}case se.QUESTION_MARK:{this._err(Ae.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=ce.BOGUS_COMMENT,this._stateBogusComment(r);break}case se.EOF:{this._err(Ae.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(Ae.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=ce.DATA,this._stateData(r)}}_stateEndTagOpen(r){if(pu(r))this._createEndTagToken(),this.state=ce.TAG_NAME,this._stateTagName(r);else switch(r){case se.GREATER_THAN_SIGN:{this._err(Ae.missingEndTagName),this.state=ce.DATA;break}case se.EOF:{this._err(Ae.eofBeforeTagName),this._emitChars("");break}case se.NULL:{this._err(Ae.unexpectedNullCharacter),this.state=ce.SCRIPT_DATA_ESCAPED,this._emitChars(Xr);break}case se.EOF:{this._err(Ae.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=ce.SCRIPT_DATA_ESCAPED,this._emitCodePoint(r)}}_stateScriptDataEscapedLessThanSign(r){r===se.SOLIDUS?this.state=ce.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:pu(r)?(this._emitChars("<"),this.state=ce.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(r)):(this._emitChars("<"),this.state=ce.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(r))}_stateScriptDataEscapedEndTagOpen(r){pu(r)?(this.state=ce.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(r)):(this._emitChars("");break}case se.NULL:{this._err(Ae.unexpectedNullCharacter),this.state=ce.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Xr);break}case se.EOF:{this._err(Ae.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=ce.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(r)}}_stateScriptDataDoubleEscapedLessThanSign(r){r===se.SOLIDUS?(this.state=ce.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=ce.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(r))}_stateScriptDataDoubleEscapeEnd(r){if(this.preprocessor.startsWith(aa.SCRIPT,!1)&&oj(this.preprocessor.peek(aa.SCRIPT.length))){this._emitCodePoint(r);for(let n=0;n0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,!0)}replace(r,n){const o=this._indexOf(r);this.items[o]=n,o===this.stackTop&&(this.current=n)}insertAfter(r,n,o){const a=this._indexOf(r)+1;this.items.splice(a,0,n),this.tagIDs.splice(a,0,o),this.stackTop++,a===this.stackTop&&this._updateCurrentElement(),this.handler.onItemPush(this.current,this.currentTagId,a===this.stackTop)}popUntilTagNamePopped(r){let n=this.stackTop+1;do n=this.tagIDs.lastIndexOf(r,n-1);while(n>0&&this.treeAdapter.getNamespaceURI(this.items[n])!==je.HTML);this.shortenToLength(n<0?0:n)}shortenToLength(r){for(;this.stackTop>=r;){const n=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(n,this.stackTop=0;o--)if(r.has(this.tagIDs[o])&&this.treeAdapter.getNamespaceURI(this.items[o])===n)return o;return-1}clearBackTo(r,n){const o=this._indexOfTagNames(r,n);this.shortenToLength(o+1)}clearBackToTableContext(){this.clearBackTo(cve,je.HTML)}clearBackToTableBodyContext(){this.clearBackTo(lve,je.HTML)}clearBackToTableRowContext(){this.clearBackTo(sve,je.HTML)}remove(r){const n=this._indexOf(r);n>=0&&(n===this.stackTop?this.pop():(this.items.splice(n,1),this.tagIDs.splice(n,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===B.BODY?this.items[1]:null}contains(r){return this._indexOf(r)>-1}getCommonAncestor(r){const n=this._indexOf(r)-1;return n>=0?this.items[n]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===B.HTML}hasInDynamicScope(r,n){for(let o=this.stackTop;o>=0;o--){const a=this.tagIDs[o];switch(this.treeAdapter.getNamespaceURI(this.items[o])){case je.HTML:{if(a===r)return!0;if(n.has(a))return!1;break}case je.SVG:{if(lj.has(a))return!1;break}case je.MATHML:{if(sj.has(a))return!1;break}}}return!0}hasInScope(r){return this.hasInDynamicScope(r,dx)}hasInListItemScope(r){return this.hasInDynamicScope(r,ave)}hasInButtonScope(r){return this.hasInDynamicScope(r,ive)}hasNumberedHeaderInScope(){for(let r=this.stackTop;r>=0;r--){const n=this.tagIDs[r];switch(this.treeAdapter.getNamespaceURI(this.items[r])){case je.HTML:{if(c8.has(n))return!0;if(dx.has(n))return!1;break}case je.SVG:{if(lj.has(n))return!1;break}case je.MATHML:{if(sj.has(n))return!1;break}}}return!0}hasInTableScope(r){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===je.HTML)switch(this.tagIDs[n]){case r:return!0;case B.TABLE:case B.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===je.HTML)switch(this.tagIDs[r]){case B.TBODY:case B.THEAD:case B.TFOOT:return!0;case B.TABLE:case B.HTML:return!1}return!0}hasInSelectScope(r){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===je.HTML)switch(this.tagIDs[n]){case r:return!0;case B.OPTION:case B.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;aj.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;ij.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(r){for(;this.currentTagId!==r&&ij.has(this.currentTagId);)this.pop()}}const u8=3;var nl;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(nl||(nl={}));const cj={type:nl.Marker};class pve{constructor(r){this.treeAdapter=r,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(r,n){const o=[],a=n.length,i=this.treeAdapter.getTagName(r),s=this.treeAdapter.getNamespaceURI(r);for(let l=0;l[s.name,s.value]));let i=0;for(let s=0;sa.get(c.name)===c.value)&&(i+=1,i>=u8&&this.entries.splice(l.idx,1))}}insertMarker(){this.entries.unshift(cj)}pushElement(r,n){this._ensureNoahArkCondition(r),this.entries.unshift({type:nl.Element,element:r,token:n})}insertElementAfterBookmark(r,n){const o=this.entries.indexOf(this.bookmark);this.entries.splice(o,0,{type:nl.Element,element:r,token:n})}removeEntry(r){const n=this.entries.indexOf(r);n>=0&&this.entries.splice(n,1)}clearToLastMarker(){const r=this.entries.indexOf(cj);r>=0?this.entries.splice(0,r+1):this.entries.length=0}getElementEntryInScopeWithTagName(r){const n=this.entries.find(o=>o.type===nl.Marker||this.treeAdapter.getTagName(o.element)===r);return n&&n.type===nl.Element?n:null}getElementEntry(r){return this.entries.find(n=>n.type===nl.Element&&n.element===r)}}const hu={createDocument(){return{nodeName:"#document",mode:ui.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,r,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:r,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,r){e.childNodes.push(r),r.parentNode=e},insertBefore(e,r,n){const o=e.childNodes.indexOf(n);e.childNodes.splice(o,0,r),r.parentNode=e},setTemplateContent(e,r){e.content=r},getTemplateContent(e){return e.content},setDocumentType(e,r,n,o){const a=e.childNodes.find(i=>i.nodeName==="#documentType");if(a)a.name=r,a.publicId=n,a.systemId=o;else{const i={nodeName:"#documentType",name:r,publicId:n,systemId:o,parentNode:null};hu.appendChild(e,i)}},setDocumentMode(e,r){e.mode=r},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const r=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(r,1),e.parentNode=null}},insertText(e,r){if(e.childNodes.length>0){const n=e.childNodes[e.childNodes.length-1];if(hu.isTextNode(n)){n.value+=r;return}}hu.appendChild(e,hu.createTextNode(r))},insertTextBefore(e,r,n){const o=e.childNodes[e.childNodes.indexOf(n)-1];o&&hu.isTextNode(o)?o.value+=r:hu.insertBefore(e,hu.createTextNode(r),n)},adoptAttributes(e,r){const n=new Set(e.attrs.map(o=>o.name));for(let o=0;oe.startsWith(n))}function bve(e){return e.name===uj&&e.publicId===null&&(e.systemId===null||e.systemId===hve)}function vve(e){if(e.name!==uj)return ui.QUIRKS;const{systemId:r}=e;if(r&&r.toLowerCase()===fve)return ui.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),gve.has(n))return ui.QUIRKS;let o=r===null?mve:dj;if(hj(n,o))return ui.QUIRKS;if(o=r===null?pj:yve,hj(n,o))return ui.LIMITED_QUIRKS}return ui.NO_QUIRKS}const fj={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},xve="definitionurl",wve="definitionURL",kve=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),_ve=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:je.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:je.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:je.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:je.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:je.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:je.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:je.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:je.XML}],["xml:space",{prefix:"xml",name:"space",namespace:je.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:je.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:je.XMLNS}]]),Eve=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),Sve=new Set([B.B,B.BIG,B.BLOCKQUOTE,B.BODY,B.BR,B.CENTER,B.CODE,B.DD,B.DIV,B.DL,B.DT,B.EM,B.EMBED,B.H1,B.H2,B.H3,B.H4,B.H5,B.H6,B.HEAD,B.HR,B.I,B.IMG,B.LI,B.LISTING,B.MENU,B.META,B.NOBR,B.OL,B.P,B.PRE,B.RUBY,B.S,B.SMALL,B.SPAN,B.STRONG,B.STRIKE,B.SUB,B.SUP,B.TABLE,B.TT,B.U,B.UL,B.VAR]);function Cve(e){const r=e.tagID;return r===B.FONT&&e.attrs.some(({name:o})=>o===Vd.COLOR||o===Vd.SIZE||o===Vd.FACE)||Sve.has(r)}function mj(e){for(let r=0;r0&&this._setContextModes(r,n)}onItemPop(r,n){var o,a;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(r,this.currentToken),(a=(o=this.treeAdapter).onItemPop)===null||a===void 0||a.call(o,r,this.openElements.current),n){let i,s;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,s=this.fragmentContextID):{current:i,currentTagId:s}=this.openElements,this._setContextModes(i,s)}}_setContextModes(r,n){const o=r===this.document||this.treeAdapter.getNamespaceURI(r)===je.HTML;this.currentNotInHTML=!o,this.tokenizer.inForeignNode=!o&&!this._isIntegrationPoint(n,r)}_switchToTextParsing(r,n){this._insertElement(r,je.HTML),this.tokenizer.state=n,this.originalInsertionMode=this.insertionMode,this.insertionMode=de.TEXT}switchToPlaintextParsing(){this.insertionMode=de.TEXT,this.originalInsertionMode=de.IN_BODY,this.tokenizer.state=kn.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let r=this.fragmentContext;for(;r;){if(this.treeAdapter.getTagName(r)===ve.FORM){this.formElement=r;break}r=this.treeAdapter.getParentNode(r)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==je.HTML))switch(this.fragmentContextID){case B.TITLE:case B.TEXTAREA:{this.tokenizer.state=kn.RCDATA;break}case B.STYLE:case B.XMP:case B.IFRAME:case B.NOEMBED:case B.NOFRAMES:case B.NOSCRIPT:{this.tokenizer.state=kn.RAWTEXT;break}case B.SCRIPT:{this.tokenizer.state=kn.SCRIPT_DATA;break}case B.PLAINTEXT:{this.tokenizer.state=kn.PLAINTEXT;break}}}_setDocumentType(r){const n=r.name||"",o=r.publicId||"",a=r.systemId||"";if(this.treeAdapter.setDocumentType(this.document,n,o,a),r.location){const s=this.treeAdapter.getChildNodes(this.document).find(l=>this.treeAdapter.isDocumentTypeNode(l));s&&this.treeAdapter.setNodeSourceCodeLocation(s,r.location)}}_attachElementToTree(r,n){if(this.options.sourceCodeLocationInfo){const o=n&&{...n,startTag:n};this.treeAdapter.setNodeSourceCodeLocation(r,o)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(r);else{const o=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(o,r)}}_appendElement(r,n){const o=this.treeAdapter.createElement(r.tagName,n,r.attrs);this._attachElementToTree(o,r.location)}_insertElement(r,n){const o=this.treeAdapter.createElement(r.tagName,n,r.attrs);this._attachElementToTree(o,r.location),this.openElements.push(o,r.tagID)}_insertFakeElement(r,n){const o=this.treeAdapter.createElement(r,je.HTML,[]);this._attachElementToTree(o,null),this.openElements.push(o,n)}_insertTemplate(r){const n=this.treeAdapter.createElement(r.tagName,je.HTML,r.attrs),o=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(n,o),this._attachElementToTree(n,r.location),this.openElements.push(n,r.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,null)}_insertFakeRootElement(){const r=this.treeAdapter.createElement(ve.HTML,je.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(r,null),this.treeAdapter.appendChild(this.openElements.current,r),this.openElements.push(r,B.HTML)}_appendCommentNode(r,n){const o=this.treeAdapter.createCommentNode(r.data);this.treeAdapter.appendChild(n,o),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,r.location)}_insertCharacters(r){let n,o;if(this._shouldFosterParentOnInsertion()?({parent:n,beforeElement:o}=this._findFosterParentingLocation(),o?this.treeAdapter.insertTextBefore(n,r.chars,o):this.treeAdapter.insertText(n,r.chars)):(n=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(n,r.chars)),!r.location)return;const a=this.treeAdapter.getChildNodes(n),i=o?a.lastIndexOf(o):a.length,s=a[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){const{endLine:c,endCol:u,endOffset:d}=r.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:c,endCol:u,endOffset:d})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,r.location)}_adoptNodes(r,n){for(let o=this.treeAdapter.getFirstChild(r);o;o=this.treeAdapter.getFirstChild(r))this.treeAdapter.detachNode(o),this.treeAdapter.appendChild(n,o)}_setEndLocation(r,n){if(this.treeAdapter.getNodeSourceCodeLocation(r)&&n.location){const o=n.location,a=this.treeAdapter.getTagName(r),i=n.type===Kt.END_TAG&&a===n.tagName?{endTag:{...o},endLine:o.endLine,endCol:o.endCol,endOffset:o.endOffset}:{endLine:o.startLine,endCol:o.startCol,endOffset:o.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(r,i)}}shouldProcessStartTagTokenInForeignContent(r){if(!this.currentNotInHTML)return!1;let n,o;return this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,o=this.fragmentContextID):{current:n,currentTagId:o}=this.openElements,r.tagID===B.SVG&&this.treeAdapter.getTagName(n)===ve.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(n)===je.MATHML?!1:this.tokenizer.inForeignNode||(r.tagID===B.MGLYPH||r.tagID===B.MALIGNMARK)&&!this._isIntegrationPoint(o,n,je.HTML)}_processToken(r){switch(r.type){case Kt.CHARACTER:{this.onCharacter(r);break}case Kt.NULL_CHARACTER:{this.onNullCharacter(r);break}case Kt.COMMENT:{this.onComment(r);break}case Kt.DOCTYPE:{this.onDoctype(r);break}case Kt.START_TAG:{this._processStartTag(r);break}case Kt.END_TAG:{this.onEndTag(r);break}case Kt.EOF:{this.onEof(r);break}case Kt.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(r);break}}}_isIntegrationPoint(r,n,o){const a=this.treeAdapter.getNamespaceURI(n),i=this.treeAdapter.getAttrList(n);return Nve(r,a,i,o)}_reconstructActiveFormattingElements(){const r=this.activeFormattingElements.entries.length;if(r){const n=this.activeFormattingElements.entries.findIndex(a=>a.type===nl.Marker||this.openElements.contains(a.element)),o=n<0?r-1:n-1;for(let a=o;a>=0;a--){const i=this.activeFormattingElements.entries[a];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=de.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(B.P),this.openElements.popUntilTagNamePopped(B.P)}_resetInsertionMode(){for(let r=this.openElements.stackTop;r>=0;r--)switch(r===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[r]){case B.TR:{this.insertionMode=de.IN_ROW;return}case B.TBODY:case B.THEAD:case B.TFOOT:{this.insertionMode=de.IN_TABLE_BODY;return}case B.CAPTION:{this.insertionMode=de.IN_CAPTION;return}case B.COLGROUP:{this.insertionMode=de.IN_COLUMN_GROUP;return}case B.TABLE:{this.insertionMode=de.IN_TABLE;return}case B.BODY:{this.insertionMode=de.IN_BODY;return}case B.FRAMESET:{this.insertionMode=de.IN_FRAMESET;return}case B.SELECT:{this._resetInsertionModeForSelect(r);return}case B.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case B.HTML:{this.insertionMode=this.headElement?de.AFTER_HEAD:de.BEFORE_HEAD;return}case B.TD:case B.TH:{if(r>0){this.insertionMode=de.IN_CELL;return}break}case B.HEAD:{if(r>0){this.insertionMode=de.IN_HEAD;return}break}}this.insertionMode=de.IN_BODY}_resetInsertionModeForSelect(r){if(r>0)for(let n=r-1;n>0;n--){const o=this.openElements.tagIDs[n];if(o===B.TEMPLATE)break;if(o===B.TABLE){this.insertionMode=de.IN_SELECT_IN_TABLE;return}}this.insertionMode=de.IN_SELECT}_isElementCausesFosterParenting(r){return yj.has(r)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let r=this.openElements.stackTop;r>=0;r--){const n=this.openElements.items[r];switch(this.openElements.tagIDs[r]){case B.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(n)===je.HTML)return{parent:this.treeAdapter.getTemplateContent(n),beforeElement:null};break}case B.TABLE:{const o=this.treeAdapter.getParentNode(n);return o?{parent:o,beforeElement:n}:{parent:this.openElements.items[r-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(r){const n=this._findFosterParentingLocation();n.beforeElement?this.treeAdapter.insertBefore(n.parent,r,n.beforeElement):this.treeAdapter.appendChild(n.parent,r)}_isSpecialElement(r,n){const o=this.treeAdapter.getNamespaceURI(r);return eve[o].has(n)}onCharacter(r){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){u3e(this,r);return}switch(this.insertionMode){case de.INITIAL:{C1(this,r);break}case de.BEFORE_HTML:{T1(this,r);break}case de.BEFORE_HEAD:{A1(this,r);break}case de.IN_HEAD:{R1(this,r);break}case de.IN_HEAD_NO_SCRIPT:{N1(this,r);break}case de.AFTER_HEAD:{D1(this,r);break}case de.IN_BODY:case de.IN_CAPTION:case de.IN_CELL:case de.IN_TEMPLATE:{wj(this,r);break}case de.TEXT:case de.IN_SELECT:case de.IN_SELECT_IN_TABLE:{this._insertCharacters(r);break}case de.IN_TABLE:case de.IN_TABLE_BODY:case de.IN_ROW:{m8(this,r);break}case de.IN_TABLE_TEXT:{Rj(this,r);break}case de.IN_COLUMN_GROUP:{fx(this,r);break}case de.AFTER_BODY:{yx(this,r);break}case de.AFTER_AFTER_BODY:{bx(this,r);break}}}onNullCharacter(r){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){c3e(this,r);return}switch(this.insertionMode){case de.INITIAL:{C1(this,r);break}case de.BEFORE_HTML:{T1(this,r);break}case de.BEFORE_HEAD:{A1(this,r);break}case de.IN_HEAD:{R1(this,r);break}case de.IN_HEAD_NO_SCRIPT:{N1(this,r);break}case de.AFTER_HEAD:{D1(this,r);break}case de.TEXT:{this._insertCharacters(r);break}case de.IN_TABLE:case de.IN_TABLE_BODY:case de.IN_ROW:{m8(this,r);break}case de.IN_COLUMN_GROUP:{fx(this,r);break}case de.AFTER_BODY:{yx(this,r);break}case de.AFTER_AFTER_BODY:{bx(this,r);break}}}onComment(r){if(this.skipNextNewLine=!1,this.currentNotInHTML){h8(this,r);return}switch(this.insertionMode){case de.INITIAL:case de.BEFORE_HTML:case de.BEFORE_HEAD:case de.IN_HEAD:case de.IN_HEAD_NO_SCRIPT:case de.AFTER_HEAD:case de.IN_BODY:case de.IN_TABLE:case de.IN_CAPTION:case de.IN_COLUMN_GROUP:case de.IN_TABLE_BODY:case de.IN_ROW:case de.IN_CELL:case de.IN_SELECT:case de.IN_SELECT_IN_TABLE:case de.IN_TEMPLATE:case de.IN_FRAMESET:case de.AFTER_FRAMESET:{h8(this,r);break}case de.IN_TABLE_TEXT:{P1(this,r);break}case de.AFTER_BODY:{Fve(this,r);break}case de.AFTER_AFTER_BODY:case de.AFTER_AFTER_FRAMESET:{Hve(this,r);break}}}onDoctype(r){switch(this.skipNextNewLine=!1,this.insertionMode){case de.INITIAL:{Vve(this,r);break}case de.BEFORE_HEAD:case de.IN_HEAD:case de.IN_HEAD_NO_SCRIPT:case de.AFTER_HEAD:{this._err(r,Ae.misplacedDoctype);break}case de.IN_TABLE_TEXT:{P1(this,r);break}}}onStartTag(r){this.skipNextNewLine=!1,this.currentToken=r,this._processStartTag(r),r.selfClosing&&!r.ackSelfClosing&&this._err(r,Ae.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(r){this.shouldProcessStartTagTokenInForeignContent(r)?d3e(this,r):this._startTagOutsideForeignContent(r)}_startTagOutsideForeignContent(r){switch(this.insertionMode){case de.INITIAL:{C1(this,r);break}case de.BEFORE_HTML:{qve(this,r);break}case de.BEFORE_HEAD:{Wve(this,r);break}case de.IN_HEAD:{es(this,r);break}case de.IN_HEAD_NO_SCRIPT:{Xve(this,r);break}case de.AFTER_HEAD:{Zve(this,r);break}case de.IN_BODY:{Mo(this,r);break}case de.IN_TABLE:{ff(this,r);break}case de.IN_TABLE_TEXT:{P1(this,r);break}case de.IN_CAPTION:{Yxe(this,r);break}case de.IN_COLUMN_GROUP:{g8(this,r);break}case de.IN_TABLE_BODY:{mx(this,r);break}case de.IN_ROW:{gx(this,r);break}case de.IN_CELL:{Kxe(this,r);break}case de.IN_SELECT:{$j(this,r);break}case de.IN_SELECT_IN_TABLE:{Qxe(this,r);break}case de.IN_TEMPLATE:{e3e(this,r);break}case de.AFTER_BODY:{r3e(this,r);break}case de.IN_FRAMESET:{n3e(this,r);break}case de.AFTER_FRAMESET:{a3e(this,r);break}case de.AFTER_AFTER_BODY:{s3e(this,r);break}case de.AFTER_AFTER_FRAMESET:{l3e(this,r);break}}}onEndTag(r){this.skipNextNewLine=!1,this.currentToken=r,this.currentNotInHTML?p3e(this,r):this._endTagOutsideForeignContent(r)}_endTagOutsideForeignContent(r){switch(this.insertionMode){case de.INITIAL:{C1(this,r);break}case de.BEFORE_HTML:{Uve(this,r);break}case de.BEFORE_HEAD:{Yve(this,r);break}case de.IN_HEAD:{Gve(this,r);break}case de.IN_HEAD_NO_SCRIPT:{Kve(this,r);break}case de.AFTER_HEAD:{Qve(this,r);break}case de.IN_BODY:{hx(this,r);break}case de.TEXT:{Oxe(this,r);break}case de.IN_TABLE:{$1(this,r);break}case de.IN_TABLE_TEXT:{P1(this,r);break}case de.IN_CAPTION:{Gxe(this,r);break}case de.IN_COLUMN_GROUP:{Xxe(this,r);break}case de.IN_TABLE_BODY:{y8(this,r);break}case de.IN_ROW:{Dj(this,r);break}case de.IN_CELL:{Zxe(this,r);break}case de.IN_SELECT:{Mj(this,r);break}case de.IN_SELECT_IN_TABLE:{Jxe(this,r);break}case de.IN_TEMPLATE:{t3e(this,r);break}case de.AFTER_BODY:{zj(this,r);break}case de.IN_FRAMESET:{o3e(this,r);break}case de.AFTER_FRAMESET:{i3e(this,r);break}case de.AFTER_AFTER_BODY:{bx(this,r);break}}}onEof(r){switch(this.insertionMode){case de.INITIAL:{C1(this,r);break}case de.BEFORE_HTML:{T1(this,r);break}case de.BEFORE_HEAD:{A1(this,r);break}case de.IN_HEAD:{R1(this,r);break}case de.IN_HEAD_NO_SCRIPT:{N1(this,r);break}case de.AFTER_HEAD:{D1(this,r);break}case de.IN_BODY:case de.IN_TABLE:case de.IN_CAPTION:case de.IN_COLUMN_GROUP:case de.IN_TABLE_BODY:case de.IN_ROW:case de.IN_CELL:case de.IN_SELECT:case de.IN_SELECT_IN_TABLE:{Tj(this,r);break}case de.TEXT:{jxe(this,r);break}case de.IN_TABLE_TEXT:{P1(this,r);break}case de.IN_TEMPLATE:{Pj(this,r);break}case de.AFTER_BODY:case de.IN_FRAMESET:case de.AFTER_FRAMESET:case de.AFTER_AFTER_BODY:case de.AFTER_AFTER_FRAMESET:{f8(this,r);break}}}onWhitespaceCharacter(r){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,r.chars.charCodeAt(0)===se.LINE_FEED)){if(r.chars.length===1)return;r.chars=r.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(r);return}switch(this.insertionMode){case de.IN_HEAD:case de.IN_HEAD_NO_SCRIPT:case de.AFTER_HEAD:case de.TEXT:case de.IN_COLUMN_GROUP:case de.IN_SELECT:case de.IN_SELECT_IN_TABLE:case de.IN_FRAMESET:case de.AFTER_FRAMESET:{this._insertCharacters(r);break}case de.IN_BODY:case de.IN_CAPTION:case de.IN_CELL:case de.IN_TEMPLATE:case de.AFTER_BODY:case de.AFTER_AFTER_BODY:case de.AFTER_AFTER_FRAMESET:{xj(this,r);break}case de.IN_TABLE:case de.IN_TABLE_BODY:case de.IN_ROW:{m8(this,r);break}case de.IN_TABLE_TEXT:{Aj(this,r);break}}}}function zve(e,r){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(r.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(r.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Cj(e,r),n}function Ive(e,r){let n=null,o=e.openElements.stackTop;for(;o>=0;o--){const a=e.openElements.items[o];if(a===r.element)break;e._isSpecialElement(a,e.openElements.tagIDs[o])&&(n=a)}return n||(e.openElements.shortenToLength(o<0?0:o),e.activeFormattingElements.removeEntry(r)),n}function Ove(e,r,n){let o=r,a=e.openElements.getCommonAncestor(r);for(let i=0,s=a;s!==n;i++,s=a){a=e.openElements.getCommonAncestor(s);const l=e.activeFormattingElements.getElementEntry(s),c=l&&i>=Mve;!l||c?(c&&e.activeFormattingElements.removeEntry(l),e.openElements.remove(s)):(s=jve(e,l),o===r&&(e.activeFormattingElements.bookmark=l),e.treeAdapter.detachNode(o),e.treeAdapter.appendChild(s,o),o=s)}return o}function jve(e,r){const n=e.treeAdapter.getNamespaceURI(r.element),o=e.treeAdapter.createElement(r.token.tagName,n,r.token.attrs);return e.openElements.replace(r.element,o),r.element=o,o}function Lve(e,r,n){const o=e.treeAdapter.getTagName(r),a=hf(o);if(e._isElementCausesFosterParenting(a))e._fosterParentElement(n);else{const i=e.treeAdapter.getNamespaceURI(r);a===B.TEMPLATE&&i===je.HTML&&(r=e.treeAdapter.getTemplateContent(r)),e.treeAdapter.appendChild(r,n)}}function Bve(e,r,n){const o=e.treeAdapter.getNamespaceURI(n.element),{token:a}=n,i=e.treeAdapter.createElement(a.tagName,o,a.attrs);e._adoptNodes(r,i),e.treeAdapter.appendChild(r,i),e.activeFormattingElements.insertElementAfterBookmark(i,a),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(r,i,a.tagID)}function p8(e,r){for(let n=0;n<$ve;n++){const o=zve(e,r);if(!o)break;const a=Ive(e,o);if(!a)break;e.activeFormattingElements.bookmark=o;const i=Ove(e,a,o.element),s=e.openElements.getCommonAncestor(o.element);e.treeAdapter.detachNode(i),s&&Lve(e,s,i),Bve(e,a,o)}}function h8(e,r){e._appendCommentNode(r,e.openElements.currentTmplContentOrNode)}function Fve(e,r){e._appendCommentNode(r,e.openElements.items[0])}function Hve(e,r){e._appendCommentNode(r,e.document)}function f8(e,r){if(e.stopped=!0,r.location){const n=e.fragmentContext?0:2;for(let o=e.openElements.stackTop;o>=n;o--)e._setEndLocation(e.openElements.items[o],r);if(!e.fragmentContext&&e.openElements.stackTop>=0){const o=e.openElements.items[0],a=e.treeAdapter.getNodeSourceCodeLocation(o);if(a&&!a.endTag&&(e._setEndLocation(o,r),e.openElements.stackTop>=1)){const i=e.openElements.items[1],s=e.treeAdapter.getNodeSourceCodeLocation(i);s&&!s.endTag&&e._setEndLocation(i,r)}}}}function Vve(e,r){e._setDocumentType(r);const n=r.forceQuirks?ui.QUIRKS:vve(r);bve(r)||e._err(r,Ae.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=de.BEFORE_HTML}function C1(e,r){e._err(r,Ae.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,ui.QUIRKS),e.insertionMode=de.BEFORE_HTML,e._processToken(r)}function qve(e,r){r.tagID===B.HTML?(e._insertElement(r,je.HTML),e.insertionMode=de.BEFORE_HEAD):T1(e,r)}function Uve(e,r){const n=r.tagID;(n===B.HTML||n===B.HEAD||n===B.BODY||n===B.BR)&&T1(e,r)}function T1(e,r){e._insertFakeRootElement(),e.insertionMode=de.BEFORE_HEAD,e._processToken(r)}function Wve(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.HEAD:{e._insertElement(r,je.HTML),e.headElement=e.openElements.current,e.insertionMode=de.IN_HEAD;break}default:A1(e,r)}}function Yve(e,r){const n=r.tagID;n===B.HEAD||n===B.BODY||n===B.HTML||n===B.BR?A1(e,r):e._err(r,Ae.endTagWithoutMatchingOpenElement)}function A1(e,r){e._insertFakeElement(ve.HEAD,B.HEAD),e.headElement=e.openElements.current,e.insertionMode=de.IN_HEAD,e._processToken(r)}function es(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.BASE:case B.BASEFONT:case B.BGSOUND:case B.LINK:case B.META:{e._appendElement(r,je.HTML),r.ackSelfClosing=!0;break}case B.TITLE:{e._switchToTextParsing(r,kn.RCDATA);break}case B.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(r,kn.RAWTEXT):(e._insertElement(r,je.HTML),e.insertionMode=de.IN_HEAD_NO_SCRIPT);break}case B.NOFRAMES:case B.STYLE:{e._switchToTextParsing(r,kn.RAWTEXT);break}case B.SCRIPT:{e._switchToTextParsing(r,kn.SCRIPT_DATA);break}case B.TEMPLATE:{e._insertTemplate(r),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=de.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(de.IN_TEMPLATE);break}case B.HEAD:{e._err(r,Ae.misplacedStartTagForHeadElement);break}default:R1(e,r)}}function Gve(e,r){switch(r.tagID){case B.HEAD:{e.openElements.pop(),e.insertionMode=de.AFTER_HEAD;break}case B.BODY:case B.BR:case B.HTML:{R1(e,r);break}case B.TEMPLATE:{qd(e,r);break}default:e._err(r,Ae.endTagWithoutMatchingOpenElement)}}function qd(e,r){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==B.TEMPLATE&&e._err(r,Ae.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(B.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(r,Ae.endTagWithoutMatchingOpenElement)}function R1(e,r){e.openElements.pop(),e.insertionMode=de.AFTER_HEAD,e._processToken(r)}function Xve(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.BASEFONT:case B.BGSOUND:case B.HEAD:case B.LINK:case B.META:case B.NOFRAMES:case B.STYLE:{es(e,r);break}case B.NOSCRIPT:{e._err(r,Ae.nestedNoscriptInHead);break}default:N1(e,r)}}function Kve(e,r){switch(r.tagID){case B.NOSCRIPT:{e.openElements.pop(),e.insertionMode=de.IN_HEAD;break}case B.BR:{N1(e,r);break}default:e._err(r,Ae.endTagWithoutMatchingOpenElement)}}function N1(e,r){const n=r.type===Kt.EOF?Ae.openElementsLeftAfterEof:Ae.disallowedContentInNoscriptInHead;e._err(r,n),e.openElements.pop(),e.insertionMode=de.IN_HEAD,e._processToken(r)}function Zve(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.BODY:{e._insertElement(r,je.HTML),e.framesetOk=!1,e.insertionMode=de.IN_BODY;break}case B.FRAMESET:{e._insertElement(r,je.HTML),e.insertionMode=de.IN_FRAMESET;break}case B.BASE:case B.BASEFONT:case B.BGSOUND:case B.LINK:case B.META:case B.NOFRAMES:case B.SCRIPT:case B.STYLE:case B.TEMPLATE:case B.TITLE:{e._err(r,Ae.abandonedHeadElementChild),e.openElements.push(e.headElement,B.HEAD),es(e,r),e.openElements.remove(e.headElement);break}case B.HEAD:{e._err(r,Ae.misplacedStartTagForHeadElement);break}default:D1(e,r)}}function Qve(e,r){switch(r.tagID){case B.BODY:case B.HTML:case B.BR:{D1(e,r);break}case B.TEMPLATE:{qd(e,r);break}default:e._err(r,Ae.endTagWithoutMatchingOpenElement)}}function D1(e,r){e._insertFakeElement(ve.BODY,B.BODY),e.insertionMode=de.IN_BODY,px(e,r)}function px(e,r){switch(r.type){case Kt.CHARACTER:{wj(e,r);break}case Kt.WHITESPACE_CHARACTER:{xj(e,r);break}case Kt.COMMENT:{h8(e,r);break}case Kt.START_TAG:{Mo(e,r);break}case Kt.END_TAG:{hx(e,r);break}case Kt.EOF:{Tj(e,r);break}}}function xj(e,r){e._reconstructActiveFormattingElements(),e._insertCharacters(r)}function wj(e,r){e._reconstructActiveFormattingElements(),e._insertCharacters(r),e.framesetOk=!1}function Jve(e,r){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],r.attrs)}function exe(e,r){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,r.attrs))}function txe(e,r){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(r,je.HTML),e.insertionMode=de.IN_FRAMESET)}function rxe(e,r){e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._insertElement(r,je.HTML)}function nxe(e,r){e.openElements.hasInButtonScope(B.P)&&e._closePElement(),c8.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(r,je.HTML)}function oxe(e,r){e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._insertElement(r,je.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function axe(e,r){const n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._insertElement(r,je.HTML),n||(e.formElement=e.openElements.current))}function ixe(e,r){e.framesetOk=!1;const n=r.tagID;for(let o=e.openElements.stackTop;o>=0;o--){const a=e.openElements.tagIDs[o];if(n===B.LI&&a===B.LI||(n===B.DD||n===B.DT)&&(a===B.DD||a===B.DT)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.popUntilTagNamePopped(a);break}if(a!==B.ADDRESS&&a!==B.DIV&&a!==B.P&&e._isSpecialElement(e.openElements.items[o],a))break}e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._insertElement(r,je.HTML)}function sxe(e,r){e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._insertElement(r,je.HTML),e.tokenizer.state=kn.PLAINTEXT}function lxe(e,r){e.openElements.hasInScope(B.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(B.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML),e.framesetOk=!1}function cxe(e,r){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(ve.A);n&&(p8(e,r),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}function uxe(e,r){e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}function dxe(e,r){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(B.NOBR)&&(p8(e,r),e._reconstructActiveFormattingElements()),e._insertElement(r,je.HTML),e.activeFormattingElements.pushElement(e.openElements.current,r)}function pxe(e,r){e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function hxe(e,r){e.treeAdapter.getDocumentMode(e.document)!==ui.QUIRKS&&e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._insertElement(r,je.HTML),e.framesetOk=!1,e.insertionMode=de.IN_TABLE}function kj(e,r){e._reconstructActiveFormattingElements(),e._appendElement(r,je.HTML),e.framesetOk=!1,r.ackSelfClosing=!0}function _j(e){const r=QO(e,Vd.TYPE);return r!=null&&r.toLowerCase()===Dve}function fxe(e,r){e._reconstructActiveFormattingElements(),e._appendElement(r,je.HTML),_j(r)||(e.framesetOk=!1),r.ackSelfClosing=!0}function mxe(e,r){e._appendElement(r,je.HTML),r.ackSelfClosing=!0}function gxe(e,r){e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._appendElement(r,je.HTML),e.framesetOk=!1,r.ackSelfClosing=!0}function yxe(e,r){r.tagName=ve.IMG,r.tagID=B.IMG,kj(e,r)}function bxe(e,r){e._insertElement(r,je.HTML),e.skipNextNewLine=!0,e.tokenizer.state=kn.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=de.TEXT}function vxe(e,r){e.openElements.hasInButtonScope(B.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(r,kn.RAWTEXT)}function xxe(e,r){e.framesetOk=!1,e._switchToTextParsing(r,kn.RAWTEXT)}function Ej(e,r){e._switchToTextParsing(r,kn.RAWTEXT)}function wxe(e,r){e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===de.IN_TABLE||e.insertionMode===de.IN_CAPTION||e.insertionMode===de.IN_TABLE_BODY||e.insertionMode===de.IN_ROW||e.insertionMode===de.IN_CELL?de.IN_SELECT_IN_TABLE:de.IN_SELECT}function kxe(e,r){e.openElements.currentTagId===B.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML)}function _xe(e,r){e.openElements.hasInScope(B.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(r,je.HTML)}function Exe(e,r){e.openElements.hasInScope(B.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(B.RTC),e._insertElement(r,je.HTML)}function Sxe(e,r){e._reconstructActiveFormattingElements(),mj(r),d8(r),r.selfClosing?e._appendElement(r,je.MATHML):e._insertElement(r,je.MATHML),r.ackSelfClosing=!0}function Cxe(e,r){e._reconstructActiveFormattingElements(),gj(r),d8(r),r.selfClosing?e._appendElement(r,je.SVG):e._insertElement(r,je.SVG),r.ackSelfClosing=!0}function Sj(e,r){e._reconstructActiveFormattingElements(),e._insertElement(r,je.HTML)}function Mo(e,r){switch(r.tagID){case B.I:case B.S:case B.B:case B.U:case B.EM:case B.TT:case B.BIG:case B.CODE:case B.FONT:case B.SMALL:case B.STRIKE:case B.STRONG:{uxe(e,r);break}case B.A:{cxe(e,r);break}case B.H1:case B.H2:case B.H3:case B.H4:case B.H5:case B.H6:{nxe(e,r);break}case B.P:case B.DL:case B.OL:case B.UL:case B.DIV:case B.DIR:case B.NAV:case B.MAIN:case B.MENU:case B.ASIDE:case B.CENTER:case B.FIGURE:case B.FOOTER:case B.HEADER:case B.HGROUP:case B.DIALOG:case B.DETAILS:case B.ADDRESS:case B.ARTICLE:case B.SEARCH:case B.SECTION:case B.SUMMARY:case B.FIELDSET:case B.BLOCKQUOTE:case B.FIGCAPTION:{rxe(e,r);break}case B.LI:case B.DD:case B.DT:{ixe(e,r);break}case B.BR:case B.IMG:case B.WBR:case B.AREA:case B.EMBED:case B.KEYGEN:{kj(e,r);break}case B.HR:{gxe(e,r);break}case B.RB:case B.RTC:{_xe(e,r);break}case B.RT:case B.RP:{Exe(e,r);break}case B.PRE:case B.LISTING:{oxe(e,r);break}case B.XMP:{vxe(e,r);break}case B.SVG:{Cxe(e,r);break}case B.HTML:{Jve(e,r);break}case B.BASE:case B.LINK:case B.META:case B.STYLE:case B.TITLE:case B.SCRIPT:case B.BGSOUND:case B.BASEFONT:case B.TEMPLATE:{es(e,r);break}case B.BODY:{exe(e,r);break}case B.FORM:{axe(e,r);break}case B.NOBR:{dxe(e,r);break}case B.MATH:{Sxe(e,r);break}case B.TABLE:{hxe(e,r);break}case B.INPUT:{fxe(e,r);break}case B.PARAM:case B.TRACK:case B.SOURCE:{mxe(e,r);break}case B.IMAGE:{yxe(e,r);break}case B.BUTTON:{lxe(e,r);break}case B.APPLET:case B.OBJECT:case B.MARQUEE:{pxe(e,r);break}case B.IFRAME:{xxe(e,r);break}case B.SELECT:{wxe(e,r);break}case B.OPTION:case B.OPTGROUP:{kxe(e,r);break}case B.NOEMBED:case B.NOFRAMES:{Ej(e,r);break}case B.FRAMESET:{txe(e,r);break}case B.TEXTAREA:{bxe(e,r);break}case B.NOSCRIPT:{e.options.scriptingEnabled?Ej(e,r):Sj(e,r);break}case B.PLAINTEXT:{sxe(e,r);break}case B.COL:case B.TH:case B.TD:case B.TR:case B.HEAD:case B.FRAME:case B.TBODY:case B.TFOOT:case B.THEAD:case B.CAPTION:case B.COLGROUP:break;default:Sj(e,r)}}function Txe(e,r){if(e.openElements.hasInScope(B.BODY)&&(e.insertionMode=de.AFTER_BODY,e.options.sourceCodeLocationInfo)){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,r)}}function Axe(e,r){e.openElements.hasInScope(B.BODY)&&(e.insertionMode=de.AFTER_BODY,zj(e,r))}function Rxe(e,r){const n=r.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Nxe(e){const r=e.openElements.tmplCount>0,{formElement:n}=e;r||(e.formElement=null),(n||r)&&e.openElements.hasInScope(B.FORM)&&(e.openElements.generateImpliedEndTags(),r?e.openElements.popUntilTagNamePopped(B.FORM):n&&e.openElements.remove(n))}function Dxe(e){e.openElements.hasInButtonScope(B.P)||e._insertFakeElement(ve.P,B.P),e._closePElement()}function $xe(e){e.openElements.hasInListItemScope(B.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(B.LI),e.openElements.popUntilTagNamePopped(B.LI))}function Mxe(e,r){const n=r.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}function Pxe(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function zxe(e,r){const n=r.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function Ixe(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(ve.BR,B.BR),e.openElements.pop(),e.framesetOk=!1}function Cj(e,r){const n=r.tagName,o=r.tagID;for(let a=e.openElements.stackTop;a>0;a--){const i=e.openElements.items[a],s=e.openElements.tagIDs[a];if(o===s&&(o!==B.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(o),e.openElements.stackTop>=a&&e.openElements.shortenToLength(a);break}if(e._isSpecialElement(i,s))break}}function hx(e,r){switch(r.tagID){case B.A:case B.B:case B.I:case B.S:case B.U:case B.EM:case B.TT:case B.BIG:case B.CODE:case B.FONT:case B.NOBR:case B.SMALL:case B.STRIKE:case B.STRONG:{p8(e,r);break}case B.P:{Dxe(e);break}case B.DL:case B.UL:case B.OL:case B.DIR:case B.DIV:case B.NAV:case B.PRE:case B.MAIN:case B.MENU:case B.ASIDE:case B.BUTTON:case B.CENTER:case B.FIGURE:case B.FOOTER:case B.HEADER:case B.HGROUP:case B.DIALOG:case B.ADDRESS:case B.ARTICLE:case B.DETAILS:case B.SEARCH:case B.SECTION:case B.SUMMARY:case B.LISTING:case B.FIELDSET:case B.BLOCKQUOTE:case B.FIGCAPTION:{Rxe(e,r);break}case B.LI:{$xe(e);break}case B.DD:case B.DT:{Mxe(e,r);break}case B.H1:case B.H2:case B.H3:case B.H4:case B.H5:case B.H6:{Pxe(e);break}case B.BR:{Ixe(e);break}case B.BODY:{Txe(e,r);break}case B.HTML:{Axe(e,r);break}case B.FORM:{Nxe(e);break}case B.APPLET:case B.OBJECT:case B.MARQUEE:{zxe(e,r);break}case B.TEMPLATE:{qd(e,r);break}default:Cj(e,r)}}function Tj(e,r){e.tmplInsertionModeStack.length>0?Pj(e,r):f8(e,r)}function Oxe(e,r){var n;r.tagID===B.SCRIPT&&((n=e.scriptHandler)===null||n===void 0||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function jxe(e,r){e._err(r,Ae.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(r)}function m8(e,r){if(yj.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=de.IN_TABLE_TEXT,r.type){case Kt.CHARACTER:{Rj(e,r);break}case Kt.WHITESPACE_CHARACTER:{Aj(e,r);break}}else M1(e,r)}function Lxe(e,r){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(r,je.HTML),e.insertionMode=de.IN_CAPTION}function Bxe(e,r){e.openElements.clearBackToTableContext(),e._insertElement(r,je.HTML),e.insertionMode=de.IN_COLUMN_GROUP}function Fxe(e,r){e.openElements.clearBackToTableContext(),e._insertFakeElement(ve.COLGROUP,B.COLGROUP),e.insertionMode=de.IN_COLUMN_GROUP,g8(e,r)}function Hxe(e,r){e.openElements.clearBackToTableContext(),e._insertElement(r,je.HTML),e.insertionMode=de.IN_TABLE_BODY}function Vxe(e,r){e.openElements.clearBackToTableContext(),e._insertFakeElement(ve.TBODY,B.TBODY),e.insertionMode=de.IN_TABLE_BODY,mx(e,r)}function qxe(e,r){e.openElements.hasInTableScope(B.TABLE)&&(e.openElements.popUntilTagNamePopped(B.TABLE),e._resetInsertionMode(),e._processStartTag(r))}function Uxe(e,r){_j(r)?e._appendElement(r,je.HTML):M1(e,r),r.ackSelfClosing=!0}function Wxe(e,r){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(r,je.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function ff(e,r){switch(r.tagID){case B.TD:case B.TH:case B.TR:{Vxe(e,r);break}case B.STYLE:case B.SCRIPT:case B.TEMPLATE:{es(e,r);break}case B.COL:{Fxe(e,r);break}case B.FORM:{Wxe(e,r);break}case B.TABLE:{qxe(e,r);break}case B.TBODY:case B.TFOOT:case B.THEAD:{Hxe(e,r);break}case B.INPUT:{Uxe(e,r);break}case B.CAPTION:{Lxe(e,r);break}case B.COLGROUP:{Bxe(e,r);break}default:M1(e,r)}}function $1(e,r){switch(r.tagID){case B.TABLE:{e.openElements.hasInTableScope(B.TABLE)&&(e.openElements.popUntilTagNamePopped(B.TABLE),e._resetInsertionMode());break}case B.TEMPLATE:{qd(e,r);break}case B.BODY:case B.CAPTION:case B.COL:case B.COLGROUP:case B.HTML:case B.TBODY:case B.TD:case B.TFOOT:case B.TH:case B.THEAD:case B.TR:break;default:M1(e,r)}}function M1(e,r){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,px(e,r),e.fosterParentingEnabled=n}function Aj(e,r){e.pendingCharacterTokens.push(r)}function Rj(e,r){e.pendingCharacterTokens.push(r),e.hasNonWhitespacePendingCharacterToken=!0}function P1(e,r){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n0&&e.openElements.currentTagId===B.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===B.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===B.OPTGROUP&&e.openElements.pop();break}case B.OPTION:{e.openElements.currentTagId===B.OPTION&&e.openElements.pop();break}case B.SELECT:{e.openElements.hasInSelectScope(B.SELECT)&&(e.openElements.popUntilTagNamePopped(B.SELECT),e._resetInsertionMode());break}case B.TEMPLATE:{qd(e,r);break}}}function Qxe(e,r){const n=r.tagID;n===B.CAPTION||n===B.TABLE||n===B.TBODY||n===B.TFOOT||n===B.THEAD||n===B.TR||n===B.TD||n===B.TH?(e.openElements.popUntilTagNamePopped(B.SELECT),e._resetInsertionMode(),e._processStartTag(r)):$j(e,r)}function Jxe(e,r){const n=r.tagID;n===B.CAPTION||n===B.TABLE||n===B.TBODY||n===B.TFOOT||n===B.THEAD||n===B.TR||n===B.TD||n===B.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(B.SELECT),e._resetInsertionMode(),e.onEndTag(r)):Mj(e,r)}function e3e(e,r){switch(r.tagID){case B.BASE:case B.BASEFONT:case B.BGSOUND:case B.LINK:case B.META:case B.NOFRAMES:case B.SCRIPT:case B.STYLE:case B.TEMPLATE:case B.TITLE:{es(e,r);break}case B.CAPTION:case B.COLGROUP:case B.TBODY:case B.TFOOT:case B.THEAD:{e.tmplInsertionModeStack[0]=de.IN_TABLE,e.insertionMode=de.IN_TABLE,ff(e,r);break}case B.COL:{e.tmplInsertionModeStack[0]=de.IN_COLUMN_GROUP,e.insertionMode=de.IN_COLUMN_GROUP,g8(e,r);break}case B.TR:{e.tmplInsertionModeStack[0]=de.IN_TABLE_BODY,e.insertionMode=de.IN_TABLE_BODY,mx(e,r);break}case B.TD:case B.TH:{e.tmplInsertionModeStack[0]=de.IN_ROW,e.insertionMode=de.IN_ROW,gx(e,r);break}default:e.tmplInsertionModeStack[0]=de.IN_BODY,e.insertionMode=de.IN_BODY,Mo(e,r)}}function t3e(e,r){r.tagID===B.TEMPLATE&&qd(e,r)}function Pj(e,r){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(B.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(r)):f8(e,r)}function r3e(e,r){r.tagID===B.HTML?Mo(e,r):yx(e,r)}function zj(e,r){var n;if(r.tagID===B.HTML){if(e.fragmentContext||(e.insertionMode=de.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===B.HTML){e._setEndLocation(e.openElements.items[0],r);const o=e.openElements.items[1];o&&!(!((n=e.treeAdapter.getNodeSourceCodeLocation(o))===null||n===void 0)&&n.endTag)&&e._setEndLocation(o,r)}}else yx(e,r)}function yx(e,r){e.insertionMode=de.IN_BODY,px(e,r)}function n3e(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.FRAMESET:{e._insertElement(r,je.HTML);break}case B.FRAME:{e._appendElement(r,je.HTML),r.ackSelfClosing=!0;break}case B.NOFRAMES:{es(e,r);break}}}function o3e(e,r){r.tagID===B.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==B.FRAMESET&&(e.insertionMode=de.AFTER_FRAMESET))}function a3e(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.NOFRAMES:{es(e,r);break}}}function i3e(e,r){r.tagID===B.HTML&&(e.insertionMode=de.AFTER_AFTER_FRAMESET)}function s3e(e,r){r.tagID===B.HTML?Mo(e,r):bx(e,r)}function bx(e,r){e.insertionMode=de.IN_BODY,px(e,r)}function l3e(e,r){switch(r.tagID){case B.HTML:{Mo(e,r);break}case B.NOFRAMES:{es(e,r);break}}}function c3e(e,r){r.chars=Xr,e._insertCharacters(r)}function u3e(e,r){e._insertCharacters(r),e.framesetOk=!1}function Ij(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==je.HTML&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function d3e(e,r){if(Cve(r))Ij(e),e._startTagOutsideForeignContent(r);else{const n=e._getAdjustedCurrentElement(),o=e.treeAdapter.getNamespaceURI(n);o===je.MATHML?mj(r):o===je.SVG&&(Tve(r),gj(r)),d8(r),r.selfClosing?e._appendElement(r,o):e._insertElement(r,o),r.ackSelfClosing=!0}}function p3e(e,r){if(r.tagID===B.P||r.tagID===B.BR){Ij(e),e._endTagOutsideForeignContent(r);return}for(let n=e.openElements.stackTop;n>0;n--){const o=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(o)===je.HTML){e._endTagOutsideForeignContent(r);break}const a=e.treeAdapter.getTagName(o);if(a.toLowerCase()===r.tagName){r.tagName=a,e.openElements.shortenToLength(n);break}}}ve.AREA,ve.BASE,ve.BASEFONT,ve.BGSOUND,ve.BR,ve.COL,ve.EMBED,ve.FRAME,ve.HR,ve.IMG,ve.INPUT,ve.KEYGEN,ve.LINK,ve.META,ve.PARAM,ve.SOURCE,ve.TRACK,ve.WBR;const vx=Oj("end"),rc=Oj("start");function Oj(e){return r;function r(n){const o=n&&n.position&&n.position[e]||{};if(typeof o.line=="number"&&o.line>0&&typeof o.column=="number"&&o.column>0)return{line:o.line,column:o.column,offset:typeof o.offset=="number"&&o.offset>-1?o.offset:void 0}}}function jj(e){const r=rc(e),n=vx(e);if(r&&n)return{start:r,end:n}}const xx=(function(e){if(e==null)return g3e;if(typeof e=="function")return wx(e);if(typeof e=="object")return Array.isArray(e)?h3e(e):f3e(e);if(typeof e=="string")return m3e(e);throw new Error("Expected function, string, or object as test")});function h3e(e){const r=[];let n=-1;for(;++n":""))+")"})}return f;function f(){let g=Lj,b,x,w;if((!r||i(c,u,d[d.length-1]||void 0))&&(g=x3e(n(c,d)),g[0]===b8))return g;if("children"in c&&c.children){const k=c;if(k.children&&g[0]!==v3e)for(x=(o?k.children.length:-1)+s,w=d.concat(k);x>-1&&x])/gi,k3e=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),Fj={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Hj(e,r){const n=$3e(e),o=a8("type",{handlers:{root:_3e,element:E3e,text:S3e,comment:qj,doctype:C3e,raw:A3e},unknown:R3e}),a={parser:n?new vj(Fj):vj.getFragmentParser(void 0,Fj),handle(l){o(l,a)},stitches:!1,options:r||{}};o(e,a),mf(a,rc());const i=n?a.parser.document:a.parser.getFragment(),s=gbe(i,{file:a.options.file});return a.stitches&&v8(s,"comment",function(l,c,u){const d=l;if(d.value.stitch&&u&&c!==void 0){const h=u.children;return h[c]=d.value.stitch,c}}),s.type==="root"&&s.children.length===1&&s.children[0].type===e.type?s.children[0]:s}function Vj(e,r){let n=-1;if(e)for(;++n4&&(r.parser.tokenizer.state=0);const n={type:Kt.CHARACTER,chars:e.value,location:z1(e)};mf(r,rc(e)),r.parser.currentToken=n,r.parser._processToken(r.parser.currentToken)}function C3e(e,r){const n={type:Kt.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:z1(e)};mf(r,rc(e)),r.parser.currentToken=n,r.parser._processToken(r.parser.currentToken)}function T3e(e,r){r.stitches=!0;const n=M3e(e);if("children"in e&&"children"in n){const o=Hj({type:"root",children:e.children},r.options);n.children=o.children}qj({type:"comment",value:{stitch:n}},r)}function qj(e,r){const n=e.value,o={type:Kt.COMMENT,data:n,location:z1(e)};mf(r,rc(e)),r.parser.currentToken=o,r.parser._processToken(r.parser.currentToken)}function A3e(e,r){if(r.parser.tokenizer.preprocessor.html="",r.parser.tokenizer.preprocessor.pos=-1,r.parser.tokenizer.preprocessor.lastGapPos=-2,r.parser.tokenizer.preprocessor.gapStack=[],r.parser.tokenizer.preprocessor.skipNextNewLine=!1,r.parser.tokenizer.preprocessor.lastChunkWritten=!1,r.parser.tokenizer.preprocessor.endOfChunkHit=!1,r.parser.tokenizer.preprocessor.isEol=!1,Uj(r,rc(e)),r.parser.tokenizer.write(r.options.tagfilter?e.value.replace(w3e,"<$1$2"):e.value,!1),r.parser.tokenizer._runParsingLoop(),r.parser.tokenizer.state===72||r.parser.tokenizer.state===78){r.parser.tokenizer.preprocessor.lastChunkWritten=!0;const n=r.parser.tokenizer._consume();r.parser.tokenizer._callState(n)}}function R3e(e,r){const n=e;if(r.options.passThrough&&r.options.passThrough.includes(n.type))T3e(n,r);else{let o="";throw k3e.has(n.type)&&(o=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+n.type+"` node"+o)}}function mf(e,r){Uj(e,r);const n=e.parser.tokenizer.currentCharacterToken;n&&n.location&&(n.location.endLine=e.parser.tokenizer.preprocessor.line,n.location.endCol=e.parser.tokenizer.preprocessor.col+1,n.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=n,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=kn.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function Uj(e,r){if(r&&r.offset!==void 0){const n={startLine:r.line,startCol:r.column,startOffset:r.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-r.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=r.offset,e.parser.tokenizer.preprocessor.line=r.line,e.parser.tokenizer.currentLocation=n}}function N3e(e,r){const n=e.tagName.toLowerCase();if(r.parser.tokenizer.state===kn.PLAINTEXT)return;mf(r,rc(e));const o=r.parser.openElements.current;let a="namespaceURI"in o?o.namespaceURI:Fd.html;a===Fd.html&&n==="svg"&&(a=Fd.svg);const i=Dbe({...e,children:[]},{space:a===Fd.svg?"svg":"html"}),s={type:Kt.START_TAG,tagName:n,tagID:hf(n),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in i?i.attrs:[],location:z1(e)};r.parser.currentToken=s,r.parser._processToken(r.parser.currentToken),r.parser.tokenizer.lastStartTagName=n}function D3e(e,r){const n=e.tagName.toLowerCase();if(!r.parser.tokenizer.inForeignNode&&GO.includes(n)||r.parser.tokenizer.state===kn.PLAINTEXT)return;mf(r,vx(e));const o={type:Kt.END_TAG,tagName:n,tagID:hf(n),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:z1(e)};r.parser.currentToken=o,r.parser._processToken(r.parser.currentToken),n===r.parser.tokenizer.lastStartTagName&&(r.parser.tokenizer.state===kn.RCDATA||r.parser.tokenizer.state===kn.RAWTEXT||r.parser.tokenizer.state===kn.SCRIPT_DATA)&&(r.parser.tokenizer.state=kn.DATA)}function $3e(e){const r=e.type==="root"?e.children[0]:e;return!!(r&&(r.type==="doctype"||r.type==="element"&&r.tagName.toLowerCase()==="html"))}function z1(e){const r=rc(e)||{line:void 0,column:void 0,offset:void 0},n=vx(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:r.line,startCol:r.column,startOffset:r.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}function M3e(e){return"children"in e?Ld({...e,children:[]}):Ld(e)}function P3e(e){return function(r,n){return Hj(r,{...e,file:n})}}const Ud=["ariaDescribedBy","ariaLabel","ariaLabelledBy"],Wj={ancestors:{tbody:["table"],td:["table"],th:["table"],thead:["table"],tfoot:["table"],tr:["table"]},attributes:{a:[...Ud,"dataFootnoteBackref","dataFootnoteRef",["className","data-footnote-backref"],"href"],blockquote:["cite"],code:[["className",/^language-./]],del:["cite"],div:["itemScope","itemType"],dl:[...Ud],h2:[["className","sr-only"]],img:[...Ud,"longDesc","src"],input:[["disabled",!0],["type","checkbox"]],ins:["cite"],li:[["className","task-list-item"]],ol:[...Ud,["className","contains-task-list"]],q:["cite"],section:["dataFootnotes",["className","footnotes"]],source:["srcSet"],summary:[...Ud],table:[...Ud],ul:[...Ud,["className","contains-task-list"]],"*":["abbr","accept","acceptCharset","accessKey","action","align","alt","axis","border","cellPadding","cellSpacing","char","charOff","charSet","checked","clear","colSpan","color","cols","compact","coords","dateTime","dir","encType","frame","hSpace","headers","height","hrefLang","htmlFor","id","isMap","itemProp","label","lang","maxLength","media","method","multiple","name","noHref","noShade","noWrap","open","prompt","readOnly","rev","rowSpan","rows","rules","scope","selected","shape","size","span","start","summary","tabIndex","title","useMap","vAlign","value","width"]},clobber:["ariaDescribedBy","ariaLabelledBy","id","name"],clobberPrefix:"user-content-",protocols:{cite:["http","https"],href:["http","https","irc","ircs","mailto","xmpp"],longDesc:["http","https"],src:["http","https"]},required:{input:{disabled:!0,type:"checkbox"}},strip:["script"],tagNames:["a","b","blockquote","br","code","dd","del","details","div","dl","dt","em","h1","h2","h3","h4","h5","h6","hr","i","img","input","ins","kbd","li","ol","p","picture","pre","q","rp","rt","ruby","s","samp","section","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","tr","tt","ul","var"]},fu={}.hasOwnProperty;function z3e(e,r){let n={type:"root",children:[]};const o={schema:r?{...Wj,...r}:Wj,stack:[]},a=Yj(o,e);return a&&(Array.isArray(a)?a.length===1?n=a[0]:n.children=a:n=a),n}function Yj(e,r){if(r&&typeof r=="object"){const n=r;switch(typeof n.type=="string"?n.type:""){case"comment":return I3e(e,n);case"doctype":return O3e(e,n);case"element":return j3e(e,n);case"root":return L3e(e,n);case"text":return B3e(e,n)}}}function I3e(e,r){if(e.schema.allowComments){const n=typeof r.value=="string"?r.value:"",o=n.indexOf("-->"),i={type:"comment",value:o<0?n:n.slice(0,o)};return I1(i,r),i}}function O3e(e,r){if(e.schema.allowDoctypes){const n={type:"doctype"};return I1(n,r),n}}function j3e(e,r){const n=typeof r.tagName=="string"?r.tagName:"";e.stack.push(n);const o=Gj(e,r.children),a=F3e(e,r.properties);e.stack.pop();let i=!1;if(n&&n!=="*"&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(i=!0,e.schema.ancestors&&fu.call(e.schema.ancestors,n))){const l=e.schema.ancestors[n];let c=-1;for(i=!1;++c1){let a=!1,i=0;for(;++i-1&&i>c||s>-1&&i>s||l>-1&&i>l)return!0;let u=-1;for(;++u4&&r.slice(0,4).toLowerCase()==="data")return n}function q3e(e){return function(r){return z3e(r,e)}}const U3e=/["&'<>`]/g,W3e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Y3e=/[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,G3e=/[|\\{}()[\]^$+*?.]/g,Qj=new WeakMap;function X3e(e,r){if(e=e.replace(r.subset?K3e(r.subset):U3e,o),r.subset||r.escapeOnly)return e;return e.replace(W3e,n).replace(Y3e,o);function n(a,i,s){return r.format((a.charCodeAt(0)-55296)*1024+a.charCodeAt(1)-56320+65536,s.charCodeAt(i+2),r)}function o(a,i,s){return r.format(a.charCodeAt(0),s.charCodeAt(i+1),r)}}function K3e(e){let r=Qj.get(e);return r||(r=Z3e(e),Qj.set(e,r)),r}function Z3e(e){const r=[];let n=-1;for(;++n",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},n2e=["cent","copy","divide","gt","lt","not","para","times"],Jj={}.hasOwnProperty,w8={};let kx;for(kx in x8)Jj.call(x8,kx)&&(w8[x8[kx]]=kx);const o2e=/[^\dA-Za-z]/;function a2e(e,r,n,o){const a=String.fromCharCode(e);if(Jj.call(w8,a)){const i=w8[a],s="&"+i;return n&&r2e.includes(i)&&!n2e.includes(i)&&(!o||r&&r!==61&&o2e.test(String.fromCharCode(r)))?s:s+";"}return""}function i2e(e,r,n){let o=J3e(e,r,n.omitOptionalSemicolons),a;if((n.useNamedReferences||n.useShortestReferences)&&(a=a2e(e,r,n.omitOptionalSemicolons,n.attribute)),(n.useShortestReferences||!a)&&n.useShortestReferences){const i=t2e(e,r,n.omitOptionalSemicolons);i.length|^->||--!>|"],c2e=["<",">"];function u2e(e,r,n,o){return o.settings.bogusComments?"":"";function a(i){return gf(i,Object.assign({},o.settings.characterReferences,{subset:c2e}))}}function d2e(e,r,n,o){return""}function _x(e,r){const n=String(e);if(typeof r!="string")throw new TypeError("Expected character");let o=0,a=n.indexOf(r);for(;a!==-1;)o++,a=n.indexOf(r,a+r.length);return o}const p2e=/[ \t\n\f\r]/g;function k8(e){return typeof e=="object"?e.type==="text"?eL(e.value):!1:eL(e)}function eL(e){return e.replace(p2e,"")===""}const Gn=rL(1),tL=rL(-1),h2e=[];function rL(e){return r;function r(n,o,a){const i=n?n.children:h2e;let s=(o||0)+e,l=i[s];if(!a)for(;l&&k8(l);)s+=e,l=i[s];return l}}const f2e={}.hasOwnProperty;function nL(e){return r;function r(n,o,a){return f2e.call(e,n.tagName)&&e[n.tagName](n,o,a)}}const _8=nL({body:g2e,caption:E8,colgroup:E8,dd:x2e,dt:v2e,head:E8,html:m2e,li:b2e,optgroup:w2e,option:k2e,p:y2e,rp:oL,rt:oL,tbody:E2e,td:aL,tfoot:S2e,th:aL,thead:_2e,tr:C2e});function E8(e,r,n){const o=Gn(n,r,!0);return!o||o.type!=="comment"&&!(o.type==="text"&&k8(o.value.charAt(0)))}function m2e(e,r,n){const o=Gn(n,r);return!o||o.type!=="comment"}function g2e(e,r,n){const o=Gn(n,r);return!o||o.type!=="comment"}function y2e(e,r,n){const o=Gn(n,r);return o?o.type==="element"&&(o.tagName==="address"||o.tagName==="article"||o.tagName==="aside"||o.tagName==="blockquote"||o.tagName==="details"||o.tagName==="div"||o.tagName==="dl"||o.tagName==="fieldset"||o.tagName==="figcaption"||o.tagName==="figure"||o.tagName==="footer"||o.tagName==="form"||o.tagName==="h1"||o.tagName==="h2"||o.tagName==="h3"||o.tagName==="h4"||o.tagName==="h5"||o.tagName==="h6"||o.tagName==="header"||o.tagName==="hgroup"||o.tagName==="hr"||o.tagName==="main"||o.tagName==="menu"||o.tagName==="nav"||o.tagName==="ol"||o.tagName==="p"||o.tagName==="pre"||o.tagName==="section"||o.tagName==="table"||o.tagName==="ul"):!n||!(n.type==="element"&&(n.tagName==="a"||n.tagName==="audio"||n.tagName==="del"||n.tagName==="ins"||n.tagName==="map"||n.tagName==="noscript"||n.tagName==="video"))}function b2e(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&o.tagName==="li"}function v2e(e,r,n){const o=Gn(n,r);return!!(o&&o.type==="element"&&(o.tagName==="dt"||o.tagName==="dd"))}function x2e(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&(o.tagName==="dt"||o.tagName==="dd")}function oL(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&(o.tagName==="rp"||o.tagName==="rt")}function w2e(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&o.tagName==="optgroup"}function k2e(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&(o.tagName==="option"||o.tagName==="optgroup")}function _2e(e,r,n){const o=Gn(n,r);return!!(o&&o.type==="element"&&(o.tagName==="tbody"||o.tagName==="tfoot"))}function E2e(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&(o.tagName==="tbody"||o.tagName==="tfoot")}function S2e(e,r,n){return!Gn(n,r)}function C2e(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&o.tagName==="tr"}function aL(e,r,n){const o=Gn(n,r);return!o||o.type==="element"&&(o.tagName==="td"||o.tagName==="th")}const T2e=nL({body:N2e,colgroup:D2e,head:R2e,html:A2e,tbody:$2e});function A2e(e){const r=Gn(e,-1);return!r||r.type!=="comment"}function R2e(e){const r=new Set;for(const o of e.children)if(o.type==="element"&&(o.tagName==="base"||o.tagName==="title")){if(r.has(o.tagName))return!1;r.add(o.tagName)}const n=e.children[0];return!n||n.type==="element"}function N2e(e){const r=Gn(e,-1,!0);return!r||r.type!=="comment"&&!(r.type==="text"&&k8(r.value.charAt(0)))&&!(r.type==="element"&&(r.tagName==="meta"||r.tagName==="link"||r.tagName==="script"||r.tagName==="style"||r.tagName==="template"))}function D2e(e,r,n){const o=tL(n,r),a=Gn(e,-1,!0);return n&&o&&o.type==="element"&&o.tagName==="colgroup"&&_8(o,n.children.indexOf(o),n)?!1:!!(a&&a.type==="element"&&a.tagName==="col")}function $2e(e,r,n){const o=tL(n,r),a=Gn(e,-1);return n&&o&&o.type==="element"&&(o.tagName==="thead"||o.tagName==="tbody")&&_8(o,n.children.indexOf(o),n)?!1:!!(a&&a.type==="element"&&a.tagName==="tr")}const Ex={name:[[` +\f\r &/=>`.split(""),` +\f\r "&'/=>\``.split("")],[`\0 +\f\r "&'/<=>`.split(""),`\0 +\f\r "&'/<=>\``.split("")]],unquoted:[[` +\f\r &>`.split(""),`\0 +\f\r "&'<=>\``.split("")],[`\0 +\f\r "&'<=>\``.split(""),`\0 +\f\r "&'<=>\``.split("")]],single:[["&'".split(""),"\"&'`".split("")],["\0&'".split(""),"\0\"&'`".split("")]],double:[['"&'.split(""),"\"&'`".split("")],['\0"&'.split(""),"\0\"&'`".split("")]]};function M2e(e,r,n,o){const a=o.schema,i=a.space==="svg"?!1:o.settings.omitOptionalTags;let s=a.space==="svg"?o.settings.closeEmptyElements:o.settings.voids.includes(e.tagName.toLowerCase());const l=[];let c;a.space==="html"&&e.tagName==="svg"&&(o.schema=_1);const u=P2e(o,e.properties),d=o.all(a.space==="html"&&e.tagName==="template"?e.content:e);return o.schema=a,d&&(s=!1),(u||!i||!T2e(e,r,n))&&(l.push("<",e.tagName,u?" "+u:""),s&&(a.space==="svg"||o.settings.closeSelfClosing)&&(c=u.charAt(u.length-1),(!o.settings.tightSelfClosing||c==="/"||c&&c!=='"'&&c!=="'")&&l.push(" "),l.push("/")),l.push(">")),l.push(d),!s&&(!i||!_8(e,r,n))&&l.push(""),l.join("")}function P2e(e,r){const n=[];let o=-1,a;if(r){for(a in r)if(r[a]!==null&&r[a]!==void 0){const i=z2e(e,a,r[a]);i&&n.push(i)}}for(;++o_x(n,e.alternative)&&(s=e.alternative),l=s+gf(n,Object.assign({},e.settings.characterReferences,{subset:(s==="'"?Ex.single:Ex.double)[a][i],attribute:!0}))+s),c+(l&&"="+l))}const I2e=["<","&"];function iL(e,r,n,o){return n&&n.type==="element"&&(n.tagName==="script"||n.tagName==="style")?e.value:gf(e.value,Object.assign({},o.settings.characterReferences,{subset:I2e}))}function O2e(e,r,n,o){return o.settings.allowDangerousHtml?e.value:iL(e,r,n,o)}function j2e(e,r,n,o){return o.all(e)}const L2e=a8("type",{invalid:B2e,unknown:F2e,handlers:{comment:u2e,doctype:d2e,element:M2e,raw:O2e,root:j2e,text:iL}});function B2e(e){throw new Error("Expected node, not `"+e+"`")}function F2e(e){const r=e;throw new Error("Cannot compile unknown node `"+r.type+"`")}const H2e={},V2e={},q2e=[];function U2e(e,r){const n=r||H2e,o=n.quote||'"',a=o==='"'?"'":'"';if(o!=='"'&&o!=="'")throw new Error("Invalid quote `"+o+"`, expected `'` or `\"`");return{one:W2e,all:Y2e,settings:{omitOptionalTags:n.omitOptionalTags||!1,allowParseErrors:n.allowParseErrors||!1,allowDangerousCharacters:n.allowDangerousCharacters||!1,quoteSmart:n.quoteSmart||!1,preferUnquoted:n.preferUnquoted||!1,tightAttributes:n.tightAttributes||!1,upperDoctype:n.upperDoctype||!1,tightDoctype:n.tightDoctype||!1,bogusComments:n.bogusComments||!1,tightCommaSeparatedLists:n.tightCommaSeparatedLists||!1,tightSelfClosing:n.tightSelfClosing||!1,collapseEmptyAttributes:n.collapseEmptyAttributes||!1,allowDangerousHtml:n.allowDangerousHtml||!1,voids:n.voids||GO,characterReferences:n.characterReferences||V2e,closeSelfClosing:n.closeSelfClosing||!1,closeEmptyElements:n.closeEmptyElements||!1},schema:n.space==="svg"?_1:lx,quote:o,alternative:a}.one(Array.isArray(e)?{type:"root",children:e}:e,void 0,void 0)}function W2e(e,r,n){return L2e(e,r,n,this)}function Y2e(e){const r=[],n=e&&e.children||q2e;let o=-1;for(;++o-1&&e.test(String.fromCharCode(n))}}function Q2e(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function J2e(e,r,n){const a=xx((n||{}).ignore||[]),i=ewe(r);let s=-1;for(;++s0?{type:"text",value:R}:void 0),R===!1?f.lastIndex=T+1:(b!==T&&C.push({type:"text",value:u.value.slice(b,T)}),Array.isArray(R)?C.push(...R):R&&C.push(R),b=T+_[0].length,k=!0),!f.global)break;_=f.exec(u.value)}return k?(b?\]}]+$/.exec(e);if(!r)return[e,void 0];e=e.slice(0,r.index);let n=r[0],o=n.indexOf(")");const a=_x(e,"(");let i=_x(e,")");for(;o!==-1&&a>i;)e+=n.slice(0,o+1),n=n.slice(o+1),o=n.indexOf(")"),i++;return[e,n]}function sL(e,r){const n=e.input.charCodeAt(e.index-1);return(e.index===0||Wd(n)||Cx(n))&&(!r||n!==47)}function ts(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}lL.peek=_we;function mwe(){this.buffer()}function gwe(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function ywe(){this.buffer()}function bwe(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function vwe(e){const r=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=ts(this.sliceSerialize(e)).toLowerCase(),n.label=r}function xwe(e){this.exit(e)}function wwe(e){const r=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=ts(this.sliceSerialize(e)).toLowerCase(),n.label=r}function kwe(e){this.exit(e)}function _we(){return"["}function lL(e,r,n,o){const a=n.createTracker(o);let i=a.move("[^");const s=n.enter("footnoteReference"),l=n.enter("reference");return i+=a.move(n.safe(n.associationId(e),{after:"]",before:i})),l(),s(),i+=a.move("]"),i}function Ewe(){return{enter:{gfmFootnoteCallString:mwe,gfmFootnoteCall:gwe,gfmFootnoteDefinitionLabelString:ywe,gfmFootnoteDefinition:bwe},exit:{gfmFootnoteCallString:vwe,gfmFootnoteCall:xwe,gfmFootnoteDefinitionLabelString:wwe,gfmFootnoteDefinition:kwe}}}function Swe(e){let r=!1;return e&&e.firstLineBlank&&(r=!0),{handlers:{footnoteDefinition:n,footnoteReference:lL},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(o,a,i,s){const l=i.createTracker(s);let c=l.move("[^");const u=i.enter("footnoteDefinition"),d=i.enter("label");return c+=l.move(i.safe(i.associationId(o),{before:c,after:"]"})),d(),c+=l.move("]:"),o.children&&o.children.length>0&&(l.shift(4),c+=l.move((r?` +`:" ")+i.indentLines(i.containerFlow(o,l.current()),r?cL:Cwe))),u(),c}}function Cwe(e,r,n){return r===0?e:cL(e,r,n)}function cL(e,r,n){return(n?"":" ")+e}const Twe=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];uL.peek=$we;function Awe(){return{canContainEols:["delete"],enter:{strikethrough:Nwe},exit:{strikethrough:Dwe}}}function Rwe(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Twe}],handlers:{delete:uL}}}function Nwe(e){this.enter({type:"delete",children:[]},e)}function Dwe(e){this.exit(e)}function uL(e,r,n,o){const a=n.createTracker(o),i=n.enter("strikethrough");let s=a.move("~~");return s+=n.containerPhrasing(e,{...a.current(),before:s,after:"~"}),s+=a.move("~~"),i(),s}function $we(){return"~"}function Mwe(e){return e.length}function Pwe(e,r){const n=r||{},o=(n.align||[]).concat(),a=n.stringLength||Mwe,i=[],s=[],l=[],c=[];let u=0,d=-1;for(;++du&&(u=e[d].length);++kc[k])&&(c[k]=_)}x.push(C)}s[d]=x,l[d]=w}let h=-1;if(typeof o=="object"&&"length"in o)for(;++hc[h]&&(c[h]=C),g[h]=C),f[h]=_}s.splice(1,0,f),l.splice(1,0,g),d=-1;const b=[];for(;++d "),i.shift(2);const s=n.indentLines(n.containerFlow(e,i.current()),Owe);return a(),s}function Owe(e,r,n){return">"+(n?"":" ")+e}function jwe(e,r){return pL(e,r.inConstruct,!0)&&!pL(e,r.notInConstruct,!1)}function pL(e,r,n){if(typeof r=="string"&&(r=[r]),!r||r.length===0)return n;let o=-1;for(;++os&&(s=i):i=1,a=o+r.length,o=n.indexOf(r,a);return s}function Bwe(e,r){return!!(r.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Fwe(e){const r=e.options.fence||"`";if(r!=="`"&&r!=="~")throw new Error("Cannot serialize code with `"+r+"` for `options.fence`, expected `` ` `` or `~`");return r}function Hwe(e,r,n,o){const a=Fwe(n),i=e.value||"",s=a==="`"?"GraveAccent":"Tilde";if(Bwe(e,n)){const h=n.enter("codeIndented"),f=n.indentLines(i,Vwe);return h(),f}const l=n.createTracker(o),c=a.repeat(Math.max(Lwe(i,a)+1,3)),u=n.enter("codeFenced");let d=l.move(c);if(e.lang){const h=n.enter(`codeFencedLang${s}`);d+=l.move(n.safe(e.lang,{before:d,after:" ",encode:["`"],...l.current()})),h()}if(e.lang&&e.meta){const h=n.enter(`codeFencedMeta${s}`);d+=l.move(" "),d+=l.move(n.safe(e.meta,{before:d,after:` +`,encode:["`"],...l.current()})),h()}return d+=l.move(` +`),i&&(d+=l.move(i+` +`)),d+=l.move(c),u(),d}function Vwe(e,r,n){return(n?"":" ")+e}function R8(e){const r=e.options.quote||'"';if(r!=='"'&&r!=="'")throw new Error("Cannot serialize title with `"+r+"` for `options.quote`, expected `\"`, or `'`");return r}function qwe(e,r,n,o){const a=R8(n),i=a==='"'?"Quote":"Apostrophe",s=n.enter("definition");let l=n.enter("label");const c=n.createTracker(o);let u=c.move("[");return u+=c.move(n.safe(n.associationId(e),{before:u,after:"]",...c.current()})),u+=c.move("]: "),l(),!e.url||/[\0- \u007F]/.test(e.url)?(l=n.enter("destinationLiteral"),u+=c.move("<"),u+=c.move(n.safe(e.url,{before:u,after:">",...c.current()})),u+=c.move(">")):(l=n.enter("destinationRaw"),u+=c.move(n.safe(e.url,{before:u,after:e.title?" ":` +`,...c.current()}))),l(),e.title&&(l=n.enter(`title${i}`),u+=c.move(" "+a),u+=c.move(n.safe(e.title,{before:u,after:a,...c.current()})),u+=c.move(a),l()),s(),u}function Uwe(e){const r=e.options.emphasis||"*";if(r!=="*"&&r!=="_")throw new Error("Cannot serialize emphasis with `"+r+"` for `options.emphasis`, expected `*`, or `_`");return r}function O1(e){return"&#x"+e.toString(16).toUpperCase()+";"}function yf(e){if(e===null||Pr(e)||Wd(e))return 1;if(Cx(e))return 2}function Tx(e,r,n){const o=yf(e),a=yf(r);return o===void 0?a===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:o===1?a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}fL.peek=Wwe;function fL(e,r,n,o){const a=Uwe(n),i=n.enter("emphasis"),s=n.createTracker(o),l=s.move(a);let c=s.move(n.containerPhrasing(e,{after:a,before:l,...s.current()}));const u=c.charCodeAt(0),d=Tx(o.before.charCodeAt(o.before.length-1),u,a);d.inside&&(c=O1(u)+c.slice(1));const h=c.charCodeAt(c.length-1),f=Tx(o.after.charCodeAt(0),h,a);f.inside&&(c=c.slice(0,-1)+O1(h));const g=s.move(a);return i(),n.attentionEncodeSurroundingInfo={after:f.outside,before:d.outside},l+c+g}function Wwe(e,r,n){return n.options.emphasis||"*"}const Ywe={};function Ax(e,r){const n=r||Ywe,o=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,a=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return mL(e,o,a)}function mL(e,r,n){if(Gwe(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(r&&"alt"in e&&e.alt)return e.alt;if("children"in e)return gL(e.children,r,n)}return Array.isArray(e)?gL(e,r,n):""}function gL(e,r,n){const o=[];let a=-1;for(;++a",...c.current()})),u+=c.move(">")):(l=n.enter("destinationRaw"),u+=c.move(n.safe(e.url,{before:u,after:e.title?" ":")",...c.current()}))),l(),e.title&&(l=n.enter(`title${i}`),u+=c.move(" "+a),u+=c.move(n.safe(e.title,{before:u,after:a,...c.current()})),u+=c.move(a),l()),u+=c.move(")"),s(),u}function Qwe(){return"!"}vL.peek=Jwe;function vL(e,r,n,o){const a=e.referenceType,i=n.enter("imageReference");let s=n.enter("label");const l=n.createTracker(o);let c=l.move("![");const u=n.safe(e.alt,{before:c,after:"]",...l.current()});c+=l.move(u+"]["),s();const d=n.stack;n.stack=[],s=n.enter("reference");const h=n.safe(n.associationId(e),{before:c,after:"]",...l.current()});return s(),n.stack=d,i(),a==="full"||!u||u!==h?c+=l.move(h+"]"):a==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function Jwe(){return"!"}xL.peek=e4e;function xL(e,r,n){let o=e.value||"",a="`",i=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(o);)a+="`";for(/[^ \r\n]/.test(o)&&(/^[ \r\n]/.test(o)&&/[ \r\n]$/.test(o)||/^`|`$/.test(o))&&(o=" "+o+" ");++i\u007F]/.test(e.url))}kL.peek=t4e;function kL(e,r,n,o){const a=R8(n),i=a==='"'?"Quote":"Apostrophe",s=n.createTracker(o);let l,c;if(wL(e,n)){const d=n.stack;n.stack=[],l=n.enter("autolink");let h=s.move("<");return h+=s.move(n.containerPhrasing(e,{before:h,after:">",...s.current()})),h+=s.move(">"),l(),n.stack=d,h}l=n.enter("link"),c=n.enter("label");let u=s.move("[");return u+=s.move(n.containerPhrasing(e,{before:u,after:"](",...s.current()})),u+=s.move("]("),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter("destinationLiteral"),u+=s.move("<"),u+=s.move(n.safe(e.url,{before:u,after:">",...s.current()})),u+=s.move(">")):(c=n.enter("destinationRaw"),u+=s.move(n.safe(e.url,{before:u,after:e.title?" ":")",...s.current()}))),c(),e.title&&(c=n.enter(`title${i}`),u+=s.move(" "+a),u+=s.move(n.safe(e.title,{before:u,after:a,...s.current()})),u+=s.move(a),c()),u+=s.move(")"),l(),u}function t4e(e,r,n){return wL(e,n)?"<":"["}_L.peek=r4e;function _L(e,r,n,o){const a=e.referenceType,i=n.enter("linkReference");let s=n.enter("label");const l=n.createTracker(o);let c=l.move("[");const u=n.containerPhrasing(e,{before:c,after:"]",...l.current()});c+=l.move(u+"]["),s();const d=n.stack;n.stack=[],s=n.enter("reference");const h=n.safe(n.associationId(e),{before:c,after:"]",...l.current()});return s(),n.stack=d,i(),a==="full"||!u||u!==h?c+=l.move(h+"]"):a==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function r4e(){return"["}function N8(e){const r=e.options.bullet||"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bullet`, expected `*`, `+`, or `-`");return r}function n4e(e){const r=N8(e),n=e.options.bulletOther;if(!n)return r==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===r)throw new Error("Expected `bullet` (`"+r+"`) and `bulletOther` (`"+n+"`) to be different");return n}function o4e(e){const r=e.options.bulletOrdered||".";if(r!=="."&&r!==")")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOrdered`, expected `.` or `)`");return r}function EL(e){const r=e.options.rule||"*";if(r!=="*"&&r!=="-"&&r!=="_")throw new Error("Cannot serialize rules with `"+r+"` for `options.rule`, expected `*`, `-`, or `_`");return r}function a4e(e,r,n,o){const a=n.enter("list"),i=n.bulletCurrent;let s=e.ordered?o4e(n):N8(n);const l=e.ordered?s==="."?")":".":n4e(n);let c=r&&n.bulletLastUsed?s===n.bulletLastUsed:!1;if(!e.ordered){const d=e.children?e.children[0]:void 0;if((s==="*"||s==="-")&&d&&(!d.children||!d.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),EL(n)===s&&d){let h=-1;for(;++h-1?r.start:1)+(n.options.incrementListMarker===!1?0:r.children.indexOf(e))+i);let s=i.length+1;(a==="tab"||a==="mixed"&&(r&&r.type==="list"&&r.spread||e.spread))&&(s=Math.ceil(s/4)*4);const l=n.createTracker(o);l.move(i+" ".repeat(s-i.length)),l.shift(s);const c=n.enter("listItem"),u=n.indentLines(n.containerFlow(e,l.current()),d);return c(),u;function d(h,f,g){return f?(g?"":" ".repeat(s))+h:(g?i:i+" ".repeat(s-i.length))+h}}function l4e(e,r,n,o){const a=n.enter("paragraph"),i=n.enter("phrasing"),s=n.containerPhrasing(e,o);return i(),a(),s}const c4e=xx(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function u4e(e,r,n,o){return(e.children.some(function(s){return c4e(s)})?n.containerPhrasing:n.containerFlow).call(n,e,o)}function d4e(e){const r=e.options.strong||"*";if(r!=="*"&&r!=="_")throw new Error("Cannot serialize strong with `"+r+"` for `options.strong`, expected `*`, or `_`");return r}SL.peek=p4e;function SL(e,r,n,o){const a=d4e(n),i=n.enter("strong"),s=n.createTracker(o),l=s.move(a+a);let c=s.move(n.containerPhrasing(e,{after:a,before:l,...s.current()}));const u=c.charCodeAt(0),d=Tx(o.before.charCodeAt(o.before.length-1),u,a);d.inside&&(c=O1(u)+c.slice(1));const h=c.charCodeAt(c.length-1),f=Tx(o.after.charCodeAt(0),h,a);f.inside&&(c=c.slice(0,-1)+O1(h));const g=s.move(a+a);return i(),n.attentionEncodeSurroundingInfo={after:f.outside,before:d.outside},l+c+g}function p4e(e,r,n){return n.options.strong||"*"}function h4e(e,r,n,o){return n.safe(e.value,o)}function f4e(e){const r=e.options.ruleRepetition||3;if(r<3)throw new Error("Cannot serialize rules with repetition `"+r+"` for `options.ruleRepetition`, expected `3` or more");return r}function m4e(e,r,n){const o=(EL(n)+(n.options.ruleSpaces?" ":"")).repeat(f4e(n));return n.options.ruleSpaces?o.slice(0,-1):o}const CL={blockquote:Iwe,break:hL,code:Hwe,definition:qwe,emphasis:fL,hardBreak:hL,heading:Kwe,html:yL,image:bL,imageReference:vL,inlineCode:xL,link:kL,linkReference:_L,list:a4e,listItem:s4e,paragraph:l4e,root:u4e,strong:SL,text:h4e,thematicBreak:m4e},TL={AElig:"Æ",AMP:"&",Aacute:"Á",Abreve:"Ă",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atilde:"Ã",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ETH:"Ð",Eacute:"É",Ecaron:"Ě",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacute:"Í",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Map:"⤅",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:` +`,Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacute:"Ó",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslash:"Ø",Otilde:"Õ",Otimes:"⨷",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:" ",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acirc:"â",acute:"´",acy:"а",aelig:"æ",af:"⁡",afr:"𝔞",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedil:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"≖",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",eth:"ð",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacute:"í",ic:"⁣",icirc:"î",icy:"и",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacute:"ó",oast:"⊛",ocir:"⊚",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslash:"ø",osol:"⊘",otilde:"õ",otimes:"⊗",otimesas:"⨶",ouml:"ö",ovbar:"⌽",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thorn:"þ",tilde:"˜",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌"},g4e={}.hasOwnProperty;function D8(e){return g4e.call(TL,e)?TL[e]:!1}function AL(e,r){const n=Number.parseInt(e,r);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}const y4e=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function b4e(e){return e.replace(y4e,v4e)}function v4e(e,r,n){if(r)return r;if(n.charCodeAt(0)===35){const a=n.charCodeAt(1),i=a===120||a===88;return AL(n.slice(i?2:1),i?16:10)}return D8(n)||e}function x4e(){return{enter:{table:w4e,tableData:RL,tableHeader:RL,tableRow:_4e},exit:{codeText:E4e,table:k4e,tableData:$8,tableHeader:$8,tableRow:$8}}}function w4e(e){const r=e._align;this.enter({type:"table",align:r.map(function(n){return n==="none"?null:n}),children:[]},e),this.data.inTable=!0}function k4e(e){this.exit(e),this.data.inTable=void 0}function _4e(e){this.enter({type:"tableRow",children:[]},e)}function $8(e){this.exit(e)}function RL(e){this.enter({type:"tableCell",children:[]},e)}function E4e(e){let r=this.resume();this.data.inTable&&(r=r.replace(/\\([\\|])/g,S4e));const n=this.stack[this.stack.length-1];n.type,n.value=r,this.exit(e)}function S4e(e,r){return r==="|"?r:e}function C4e(e){const r=e||{},n=r.tableCellPadding,o=r.tablePipeAlign,a=r.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:f,table:s,tableCell:c,tableRow:l}};function s(g,b,x,w){return u(d(g,x,w),g.align)}function l(g,b,x,w){const k=h(g,x,w),C=u([k]);return C.slice(0,C.indexOf(` +`))}function c(g,b,x,w){const k=x.enter("tableCell"),C=x.enter("phrasing"),_=x.containerPhrasing(g,{...w,before:i,after:i});return C(),k(),_}function u(g,b){return Pwe(g,{align:b,alignDelimiters:o,padding:n,stringLength:a})}function d(g,b,x){const w=g.children;let k=-1;const C=[],_=b.enter("table");for(;++ka?0:a+r:r=r>a?a:r,n=n>0?n:0,o.length<1e4)s=Array.from(o),s.unshift(r,n),e.splice(...s);else for(n&&e.splice(r,n);i0?(Da(e,e.length,0,r),e):r}const DL={}.hasOwnProperty;function $L(e){const r={};let n=-1;for(;++n0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}function bf(e){const r=[];let n=-1,o=0,a=0;for(;++n55295&&i<57344){const l=e.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(s=String.fromCharCode(i,l),a=1):s="�"}else s=String.fromCharCode(i);s&&(r.push(e.slice(o,n),encodeURIComponent(s)),o=n+a+1,s=""),a&&(n+=a,a=0)}return r.join("")+e.slice(o)}function Rx(e,r,n){const o=[];let a=-1;for(;++a1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const h={...e[o][1].end},f={...e[n][1].start};FL(h,-c),FL(f,c),s={type:c>1?"strongSequence":"emphasisSequence",start:h,end:{...e[o][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:f},i={type:c>1?"strongText":"emphasisText",start:{...e[o][1].end},end:{...e[n][1].start}},a={type:c>1?"strong":"emphasis",start:{...s.start},end:{...l.end}},e[o][1].end={...s.start},e[n][1].start={...l.end},u=[],e[o][1].end.offset-e[o][1].start.offset&&(u=di(u,[["enter",e[o][1],r],["exit",e[o][1],r]])),u=di(u,[["enter",a,r],["enter",s,r],["exit",s,r],["enter",i,r]]),u=di(u,Rx(r.parser.constructs.insideSpan.null,e.slice(o+1,n),r)),u=di(u,[["exit",i,r],["enter",l,r],["exit",l,r],["exit",a,r]]),e[n][1].end.offset-e[n][1].start.offset?(d=2,u=di(u,[["enter",e[n][1],r],["exit",e[n][1],r]])):d=0,Da(e,o-1,n-o+3,u),n=o+u.length-d-2;break}}for(n=-1;++n0&&Jt(R)?lr(e,C,"linePrefix",i+1)(R):C(R)}function C(R){return R===null||Et(R)?e.check(UL,x,T)(R):(e.enter("codeFlowValue"),_(R))}function _(R){return R===null||Et(R)?(e.exit("codeFlowValue"),C(R)):(e.consume(R),_)}function T(R){return e.exit("codeFenced"),r(R)}function A(R,D,N){let M=0;return O;function O(V){return R.enter("lineEnding"),R.consume(V),R.exit("lineEnding"),F}function F(V){return R.enter("codeFencedFence"),Jt(V)?lr(R,L,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(V):L(V)}function L(V){return V===l?(R.enter("codeFencedFenceSequence"),U(V)):N(V)}function U(V){return V===l?(M++,R.consume(V),U):M>=s?(R.exit("codeFencedFenceSequence"),Jt(V)?lr(R,P,"whitespace")(V):P(V)):N(V)}function P(V){return V===null||Et(V)?(R.exit("codeFencedFence"),D(V)):N(V)}}}function nke(e,r,n){const o=this;return a;function a(s){return s===null?n(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i)}function i(s){return o.parser.lazy[o.now().line]?n(s):r(s)}}const I8={name:"codeIndented",tokenize:ake},oke={partial:!0,tokenize:ike};function ake(e,r,n){const o=this;return a;function a(u){return e.enter("codeIndented"),lr(e,i,"linePrefix",5)(u)}function i(u){const d=o.events[o.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?s(u):n(u)}function s(u){return u===null?c(u):Et(u)?e.attempt(oke,s,c)(u):(e.enter("codeFlowValue"),l(u))}function l(u){return u===null||Et(u)?(e.exit("codeFlowValue"),s(u)):(e.consume(u),l)}function c(u){return e.exit("codeIndented"),r(u)}}function ike(e,r,n){const o=this;return a;function a(s){return o.parser.lazy[o.now().line]?n(s):Et(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a):lr(e,i,"linePrefix",5)(s)}function i(s){const l=o.events[o.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?r(s):Et(s)?a(s):n(s)}}const ske={name:"codeText",previous:cke,resolve:lke,tokenize:uke};function lke(e){let r=e.length-4,n=3,o,a;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[r][1].type==="lineEnding"||e[r][1].type==="space")){for(o=n;++o=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+r+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return rthis.left.length?this.right.slice(this.right.length-o+this.left.length,this.right.length-r+this.left.length).reverse():this.left.slice(r).concat(this.right.slice(this.right.length-o+this.left.length).reverse())}splice(r,n,o){const a=n||0;this.setCursor(Math.trunc(r));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return o&&L1(this.left,o),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(r){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(r)}pushMany(r){this.setCursor(Number.POSITIVE_INFINITY),L1(this.left,r)}unshift(r){this.setCursor(0),this.right.push(r)}unshiftMany(r){this.setCursor(0),L1(this.right,r.reverse())}setCursor(r){if(!(r===this.left.length||r>this.left.length&&this.right.length===0||r<0&&this.left.length===0))if(r=4?r(s):e.interrupt(o.parser.constructs.flow,n,r)(s)}}function GL(e,r,n,o,a,i,s,l,c){const u=c||Number.POSITIVE_INFINITY;let d=0;return h;function h(k){return k===60?(e.enter(o),e.enter(a),e.enter(i),e.consume(k),e.exit(i),f):k===null||k===32||k===41||Sx(k)?n(k):(e.enter(o),e.enter(s),e.enter(l),e.enter("chunkString",{contentType:"string"}),x(k))}function f(k){return k===62?(e.enter(i),e.consume(k),e.exit(i),e.exit(a),e.exit(o),r):(e.enter(l),e.enter("chunkString",{contentType:"string"}),g(k))}function g(k){return k===62?(e.exit("chunkString"),e.exit(l),f(k)):k===null||k===60||Et(k)?n(k):(e.consume(k),k===92?b:g)}function b(k){return k===60||k===62||k===92?(e.consume(k),g):g(k)}function x(k){return!d&&(k===null||k===41||Pr(k))?(e.exit("chunkString"),e.exit(l),e.exit(s),e.exit(o),r(k)):d999||g===null||g===91||g===93&&!c||g===94&&!l&&"_hiddenFootnoteSupport"in s.parser.constructs?n(g):g===93?(e.exit(i),e.enter(a),e.consume(g),e.exit(a),e.exit(o),r):Et(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===null||g===91||g===93||Et(g)||l++>999?(e.exit("chunkString"),d(g)):(e.consume(g),c||(c=!Jt(g)),g===92?f:h)}function f(g){return g===91||g===92||g===93?(e.consume(g),l++,h):h(g)}}function KL(e,r,n,o,a,i){let s;return l;function l(f){return f===34||f===39||f===40?(e.enter(o),e.enter(a),e.consume(f),e.exit(a),s=f===40?41:f,c):n(f)}function c(f){return f===s?(e.enter(a),e.consume(f),e.exit(a),e.exit(o),r):(e.enter(i),u(f))}function u(f){return f===s?(e.exit(i),c(s)):f===null?n(f):Et(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),lr(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(f))}function d(f){return f===s||f===null||Et(f)?(e.exit("chunkString"),u(f)):(e.consume(f),f===92?h:d)}function h(f){return f===s||f===92?(e.consume(f),d):d(f)}}function B1(e,r){let n;return o;function o(a){return Et(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),n=!0,o):Jt(a)?lr(e,o,n?"linePrefix":"lineSuffix")(a):r(a)}}const bke={name:"definition",tokenize:xke},vke={partial:!0,tokenize:wke};function xke(e,r,n){const o=this;let a;return i;function i(g){return e.enter("definition"),s(g)}function s(g){return XL.call(o,e,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(g)}function l(g){return a=ts(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)),g===58?(e.enter("definitionMarker"),e.consume(g),e.exit("definitionMarker"),c):n(g)}function c(g){return Pr(g)?B1(e,u)(g):u(g)}function u(g){return GL(e,d,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(g)}function d(g){return e.attempt(vke,h,h)(g)}function h(g){return Jt(g)?lr(e,f,"whitespace")(g):f(g)}function f(g){return g===null||Et(g)?(e.exit("definition"),o.parser.defined.push(a),r(g)):n(g)}}function wke(e,r,n){return o;function o(l){return Pr(l)?B1(e,a)(l):n(l)}function a(l){return KL(e,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return Jt(l)?lr(e,s,"whitespace")(l):s(l)}function s(l){return l===null||Et(l)?r(l):n(l)}}const kke={name:"hardBreakEscape",tokenize:_ke};function _ke(e,r,n){return o;function o(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return Et(i)?(e.exit("hardBreakEscape"),r(i)):n(i)}}const Eke={name:"headingAtx",resolve:Ske,tokenize:Cke};function Ske(e,r){let n=e.length-2,o=3,a,i;return e[o][1].type==="whitespace"&&(o+=2),n-2>o&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(o===n-1||n-4>o&&e[n-2][1].type==="whitespace")&&(n-=o+1===n?2:4),n>o&&(a={type:"atxHeadingText",start:e[o][1].start,end:e[n][1].end},i={type:"chunkText",start:e[o][1].start,end:e[n][1].end,contentType:"text"},Da(e,o,n-o+1,[["enter",a,r],["enter",i,r],["exit",i,r],["exit",a,r]])),e}function Cke(e,r,n){let o=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),s(d)}function s(d){return d===35&&o++<6?(e.consume(d),s):d===null||Pr(d)?(e.exit("atxHeadingSequence"),l(d)):n(d)}function l(d){return d===35?(e.enter("atxHeadingSequence"),c(d)):d===null||Et(d)?(e.exit("atxHeading"),r(d)):Jt(d)?lr(e,l,"whitespace")(d):(e.enter("atxHeadingText"),u(d))}function c(d){return d===35?(e.consume(d),c):(e.exit("atxHeadingSequence"),l(d))}function u(d){return d===null||d===35||Pr(d)?(e.exit("atxHeadingText"),l(d)):(e.consume(d),u)}}const Tke=["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","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ZL=["pre","script","style","textarea"],Ake={concrete:!0,name:"htmlFlow",resolveTo:Dke,tokenize:$ke},Rke={partial:!0,tokenize:Pke},Nke={partial:!0,tokenize:Mke};function Dke(e){let r=e.length;for(;r--&&!(e[r][0]==="enter"&&e[r][1].type==="htmlFlow"););return r>1&&e[r-2][1].type==="linePrefix"&&(e[r][1].start=e[r-2][1].start,e[r+1][1].start=e[r-2][1].start,e.splice(r-2,2)),e}function $ke(e,r,n){const o=this;let a,i,s,l,c;return u;function u(j){return d(j)}function d(j){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(j),h}function h(j){return j===33?(e.consume(j),f):j===47?(e.consume(j),i=!0,x):j===63?(e.consume(j),a=3,o.interrupt?r:W):Go(j)?(e.consume(j),s=String.fromCharCode(j),w):n(j)}function f(j){return j===45?(e.consume(j),a=2,g):j===91?(e.consume(j),a=5,l=0,b):Go(j)?(e.consume(j),a=4,o.interrupt?r:W):n(j)}function g(j){return j===45?(e.consume(j),o.interrupt?r:W):n(j)}function b(j){const Y="CDATA[";return j===Y.charCodeAt(l++)?(e.consume(j),l===Y.length?o.interrupt?r:L:b):n(j)}function x(j){return Go(j)?(e.consume(j),s=String.fromCharCode(j),w):n(j)}function w(j){if(j===null||j===47||j===62||Pr(j)){const Y=j===47,Q=s.toLowerCase();return!Y&&!i&&ZL.includes(Q)?(a=1,o.interrupt?r(j):L(j)):Tke.includes(s.toLowerCase())?(a=6,Y?(e.consume(j),k):o.interrupt?r(j):L(j)):(a=7,o.interrupt&&!o.parser.lazy[o.now().line]?n(j):i?C(j):_(j))}return j===45||Po(j)?(e.consume(j),s+=String.fromCharCode(j),w):n(j)}function k(j){return j===62?(e.consume(j),o.interrupt?r:L):n(j)}function C(j){return Jt(j)?(e.consume(j),C):O(j)}function _(j){return j===47?(e.consume(j),O):j===58||j===95||Go(j)?(e.consume(j),T):Jt(j)?(e.consume(j),_):O(j)}function T(j){return j===45||j===46||j===58||j===95||Po(j)?(e.consume(j),T):A(j)}function A(j){return j===61?(e.consume(j),R):Jt(j)?(e.consume(j),A):_(j)}function R(j){return j===null||j===60||j===61||j===62||j===96?n(j):j===34||j===39?(e.consume(j),c=j,D):Jt(j)?(e.consume(j),R):N(j)}function D(j){return j===c?(e.consume(j),c=null,M):j===null||Et(j)?n(j):(e.consume(j),D)}function N(j){return j===null||j===34||j===39||j===47||j===60||j===61||j===62||j===96||Pr(j)?A(j):(e.consume(j),N)}function M(j){return j===47||j===62||Jt(j)?_(j):n(j)}function O(j){return j===62?(e.consume(j),F):n(j)}function F(j){return j===null||Et(j)?L(j):Jt(j)?(e.consume(j),F):n(j)}function L(j){return j===45&&a===2?(e.consume(j),I):j===60&&a===1?(e.consume(j),H):j===62&&a===4?(e.consume(j),G):j===63&&a===3?(e.consume(j),W):j===93&&a===5?(e.consume(j),Z):Et(j)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Rke,K,U)(j)):j===null||Et(j)?(e.exit("htmlFlowData"),U(j)):(e.consume(j),L)}function U(j){return e.check(Nke,P,K)(j)}function P(j){return e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),V}function V(j){return j===null||Et(j)?U(j):(e.enter("htmlFlowData"),L(j))}function I(j){return j===45?(e.consume(j),W):L(j)}function H(j){return j===47?(e.consume(j),s="",q):L(j)}function q(j){if(j===62){const Y=s.toLowerCase();return ZL.includes(Y)?(e.consume(j),G):L(j)}return Go(j)&&s.length<8?(e.consume(j),s+=String.fromCharCode(j),q):L(j)}function Z(j){return j===93?(e.consume(j),W):L(j)}function W(j){return j===62?(e.consume(j),G):j===45&&a===2?(e.consume(j),W):L(j)}function G(j){return j===null||Et(j)?(e.exit("htmlFlowData"),K(j)):(e.consume(j),G)}function K(j){return e.exit("htmlFlow"),r(j)}}function Mke(e,r,n){const o=this;return a;function a(s){return Et(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i):n(s)}function i(s){return o.parser.lazy[o.now().line]?n(s):r(s)}}function Pke(e,r,n){return o;function o(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(j1,r,n)}}const zke={name:"htmlText",tokenize:Ike};function Ike(e,r,n){const o=this;let a,i,s;return l;function l(W){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(W),c}function c(W){return W===33?(e.consume(W),u):W===47?(e.consume(W),A):W===63?(e.consume(W),_):Go(W)?(e.consume(W),N):n(W)}function u(W){return W===45?(e.consume(W),d):W===91?(e.consume(W),i=0,b):Go(W)?(e.consume(W),C):n(W)}function d(W){return W===45?(e.consume(W),g):n(W)}function h(W){return W===null?n(W):W===45?(e.consume(W),f):Et(W)?(s=h,H(W)):(e.consume(W),h)}function f(W){return W===45?(e.consume(W),g):h(W)}function g(W){return W===62?I(W):W===45?f(W):h(W)}function b(W){const G="CDATA[";return W===G.charCodeAt(i++)?(e.consume(W),i===G.length?x:b):n(W)}function x(W){return W===null?n(W):W===93?(e.consume(W),w):Et(W)?(s=x,H(W)):(e.consume(W),x)}function w(W){return W===93?(e.consume(W),k):x(W)}function k(W){return W===62?I(W):W===93?(e.consume(W),k):x(W)}function C(W){return W===null||W===62?I(W):Et(W)?(s=C,H(W)):(e.consume(W),C)}function _(W){return W===null?n(W):W===63?(e.consume(W),T):Et(W)?(s=_,H(W)):(e.consume(W),_)}function T(W){return W===62?I(W):_(W)}function A(W){return Go(W)?(e.consume(W),R):n(W)}function R(W){return W===45||Po(W)?(e.consume(W),R):D(W)}function D(W){return Et(W)?(s=D,H(W)):Jt(W)?(e.consume(W),D):I(W)}function N(W){return W===45||Po(W)?(e.consume(W),N):W===47||W===62||Pr(W)?M(W):n(W)}function M(W){return W===47?(e.consume(W),I):W===58||W===95||Go(W)?(e.consume(W),O):Et(W)?(s=M,H(W)):Jt(W)?(e.consume(W),M):I(W)}function O(W){return W===45||W===46||W===58||W===95||Po(W)?(e.consume(W),O):F(W)}function F(W){return W===61?(e.consume(W),L):Et(W)?(s=F,H(W)):Jt(W)?(e.consume(W),F):M(W)}function L(W){return W===null||W===60||W===61||W===62||W===96?n(W):W===34||W===39?(e.consume(W),a=W,U):Et(W)?(s=L,H(W)):Jt(W)?(e.consume(W),L):(e.consume(W),P)}function U(W){return W===a?(e.consume(W),a=void 0,V):W===null?n(W):Et(W)?(s=U,H(W)):(e.consume(W),U)}function P(W){return W===null||W===34||W===39||W===60||W===61||W===96?n(W):W===47||W===62||Pr(W)?M(W):(e.consume(W),P)}function V(W){return W===47||W===62||Pr(W)?M(W):n(W)}function I(W){return W===62?(e.consume(W),e.exit("htmlTextData"),e.exit("htmlText"),r):n(W)}function H(W){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(W),e.exit("lineEnding"),q}function q(W){return Jt(W)?lr(e,Z,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(W):Z(W)}function Z(W){return e.enter("htmlTextData"),s(W)}}const O8={name:"labelEnd",resolveAll:Bke,resolveTo:Fke,tokenize:Hke},Oke={tokenize:Vke},jke={tokenize:qke},Lke={tokenize:Uke};function Bke(e){let r=-1;const n=[];for(;++r=3&&(u===null||Et(u))?(e.exit("thematicBreak"),r(u)):n(u)}function c(u){return u===a?(e.consume(u),o++,c):(e.exit("thematicBreakSequence"),Jt(u)?lr(e,l,"whitespace")(u):l(u))}}const ia={continuation:{tokenize:t5e},exit:n5e,name:"list",tokenize:e5e},Qke={partial:!0,tokenize:o5e},Jke={partial:!0,tokenize:r5e};function e5e(e,r,n){const o=this,a=o.events[o.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,s=0;return l;function l(g){const b=o.containerState.type||(g===42||g===43||g===45?"listUnordered":"listOrdered");if(b==="listUnordered"?!o.containerState.marker||g===o.containerState.marker:S8(g)){if(o.containerState.type||(o.containerState.type=b,e.enter(b,{_container:!0})),b==="listUnordered")return e.enter("listItemPrefix"),g===42||g===45?e.check(Nx,n,u)(g):u(g);if(!o.interrupt||g===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),c(g)}return n(g)}function c(g){return S8(g)&&++s<10?(e.consume(g),c):(!o.interrupt||s<2)&&(o.containerState.marker?g===o.containerState.marker:g===41||g===46)?(e.exit("listItemValue"),u(g)):n(g)}function u(g){return e.enter("listItemMarker"),e.consume(g),e.exit("listItemMarker"),o.containerState.marker=o.containerState.marker||g,e.check(j1,o.interrupt?n:d,e.attempt(Qke,f,h))}function d(g){return o.containerState.initialBlankLine=!0,i++,f(g)}function h(g){return Jt(g)?(e.enter("listItemPrefixWhitespace"),e.consume(g),e.exit("listItemPrefixWhitespace"),f):n(g)}function f(g){return o.containerState.size=i+o.sliceSerialize(e.exit("listItemPrefix"),!0).length,r(g)}}function t5e(e,r,n){const o=this;return o.containerState._closeFlow=void 0,e.check(j1,a,i);function a(l){return o.containerState.furtherBlankLines=o.containerState.furtherBlankLines||o.containerState.initialBlankLine,lr(e,r,"listItemIndent",o.containerState.size+1)(l)}function i(l){return o.containerState.furtherBlankLines||!Jt(l)?(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,s(l)):(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,e.attempt(Jke,r,s)(l))}function s(l){return o.containerState._closeFlow=!0,o.interrupt=void 0,lr(e,e.attempt(ia,r,n),"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function r5e(e,r,n){const o=this;return lr(e,a,"listItemIndent",o.containerState.size+1);function a(i){const s=o.events[o.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===o.containerState.size?r(i):n(i)}}function n5e(e){e.exit(this.containerState.type)}function o5e(e,r,n){const o=this;return lr(e,a,"listItemPrefixWhitespace",o.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const s=o.events[o.events.length-1];return!Jt(i)&&s&&s[1].type==="listItemPrefixWhitespace"?r(i):n(i)}}const QL={name:"setextUnderline",resolveTo:a5e,tokenize:i5e};function a5e(e,r){let n=e.length,o,a,i;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){o=n;break}e[n][1].type==="paragraph"&&(a=n)}else e[n][1].type==="content"&&e.splice(n,1),!i&&e[n][1].type==="definition"&&(i=n);const s={type:"setextHeading",start:{...e[o][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",s,r]),e.splice(i+1,0,["exit",e[o][1],r]),e[o][1].end={...e[i][1].end}):e[o][1]=s,e.push(["exit",s,r]),e}function i5e(e,r,n){const o=this;let a;return i;function i(u){let d=o.events.length,h;for(;d--;)if(o.events[d][1].type!=="lineEnding"&&o.events[d][1].type!=="linePrefix"&&o.events[d][1].type!=="content"){h=o.events[d][1].type==="paragraph";break}return!o.parser.lazy[o.now().line]&&(o.interrupt||h)?(e.enter("setextHeadingLine"),a=u,s(u)):n(u)}function s(u){return e.enter("setextHeadingLineSequence"),l(u)}function l(u){return u===a?(e.consume(u),l):(e.exit("setextHeadingLineSequence"),Jt(u)?lr(e,c,"lineSuffix")(u):c(u))}function c(u){return u===null||Et(u)?(e.exit("setextHeadingLine"),r(u)):n(u)}}const s5e={tokenize:m5e,partial:!0};function l5e(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:p5e,continuation:{tokenize:h5e},exit:f5e}},text:{91:{name:"gfmFootnoteCall",tokenize:d5e},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:c5e,resolveTo:u5e}}}}function c5e(e,r,n){const o=this;let a=o.events.length;const i=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let s;for(;a--;){const c=o.events[a][1];if(c.type==="labelImage"){s=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!s||!s._balanced)return n(c);const u=ts(o.sliceSerialize({start:s.end,end:o.now()}));return u.codePointAt(0)!==94||!i.includes(u.slice(1))?n(c):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),r(c))}}function u5e(e,r){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const o={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},s={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[e[n+1],e[n+2],["enter",o,r],e[n+3],e[n+4],["enter",a,r],["exit",a,r],["enter",i,r],["enter",s,r],["exit",s,r],["exit",i,r],e[e.length-2],e[e.length-1],["exit",o,r]];return e.splice(n,e.length-n+1,...l),e}function d5e(e,r,n){const o=this,a=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let i=0,s;return l;function l(h){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(h),e.exit("gfmFootnoteCallLabelMarker"),c}function c(h){return h!==94?n(h):(e.enter("gfmFootnoteCallMarker"),e.consume(h),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(h){if(i>999||h===93&&!s||h===null||h===91||Pr(h))return n(h);if(h===93){e.exit("chunkString");const f=e.exit("gfmFootnoteCallString");return a.includes(ts(o.sliceSerialize(f)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(h),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),r):n(h)}return Pr(h)||(s=!0),i++,e.consume(h),h===92?d:u}function d(h){return h===91||h===92||h===93?(e.consume(h),i++,u):u(h)}}function p5e(e,r,n){const o=this,a=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let i,s=0,l;return c;function c(b){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(b),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(b){return b===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(b),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):n(b)}function d(b){if(s>999||b===93&&!l||b===null||b===91||Pr(b))return n(b);if(b===93){e.exit("chunkString");const x=e.exit("gfmFootnoteDefinitionLabelString");return i=ts(o.sliceSerialize(x)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(b),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),f}return Pr(b)||(l=!0),s++,e.consume(b),b===92?h:d}function h(b){return b===91||b===92||b===93?(e.consume(b),s++,d):d(b)}function f(b){return b===58?(e.enter("definitionMarker"),e.consume(b),e.exit("definitionMarker"),a.includes(i)||a.push(i),lr(e,g,"gfmFootnoteDefinitionWhitespace")):n(b)}function g(b){return r(b)}}function h5e(e,r,n){return e.check(j1,r,e.attempt(s5e,r,n))}function f5e(e){e.exit("gfmFootnoteDefinition")}function m5e(e,r,n){const o=this;return lr(e,a,"gfmFootnoteDefinitionIndent",5);function a(i){const s=o.events[o.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?r(i):n(i)}}function g5e(e){let n=(e||{}).singleTilde;const o={name:"strikethrough",tokenize:i,resolveAll:a};return n==null&&(n=!0),{text:{126:o},insideSpan:{null:[o]},attentionMarkers:{null:[126]}};function a(s,l){let c=-1;for(;++c1?c(b):(s.consume(b),h++,g);if(h<2&&!n)return c(b);const w=s.exit("strikethroughSequenceTemporary"),k=yf(b);return w._open=!k||k===2&&!!x,w._close=!x||x===2&&!!k,l(b)}}}class y5e{constructor(){this.map=[]}add(r,n,o){b5e(this,r,n,o)}consume(r){if(this.map.sort(function(i,s){return i[0]-s[0]}),this.map.length===0)return;let n=this.map.length;const o=[];for(;n>0;)n-=1,o.push(r.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),r.length=this.map[n][0];o.push(r.slice()),r.length=0;let a=o.pop();for(;a;){for(const i of a)r.push(i);a=o.pop()}this.map.length=0}}function b5e(e,r,n,o){let a=0;if(!(n===0&&o.length===0)){for(;a-1;){const P=o.events[F][1].type;if(P==="lineEnding"||P==="linePrefix")F--;else break}const L=F>-1?o.events[F][1].type:null,U=L==="tableHead"||L==="tableRow"?R:c;return U===R&&o.parser.lazy[o.now().line]?n(O):U(O)}function c(O){return e.enter("tableHead"),e.enter("tableRow"),u(O)}function u(O){return O===124||(s=!0,i+=1),d(O)}function d(O){return O===null?n(O):Et(O)?i>1?(i=0,o.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(O),e.exit("lineEnding"),g):n(O):Jt(O)?lr(e,d,"whitespace")(O):(i+=1,s&&(s=!1,a+=1),O===124?(e.enter("tableCellDivider"),e.consume(O),e.exit("tableCellDivider"),s=!0,d):(e.enter("data"),h(O)))}function h(O){return O===null||O===124||Pr(O)?(e.exit("data"),d(O)):(e.consume(O),O===92?f:h)}function f(O){return O===92||O===124?(e.consume(O),h):h(O)}function g(O){return o.interrupt=!1,o.parser.lazy[o.now().line]?n(O):(e.enter("tableDelimiterRow"),s=!1,Jt(O)?lr(e,b,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(O):b(O))}function b(O){return O===45||O===58?w(O):O===124?(s=!0,e.enter("tableCellDivider"),e.consume(O),e.exit("tableCellDivider"),x):A(O)}function x(O){return Jt(O)?lr(e,w,"whitespace")(O):w(O)}function w(O){return O===58?(i+=1,s=!0,e.enter("tableDelimiterMarker"),e.consume(O),e.exit("tableDelimiterMarker"),k):O===45?(i+=1,k(O)):O===null||Et(O)?T(O):A(O)}function k(O){return O===45?(e.enter("tableDelimiterFiller"),C(O)):A(O)}function C(O){return O===45?(e.consume(O),C):O===58?(s=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(O),e.exit("tableDelimiterMarker"),_):(e.exit("tableDelimiterFiller"),_(O))}function _(O){return Jt(O)?lr(e,T,"whitespace")(O):T(O)}function T(O){return O===124?b(O):O===null||Et(O)?!s||a!==i?A(O):(e.exit("tableDelimiterRow"),e.exit("tableHead"),r(O)):A(O)}function A(O){return n(O)}function R(O){return e.enter("tableRow"),D(O)}function D(O){return O===124?(e.enter("tableCellDivider"),e.consume(O),e.exit("tableCellDivider"),D):O===null||Et(O)?(e.exit("tableRow"),r(O)):Jt(O)?lr(e,D,"whitespace")(O):(e.enter("data"),N(O))}function N(O){return O===null||O===124||Pr(O)?(e.exit("data"),D(O)):(e.consume(O),O===92?M:N)}function M(O){return O===92||O===124?(e.consume(O),N):N(O)}}function k5e(e,r){let n=-1,o=!0,a=0,i=[0,0,0,0],s=[0,0,0,0],l=!1,c=0,u,d,h;const f=new y5e;for(;++nn[2]+1){const b=n[2]+1,x=n[3]-n[2]-1;e.add(b,x,[])}}e.add(n[3]+1,0,[["exit",h,r]])}return a!==void 0&&(i.end=Object.assign({},vf(r.events,a)),e.add(a,0,[["exit",i,r]]),i=void 0),i}function JL(e,r,n,o,a){const i=[],s=vf(r.events,n);a&&(a.end=Object.assign({},s),i.push(["exit",a,r])),o.end=Object.assign({},s),i.push(["exit",o,r]),e.add(n+1,0,i)}function vf(e,r){const n=e[r],o=n[0]==="enter"?"start":"end";return n[1][o]}const _5e={name:"tasklistCheck",tokenize:S5e};function E5e(){return{text:{91:_5e}}}function S5e(e,r,n){const o=this;return a;function a(c){return o.previous!==null||!o._gfmTasklistFirstContentOfListItem?n(c):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(c),e.exit("taskListCheckMarker"),i)}function i(c){return Pr(c)?(e.enter("taskListCheckValueUnchecked"),e.consume(c),e.exit("taskListCheckValueUnchecked"),s):c===88||c===120?(e.enter("taskListCheckValueChecked"),e.consume(c),e.exit("taskListCheckValueChecked"),s):n(c)}function s(c){return c===93?(e.enter("taskListCheckMarker"),e.consume(c),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),l):n(c)}function l(c){return Et(c)?r(c):Jt(c)?e.check({tokenize:C5e},r,n)(c):n(c)}}function C5e(e,r,n){return lr(e,o,"whitespace");function o(a){return a===null?n(a):r(a)}}function T5e(e){return $L([O4e(),l5e(),g5e(e),x5e(),E5e()])}const A5e={};function R5e(e){const r=this,n=e||A5e,o=r.data(),a=o.micromarkExtensions||(o.micromarkExtensions=[]),i=o.fromMarkdownExtensions||(o.fromMarkdownExtensions=[]),s=o.toMarkdownExtensions||(o.toMarkdownExtensions=[]);a.push(T5e(n)),i.push(D4e()),s.push($4e(n))}const N5e={tokenize:D5e};function D5e(e){const r=e.attempt(this.parser.constructs.contentInitial,o,a);let n;return r;function o(l){if(l===null){e.consume(l);return}return e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),lr(e,r,"linePrefix")}function a(l){return e.enter("paragraph"),i(l)}function i(l){const c=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=c),n=c,s(l)}function s(l){if(l===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(l);return}return Et(l)?(e.consume(l),e.exit("chunkText"),i):(e.consume(l),s)}}const $5e={tokenize:M5e},eB={tokenize:P5e};function M5e(e){const r=this,n=[];let o=0,a,i,s;return l;function l(_){if(os))return;const D=r.events.length;let N=D,M,O;for(;N--;)if(r.events[N][0]==="exit"&&r.events[N][1].type==="chunkFlow"){if(M){O=r.events[N][1].end;break}M=!0}for(k(o),R=D;R_;){const A=n[T];r.containerState=A[1],A[0].exit.call(r,e)}n.length=_}function C(){a.write([null]),i=void 0,a=void 0,r.containerState._closeFlow=void 0}}function P5e(e,r,n){return lr(e,e.attempt(this.parser.constructs.document,r,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}const z5e={tokenize:I5e};function I5e(e){const r=this,n=e.attempt(j1,o,e.attempt(this.parser.constructs.flowInitial,a,lr(e,e.attempt(this.parser.constructs.flow,a,e.attempt(hke,a)),"linePrefix")));return n;function o(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),r.currentConstruct=void 0,n}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r.currentConstruct=void 0,n}}const O5e={resolveAll:rB()},j5e=tB("string"),L5e=tB("text");function tB(e){return{resolveAll:rB(e==="text"?B5e:void 0),tokenize:r};function r(n){const o=this,a=this.parser.constructs[e],i=n.attempt(a,s,l);return s;function s(d){return u(d)?i(d):l(d)}function l(d){if(d===null){n.consume(d);return}return n.enter("data"),n.consume(d),c}function c(d){return u(d)?(n.exit("data"),i(d)):(n.consume(d),c)}function u(d){if(d===null)return!0;const h=a[d];let f=-1;if(h)for(;++f-1){const l=s[0];typeof l=="string"?s[0]=l.slice(o):s.shift()}i>0&&s.push(e[a].slice(0,i))}return s}function q5e(e,r){let n=-1;const o=[];let a;for(;++n0){const Fr=it.tokenStack[it.tokenStack.length-1];(Fr[1]||cB).call(it,void 0,Fr[0])}for(Se.position={start:gu(Ee.length>0?Ee[0][1].start:{line:1,column:1,offset:0}),end:gu(Ee.length>0?Ee[Ee.length-2][1].end:{line:1,column:1,offset:0})},zt=-1;++zt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(s)}]};e.patch(r,c);const u={type:"element",tagName:"sup",properties:{},children:[c]};return e.patch(r,u),e.applyData(r,u)}function n_e(e,r){const n={type:"element",tagName:"h"+r.depth,properties:{},children:e.all(r)};return e.patch(r,n),e.applyData(r,n)}function o_e(e,r){if(e.options.allowDangerousHtml){const n={type:"raw",value:r.value};return e.patch(r,n),e.applyData(r,n)}}function uB(e,r){const n=r.referenceType;let o="]";if(n==="collapsed"?o+="[]":n==="full"&&(o+="["+(r.label||r.identifier)+"]"),r.type==="imageReference")return[{type:"text",value:"!["+r.alt+o}];const a=e.all(r),i=a[0];i&&i.type==="text"?i.value="["+i.value:a.unshift({type:"text",value:"["});const s=a[a.length-1];return s&&s.type==="text"?s.value+=o:a.push({type:"text",value:o}),a}function a_e(e,r){const n=String(r.identifier).toUpperCase(),o=e.definitionById.get(n);if(!o)return uB(e,r);const a={src:bf(o.url||""),alt:r.alt};o.title!==null&&o.title!==void 0&&(a.title=o.title);const i={type:"element",tagName:"img",properties:a,children:[]};return e.patch(r,i),e.applyData(r,i)}function i_e(e,r){const n={src:bf(r.url)};r.alt!==null&&r.alt!==void 0&&(n.alt=r.alt),r.title!==null&&r.title!==void 0&&(n.title=r.title);const o={type:"element",tagName:"img",properties:n,children:[]};return e.patch(r,o),e.applyData(r,o)}function s_e(e,r){const n={type:"text",value:r.value.replace(/\r?\n|\r/g," ")};e.patch(r,n);const o={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(r,o),e.applyData(r,o)}function l_e(e,r){const n=String(r.identifier).toUpperCase(),o=e.definitionById.get(n);if(!o)return uB(e,r);const a={href:bf(o.url||"")};o.title!==null&&o.title!==void 0&&(a.title=o.title);const i={type:"element",tagName:"a",properties:a,children:e.all(r)};return e.patch(r,i),e.applyData(r,i)}function c_e(e,r){const n={href:bf(r.url)};r.title!==null&&r.title!==void 0&&(n.title=r.title);const o={type:"element",tagName:"a",properties:n,children:e.all(r)};return e.patch(r,o),e.applyData(r,o)}function u_e(e,r,n){const o=e.all(r),a=n?d_e(n):dB(r),i={},s=[];if(typeof r.checked=="boolean"){const d=o[0];let h;d&&d.type==="element"&&d.tagName==="p"?h=d:(h={type:"element",tagName:"p",properties:{},children:[]},o.unshift(h)),h.children.length>0&&h.children.unshift({type:"text",value:" "}),h.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:r.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l1}function p_e(e,r){const n={},o=e.all(r);let a=-1;for(typeof r.start=="number"&&r.start!==1&&(n.start=r.start);++a0){const s={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},l=rc(r.children[1]),c=vx(r.children[r.children.length-1]);l&&c&&(s.position={start:l,end:c}),a.push(s)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(r,i),e.applyData(r,i)}function y_e(e,r,n){const o=n?n.children:void 0,i=(o?o.indexOf(r):1)===0?"th":"td",s=n&&n.type==="table"?n.align:void 0,l=s?s.length:r.children.length;let c=-1;const u=[];for(;++c0,!0),o[0]),a=o.index+o[0].length,o=n.exec(r);return i.push(fB(r.slice(a),a>0,!1)),i.join("")}function fB(e,r,n){let o=0,a=e.length;if(r){let i=e.codePointAt(o);for(;i===pB||i===hB;)o++,i=e.codePointAt(o)}if(n){let i=e.codePointAt(a-1);for(;i===pB||i===hB;)a--,i=e.codePointAt(a-1)}return a>o?e.slice(o,a):""}function x_e(e,r){const n={type:"text",value:v_e(String(r.value))};return e.patch(r,n),e.applyData(r,n)}function w_e(e,r){const n={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(r,n),e.applyData(r,n)}const k_e={blockquote:Z5e,break:Q5e,code:J5e,delete:e_e,emphasis:t_e,footnoteReference:r_e,heading:n_e,html:o_e,imageReference:a_e,image:i_e,inlineCode:s_e,linkReference:l_e,link:c_e,listItem:u_e,list:p_e,paragraph:h_e,root:f_e,strong:m_e,table:g_e,tableCell:b_e,tableRow:y_e,text:x_e,thematicBreak:w_e,toml:$x,yaml:$x,definition:$x,footnoteDefinition:$x};function $x(){}function __e(e,r){const n=[{type:"text",value:"↩"}];return r>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(r)}]}),n}function E_e(e,r){return"Back to reference "+(e+1)+(r>1?"-"+r:"")}function S_e(e){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=e.options.footnoteBackContent||__e,o=e.options.footnoteBackLabel||E_e,a=e.options.footnoteLabel||"Footnotes",i=e.options.footnoteLabelTagName||"h2",s=e.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&b.push({type:"text",value:" "});let C=typeof n=="string"?n:n(c,g);typeof C=="string"&&(C={type:"text",value:C}),b.push({type:"element",tagName:"a",properties:{href:"#"+r+"fnref-"+f+(g>1?"-"+g:""),dataFootnoteBackref:"",ariaLabel:typeof o=="string"?o:o(c,g),className:["data-footnote-backref"]},children:Array.isArray(C)?C:[C]})}const w=d[d.length-1];if(w&&w.type==="element"&&w.tagName==="p"){const C=w.children[w.children.length-1];C&&C.type==="text"?C.value+=" ":w.children.push({type:"text",value:" "}),w.children.push(...b)}else d.push(...b);const k={type:"element",tagName:"li",properties:{id:r+"fn-"+f},children:e.wrap(d,!0)};e.patch(u,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...Ld(s),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(l,!0)},{type:"text",value:` +`}]}}const B8={}.hasOwnProperty,C_e={};function T_e(e,r){const n=r||C_e,o=new Map,a=new Map,i=new Map,s={...k_e,...n.handlers},l={all:u,applyData:R_e,definitionById:o,footnoteById:a,footnoteCounts:i,footnoteOrder:[],handlers:s,one:c,options:n,patch:A_e,wrap:D_e};return v8(e,function(d){if(d.type==="definition"||d.type==="footnoteDefinition"){const h=d.type==="definition"?o:a,f=String(d.identifier).toUpperCase();h.has(f)||h.set(f,d)}}),l;function c(d,h){const f=d.type,g=l.handlers[f];if(B8.call(l.handlers,f)&&g)return g(l,d,h);if(l.options.passThrough&&l.options.passThrough.includes(f)){if("children"in d){const{children:x,...w}=d,k=Ld(w);return k.children=l.all(d),k}return Ld(d)}return(l.options.unknownHandler||N_e)(l,d,h)}function u(d){const h=[];if("children"in d){const f=d.children;let g=-1;for(;++g0&&n.push({type:"text",value:` +`}),n}function mB(e){let r=0,n=e.charCodeAt(r);for(;n===9||n===32;)r++,n=e.charCodeAt(r);return e.slice(r)}function gB(e,r){const n=T_e(e,r),o=n.one(e,void 0),a=S_e(n),i=Array.isArray(o)?{type:"root",children:o}:o||{type:"root",children:[]};return a&&i.children.push({type:"text",value:` +`},a),i}function $_e(e,r){return e&&"run"in e?async function(n,o){const a=gB(n,{file:o,...r});await e.run(a,o)}:function(n,o){return gB(n,{file:o,...e||r})}}function yB(e){if(e)throw e}var F8,bB;function M_e(){if(bB)return F8;bB=1;var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=Object.defineProperty,o=Object.getOwnPropertyDescriptor,a=function(u){return typeof Array.isArray=="function"?Array.isArray(u):r.call(u)==="[object Array]"},i=function(u){if(!u||r.call(u)!=="[object Object]")return!1;var d=e.call(u,"constructor"),h=u.constructor&&u.constructor.prototype&&e.call(u.constructor.prototype,"isPrototypeOf");if(u.constructor&&!d&&!h)return!1;var f;for(f in u);return typeof f>"u"||e.call(u,f)},s=function(u,d){n&&d.name==="__proto__"?n(u,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):u[d.name]=d.newValue},l=function(u,d){if(d==="__proto__")if(e.call(u,d)){if(o)return o(u,d).value}else return;return u[d]};return F8=function c(){var u,d,h,f,g,b,x=arguments[0],w=1,k=arguments.length,C=!1;for(typeof x=="boolean"&&(C=x,x=arguments[1]||{},w=2),(x==null||typeof x!="object"&&typeof x!="function")&&(x={});ws.length;let c;l&&s.push(a);try{c=e.apply(this,s)}catch(u){const d=u;if(l&&n)throw d;return a(d)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,a):c instanceof Error?a(c):i(c))}function a(s,...l){n||(n=!0,r(s,...l))}function i(s){a(null,s)}}class sa extends Error{constructor(r,n,o){super(),typeof n=="string"&&(o=n,n=void 0);let a="",i={},s=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof r=="string"?a=r:!i.cause&&r&&(s=!0,a=r.message,i.cause=r),!i.ruleId&&!i.source&&typeof o=="string"){const c=o.indexOf(":");c===-1?i.ruleId=o:(i.source=o.slice(0,c),i.ruleId=o.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file,this.message=a,this.line=l?l.line:void 0,this.name=F1(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=s&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual,this.expected,this.note,this.url}}sa.prototype.file="",sa.prototype.name="",sa.prototype.reason="",sa.prototype.message="",sa.prototype.stack="",sa.prototype.column=void 0,sa.prototype.line=void 0,sa.prototype.ancestors=void 0,sa.prototype.cause=void 0,sa.prototype.fatal=void 0,sa.prototype.place=void 0,sa.prototype.ruleId=void 0,sa.prototype.source=void 0;const al={basename:O_e,dirname:j_e,extname:L_e,join:B_e,sep:"/"};function O_e(e,r){if(r!==void 0&&typeof r!="string")throw new TypeError('"ext" argument must be a string');H1(e);let n=0,o=-1,a=e.length,i;if(r===void 0||r.length===0||r.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(i){n=a+1;break}}else o<0&&(i=!0,o=a+1);return o<0?"":e.slice(n,o)}if(r===e)return"";let s=-1,l=r.length-1;for(;a--;)if(e.codePointAt(a)===47){if(i){n=a+1;break}}else s<0&&(i=!0,s=a+1),l>-1&&(e.codePointAt(a)===r.codePointAt(l--)?l<0&&(o=a):(l=-1,o=s));return n===o?o=s:o<0&&(o=e.length),e.slice(n,o)}function j_e(e){if(H1(e),e.length===0)return".";let r=-1,n=e.length,o;for(;--n;)if(e.codePointAt(n)===47){if(o){r=n;break}}else o||(o=!0);return r<0?e.codePointAt(0)===47?"/":".":r===1&&e.codePointAt(0)===47?"//":e.slice(0,r)}function L_e(e){H1(e);let r=e.length,n=-1,o=0,a=-1,i=0,s;for(;r--;){const l=e.codePointAt(r);if(l===47){if(s){o=r+1;break}continue}n<0&&(s=!0,n=r+1),l===46?a<0?a=r:i!==1&&(i=1):a>-1&&(i=-1)}return a<0||n<0||i===0||i===1&&a===n-1&&a===o+1?"":e.slice(a,n)}function B_e(...e){let r=-1,n;for(;++r0&&e.codePointAt(e.length-1)===47&&(n+="/"),r?"/"+n:n}function H_e(e,r){let n="",o=0,a=-1,i=0,s=-1,l,c;for(;++s<=e.length;){if(s2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",o=0):(n=n.slice(0,c),o=n.length-1-n.lastIndexOf("/")),a=s,i=0;continue}}else if(n.length>0){n="",o=0,a=s,i=0;continue}}r&&(n=n.length>0?n+"/..":"..",o=2)}else n.length>0?n+="/"+e.slice(a+1,s):n=e.slice(a+1,s),o=s-a-1;a=s,i=0}else l===46&&i>-1?i++:i=-1}return n}function H1(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const V_e={cwd:q_e};function q_e(){return"/"}function q8(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function U_e(e){if(typeof e=="string")e=new URL(e);else if(!q8(e)){const r=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw r.code="ERR_INVALID_ARG_TYPE",r}if(e.protocol!=="file:"){const r=new TypeError("The URL must be of scheme file");throw r.code="ERR_INVALID_URL_SCHEME",r}return W_e(e)}function W_e(e){if(e.hostname!==""){const o=new TypeError('File URL host must be "localhost" or empty on darwin');throw o.code="ERR_INVALID_FILE_URL_HOST",o}const r=e.pathname;let n=-1;for(;++n0){let[g,...b]=d;const x=o[f][1];V8(x)&&V8(g)&&(g=H8(!0,x,g)),o[f]=[u,g,...b]}}}}const Z_e=new G8().freeze();function X8(e,r){if(typeof r!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function K8(e,r){if(typeof r!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function Z8(e,r){if(r)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function xB(e){if(!V8(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function wB(e,r,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+r+"` instead")}function Mx(e){return Q_e(e)?e:new Y_e(e)}function Q_e(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function J_e(e){return typeof e=="string"||e6e(e)}function e6e(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}function t6e(){return Z_e().use(K5e).use(R5e).use($_e,{allowDangerousHtml:!0,clobberPrefix:"",tableCellPadding:!1,tight:!0}).use(P3e).use(q3e).use(G2e,{closeSelfClosing:!0,tightSelfClosing:!0})}function r6e(e){return String(t6e().processSync(e.trim())).trim()}function n6e(e){return Ax(sB(e),{includeHtml:!1,includeImageAlt:!1})}var Q8,kB;function o6e(){if(kB)return Q8;kB=1;var e=iO(),r=ox();function n(){this.clear()}return n.prototype.clear=function(){this.items=[],this.offset=0,this.size=0},n.prototype.enqueue=function(o){return this.items.push(o),++this.size},n.prototype.dequeue=function(){if(this.size){var o=this.items[this.offset];return++this.offset*2>=this.items.length&&(this.items=this.items.slice(this.offset),this.offset=0),this.size--,o}},n.prototype.peek=function(){if(this.size)return this.items[this.offset]},n.prototype.forEach=function(o,a){a=arguments.length>1?a:this;for(var i=this.offset,s=0,l=this.items.length;i=o.length)return{done:!0};var i=o[a];return a++,{value:i,done:!1}})},n.prototype.entries=function(){var o=this.items,a=this.offset,i=0;return new e(function(){if(a>=o.length)return{done:!0};var s=o[a];return a++,{value:[i++,s],done:!1}})},typeof Symbol<"u"&&(n.prototype[Symbol.iterator]=n.prototype.values),n.prototype.toString=function(){return this.toArray().join(",")},n.prototype.toJSON=function(){return this.toArray()},n.prototype.inspect=function(){var o=this.toArray();return Object.defineProperty(o,"constructor",{value:n,enumerable:!1}),o},typeof Symbol<"u"&&(n.prototype[Symbol.for("nodejs.util.inspect.custom")]=n.prototype.inspect),n.from=function(o){var a=new n;return r(o,function(i){a.enqueue(i)}),a},n.of=function(){return n.from(arguments)},Q8=n,Q8}var a6e=o6e();const J8=m1(a6e);var eE,_B;function i6e(){if(_B)return eE;_B=1;function e(r){if(typeof r!="function")throw new Error("mnemonist/DefaultMap.constructor: expecting a function.");this.items=new Map,this.factory=r,this.size=0}return e.prototype.clear=function(){this.items.clear(),this.size=0},e.prototype.get=function(r){var n=this.items.get(r);return typeof n>"u"&&(n=this.factory(r,this.size),this.items.set(r,n),this.size++),n},e.prototype.peek=function(r){return this.items.get(r)},e.prototype.set=function(r,n){return this.items.set(r,n),this.size=this.items.size,this},e.prototype.has=function(r){return this.items.has(r)},e.prototype.delete=function(r){var n=this.items.delete(r);return this.size=this.items.size,n},e.prototype.forEach=function(r,n){n=arguments.length>1?n:this,this.items.forEach(r,n)},e.prototype.entries=function(){return this.items.entries()},e.prototype.keys=function(){return this.items.keys()},e.prototype.values=function(){return this.items.values()},typeof Symbol<"u"&&(e.prototype[Symbol.iterator]=e.prototype.entries),e.prototype.inspect=function(){return this.items},typeof Symbol<"u"&&(e.prototype[Symbol.for("nodejs.util.inspect.custom")]=e.prototype.inspect),e.autoIncrement=function(){var r=0;return function(){return r++}},eE=e,eE}var s6e=i6e();const Xn=m1(s6e);function xf(e){return e.summary??e.description}function wf(e){return e.description??e.summary}function la(e){return!!e}const V1="@group";function l6e(e){return e.kind===V1}function EB(e,r){return at(typeof e=="string"&&e!=""),"@"+e+"."+r}function c6e(e){return e.startsWith("@")}function u6e(e){if(!e.startsWith("@"))return[null,e];const r=e.indexOf(".");if(r<2)throw new Error("Invalid global FQN");const n=e.slice(1,r),o=e.slice(r+1);return[n,o]}function q1(e){return e.startsWith("step-")}function SB(e){if(!q1(e))throw new Error(`Invalid step edge id: ${e}`);return parseFloat(e.slice(5))}function d6e(...e){return Do(p6e,e)}function p6e(e,r){let n={...e};for(let[o,a]of Object.entries(n))r(a,o,e)&&delete n[o];return n}var tE={},CB;function rE(){return CB||(CB=1,(function(e){var r=Math.pow(2,8)-1,n=Math.pow(2,16)-1,o=Math.pow(2,32)-1,a=Math.pow(2,7)-1,i=Math.pow(2,15)-1,s=Math.pow(2,31)-1;e.getPointerArray=function(c){var u=c-1;if(u<=r)return Uint8Array;if(u<=n)return Uint16Array;if(u<=o)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")},e.getSignedPointerArray=function(c){var u=c-1;return u<=a?Int8Array:u<=i?Int16Array:u<=s?Int32Array:Float64Array},e.getNumberType=function(c){return c===(c|0)?Math.sign(c)===-1?c<=127&&c>=-128?Int8Array:c<=32767&&c>=-32768?Int16Array:Int32Array:c<=255?Uint8Array:c<=65535?Uint16Array:Uint32Array:Float64Array};var l={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};e.getMinimalRepresentation=function(c,u){var d=null,h=0,f,g,b,x,w;for(x=0,w=c.length;xh&&(h=f,d=g);return d},e.isTypedArray=function(c){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView(c)},e.concat=function(){var c=0,u,d,h;for(u=0,h=arguments.length;u"u"))return this.splayOnTop(s),this.V[s]},a.prototype.peek=function(i){var s=this.items[i];if(!(typeof s>"u"))return this.V[s]},a.prototype.forEach=function(i,s){s=arguments.length>1?s:this;for(var l=0,c=this.size,u=this.head,d=this.K,h=this.V,f=this.forward;l=s)return{done:!0};var d=c[l];return i++,i=s)return{done:!0};var d=c[l];return i++,i=s)return{done:!0};var h=c[l],f=u[l];return i++,i"u"))return this.splayOnTop(s),this.V[s]},a.prototype.peek=function(i){var s=this.items.get(i);if(!(typeof s>"u"))return this.V[s]},a.prototype.splayOnTop=e.prototype.splayOnTop,a.prototype.forEach=e.prototype.forEach,a.prototype.keys=e.prototype.keys,a.prototype.values=e.prototype.values,a.prototype.entries=e.prototype.entries,typeof Symbol<"u"&&(a.prototype[Symbol.iterator]=a.prototype.entries),a.prototype.inspect=e.prototype.inspect,a.from=function(i,s,l,c){if(arguments.length<2){if(c=o.guessLength(i),typeof c!="number")throw new Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else arguments.length===2&&(c=s,s=null,l=null);var u=new a(s,l,c);return r(i,function(d,h){u.set(h,d)}),u},oE=a,oE}var m6e=f6e();const DB=m1(m6e);function U1(e){return d6e(e,r=>r===void 0)}const g6e=Symbol.for("text"),y6e=Symbol.for("html"),oc="",$B=new DB(500),MB=new DB(500);class or{static getOrCreateFromText(r){if(r.trim()===oc)return or.EMPTY;let n=MB.get(r);return n||(n=new or({txt:r}),MB.set(r,n),n)}static getOrCreateFromMarkdown(r){if(r.trim()===oc)return or.EMPTY;let n=$B.get(r);return n||(n=new or({md:r}),$B.set(r,n),n)}static memoize(r,n,o){return yr(r,n,()=>or.from(o))}static from(r){return r==null||r===or.EMPTY?or.EMPTY:r instanceof or?r:typeof r=="string"?this.getOrCreateFromText(r):"isEmpty"in r&&r.isEmpty?or.EMPTY:"md"in r?this.getOrCreateFromMarkdown(r.md):this.getOrCreateFromText(r.txt)}static EMPTY=new class extends or{isEmpty=!0;nonEmpty=!1;isMarkdown=!1;$source=null;constructor(){super({txt:oc})}get text(){return null}get md(){return null}get html(){return null}};$source;isEmpty;nonEmpty;isMarkdown;constructor(r){this.isMarkdown=!1,typeof r=="string"?(this.$source={txt:r},this.isEmpty=r.trim()===oc):(this.$source=r,this.isEmpty=!0,"md"in r?(this.isEmpty=r.md===oc,this.isMarkdown=!0):this.isEmpty=r.txt===oc),this.nonEmpty=!this.isEmpty}get text(){if(this.isEmpty||this.$source===null)return oc;const r=this.$source;return"txt"in r?r.txt:yr(this,g6e,()=>n6e(r.md))}get md(){if(this.isEmpty||this.$source===null)return oc;const r=this.$source;if("md"in r)return r.md;if("txt"in r)return r.txt;Zi(r)}get html(){if(this.isEmpty||this.$source===null)return oc;const r=this.$source;return"txt"in r?r.txt:yr(this,y6e,()=>r6e(r.md))}equals(r){return this===r?!0:r instanceof or?this.isEmpty&&r.isEmpty?!0:this.isEmpty!==r.isEmpty||this.isMarkdown!==r.isMarkdown?!1:this.isMarkdown?this.$source?.md===r.$source?.md:this.$source?.txt===r.$source?.txt:!1}}function PB(e){return r=>!e(r)}function b6e(...e){return Do(v6e,e)}const v6e=(e,r)=>r.every(n=>n(e));function x6e(...e){return Do(w6e,e)}const w6e=(e,r)=>r.some(n=>n(e));function rs(e){return e==null}function zB(e,r){return e[Gd]===r}const Gd="_stage",W1="_type",IB="_layout";function k6e(e){return la(e.kind)&&!la(e.element)}function _6e(e){return"tag"in e}function E6e(e){return"kind"in e}function S6e(e){return"participant"in e}function C6e(e){return"not"in e}function T6e(e){return"and"in e}function A6e(e){return"or"in e}function Xd(e){switch(!0){case S6e(e):{const r=e.participant,n=Xd(e.operator);return R6e(r,n)}case _6e(e):{if(cu(e.tag)||"eq"in e.tag){const n=cu(e.tag)?e.tag:e.tag.eq;return o=>Array.isArray(o.tags)&&o.tags.includes(n)}const r=e.tag.neq;return n=>!Array.isArray(n.tags)||!n.tags.includes(r)}case E6e(e):{if(cu(e.kind)||"eq"in e.kind){const n=cu(e.kind)?e.kind:e.kind.eq;return o=>o.kind===n}const r=e.kind.neq;return n=>rs(n.kind)||n.kind!==r}case C6e(e):{const r=Xd(e.not);return PB(r)}case T6e(e):{const r=e.and.map(Xd);return b6e(r)}case A6e(e):{const r=e.or.map(Xd);return x6e(r)}default:Zi(e)}}function R6e(e,r){return n=>{if(!n.source||!n.target)return!1;switch(e){case"source":return r(n.source);case"target":return r(n.target)}}}function N6e(e){return e._type==="dynamic"}var Y1;(e=>{function r(c){return"model"in c&&!("project"in c)}e.isElementRef=r;function n(c){return"project"in c&&"model"in c}e.isImportRef=n;function o(c){if(cu(c))throw new Error(`Expected FqnRef, got: "${c}"`);if(n(c))return EB(c.project,c.model);if(r(c))return c.model;throw new Error("Expected FqnRef.ModelRef or FqnRef.ImportRef")}e.flatten=o;function a(c){return r(c)||n(c)}e.isModelRef=a;function i(c){return"deployment"in c&&"element"in c}e.isInsideInstanceRef=i;function s(c){return"deployment"in c&&!("element"in c)}e.isDeploymentElementRef=s;function l(c){return s(c)||i(c)}e.isDeploymentRef=l})(Y1||(Y1={}));function aE(e){return q1(e)&&e.includes(".")?e.slice(0,e.indexOf(".")+1):null}var il;(e=>{function r({x:u,y:d,width:h,height:f}){return{x:u+h/2,y:d+f/2}}e.center=r;function n(u){const{x1:d,y1:h,x2:f,y2:g}=iE.fromPoints(u);return{x:d,y:h,width:f-d,height:g-h}}e.fromPoints=n;function o(...u){if(at(Kl(u,1),"No boxes provided"),u.length===1)return u[0];let d=1/0,h=1/0,f=-1/0,g=-1/0;for(const b of u)d=Math.min(d,b.x),h=Math.min(h,b.y),f=Math.max(f,b.x+b.width),g=Math.max(g,b.y+b.height);return{x:d,y:h,width:f-d,height:g-h}}e.merge=o;function a(u){return{x:Math.min(u.x1,u.x2),y:Math.min(u.y1,u.y2),width:Math.abs(u.x2-u.x1),height:Math.abs(u.y2-u.y1)}}e.fromRectBox=a;function i(u){return{x1:u.x,y1:u.y,x2:u.x+u.width,y2:u.y+u.height}}e.toRectBox=i;function s(u,d){return d===0?u:{x:u.x-d,y:u.y-d,width:u.width+d*2,height:u.height+d*2}}e.expand=s;function l(u,d){return d===0?u:{x:u.x+d,y:u.y+d,width:u.width-d*2,height:u.height-d*2}}e.shrink=l;function c(u,d){return u===d?!0:u.x<=d.x&&u.y<=d.y&&u.x+u.width>=d.x+d.width&&u.y+u.height>=d.y+d.height}e.includes=c})(il||(il={}));var iE;(e=>{function r({x1:s,y1:l,x2:c,y2:u}){return{x:(s+c)/2,y:(l+u)/2}}e.center=r;function n(s){at(s.length>0,"At least one point is required");let l=1/0,c=1/0,u=-1/0,d=-1/0;for(const[h,f]of s)l=Math.min(l,h),c=Math.min(c,f),u=Math.max(u,h),d=Math.max(d,f);return{x1:l,y1:c,x2:u,y2:d}}e.fromPoints=n;function o(...s){at(s.length>0,"No boxes provided");let l=1/0,c=1/0,u=-1/0,d=-1/0;for(const h of s)l=Math.min(l,h.x1),c=Math.min(c,h.y1),u=Math.max(u,h.x2),d=Math.max(d,h.y2);return{x1:l,y1:c,x2:u,y2:d}}e.merge=o;function a(s){return{x:s.x1,y:s.y1,width:s.x2-s.x1,height:s.y2-s.y1}}e.toBBox=a;function i(s,l){return s===l?!0:s.x1<=l.x1&&s.y1<=l.y1&&s.x2>=l.x2&&s.y2>=l.y2}e.includes=i})(iE||(iE={}));function OB(e){const r=typeof e=="string"?e:e.color;return r.startsWith("#")||r.startsWith("rgb")}const sE={done:!1,hasNext:!1};function Kd(e,...r){let n=e,o=r.map(i=>"lazy"in i?D6e(i):void 0),a=0;for(;aLB(n,e,...r):LB(e,...r)}function LB(e,...r){let n=e;for(let o of r){if(n==null)return;n=n[o]}return n}function lE(...e){return Do(M6e,e)}function M6e(e,r){let n=[...e];return n.sort(r),n}function Px(...e){return Do(P6e,e,z6e)}const P6e=(e,r)=>e.map(r),z6e=e=>(r,n,o)=>({done:!1,hasNext:!0,next:e(r,n,o)}),I6e=["tomato","grass","blue","ruby","orange","indigo","pink","teal","purple","amber","crimson","red","lime","yellow","violet"];function O6e(e,r,n){let o=e.get(r);return o||(o=n(r),e.set(r,o)),o}var cE={},BB;function j6e(){return BB||(BB=1,(function(e){e.intersection=function(){if(arguments.length<2)throw new Error("mnemonist/Set.intersection: needs at least two arguments.");var r=new Set,n=1/0,o=null,a,i,s=arguments.length;for(i=0;in.size)return!1;for(;a=o.next(),!a.done;)if(!n.has(a.value))return!1;return!0},e.isSuperset=function(r,n){return e.isSubset(n,r)},e.add=function(r,n){for(var o=n.values(),a;a=o.next(),!a.done;)r.add(a.value)},e.subtract=function(r,n){for(var o=n.values(),a;a=o.next(),!a.done;)r.delete(a.value)},e.intersect=function(r,n){for(var o=r.values(),a;a=o.next(),!a.done;)n.has(a.value)||r.delete(a.value)},e.disjunct=function(r,n){for(var o=r.values(),a,i=[];a=o.next(),!a.done;)n.has(a.value)&&i.push(a.value);for(o=n.values();a=o.next(),!a.done;)r.has(a.value)||r.add(a.value);for(var s=0,l=i.length;sn.size&&(o=r,r=n,n=o),r.size===0)return 0;if(r===n)return r.size;for(var a=r.values(),i,s=0;i=a.next(),!i.done;)n.has(i.value)&&s++;return s},e.unionSize=function(r,n){var o=e.intersectionSize(r,n);return r.size+n.size-o},e.jaccard=function(r,n){var o=e.intersectionSize(r,n);if(o===0)return 0;var a=r.size+n.size-o;return o/a},e.overlap=function(r,n){var o=e.intersectionSize(r,n);return o===0?0:o/Math.min(r.size,n.size)}})(cE)),cE}var FB=j6e();function uE(...e){let r=new Set;for(const n of e)for(const o of n)r.add(o);return r}function _f(e,...r){let n=new Set;if(e.size===0)return n;let o=Kl(r,2)?FB.intersection(...r):r[0];if(o.size===0)return n;for(const a of e)o.has(a)&&n.add(a);return n}function dE(e,r){if(e.size===0)return new Set;if(r.size===0)return new Set(e);let n=new Set;for(const o of e)r.has(o)||n.add(o);return n}function L6e(e,r){return e.size===r.size&&[...e].every(n=>r.has(n))}function pE(e,r){return FB.symmetricDifference(e,r)}function B6e(e){let r=5381;const n=e.length;at(n>0,"stringHash: empty string");for(let o=0;o>>0).toString(36)}const zx=e=>typeof e=="function";function Qd(e,r){const n=r??e;at(zx(n));function*o(a){for(const i of a)n(i)&&(yield i)}return r?o(e):o}function X1(e,r){const n=r??e;at(zx(n));function o(a){for(const i of a)if(n(i))return i}return r?o(e):o}function hE(e){return e?HB(e):HB}function HB(e){const r=e[Symbol.iterator](),{value:n}=r.next();return n}function F6e(e,r){const n=e;at(zx(n));function*o(a){for(const i of a)yield n(i)}return o}function K1(e){return e?Array.from(e):r=>Array.from(r)}function H6e(e){return e?new Set(e):r=>new Set(r)}function VB(e,r){const n=r??e;at(zx(n));function o(a){for(const i of a)if(n(i))return!0;return!1}return r?o(e):o}function V6e(e,r){const n=e;at(n>=0,"Count must be a non-negative number");function*o(a){let i=0;for(const s of a){if(i>=n)break;yield s,i++}}return a=>o(a)}function q6e(e,r){let n=Math.ceil(e),o=Math.floor(r);if(o{setTimeout(()=>{n(U6e)},r??100)})}function Ix(e){const r=uu([...e]),n=new Set(r),o=new Map(r.map(s=>[s._literalId,s])),a=new Xn(()=>null),i=r.reduce((s,l,c,u)=>(s.set(l,u.slice(c+1).filter(rO(l)).map(d=>(n.delete(d),d)).reduce((d,h)=>(d.some(to(h))||(d.push(h),a.set(h,l)),d),[])),s),new Xn(()=>[]));return{sorted:r,byId:s=>bt(o.get(s),`Element not found by id: ${s}`),root:n,parent:s=>a.get(s),children:s=>i.get(s),flatten:()=>new Set([...n,...r.reduce((s,l)=>{const c=i.get(l);return c.length===0?(s.push(l),s):(c.length>1&&s.push(...c),s)},[])])}}const fE=(e,r)=>e.size>2&&r.size!==e.size?new Set(uu([...Ix(e).flatten(),...r])):e.size>1?new Set(uu([...e])):e;function UB(e,r,n){const o=c=>r.has(c);let a=new Set([e]);const i={incomers:new Set,subjects:new Set([e]),outgoers:new Set};let s=new Set(n.incoming.flatMap(c=>{if(i.subjects.add(c.target),i.incomers.add(c.source),a.add(c.target),c.target!==e){let h=c.target.parent;for(;h&&h!==e;)a.add(h),h=h.parent}let u=c.source;const d=[];for(;d.push(u),!(o(u)||!u.parent);)u=u.parent;return d})),l=new Set(n.outgoing.flatMap(c=>{if(i.subjects.add(c.source),i.outgoers.add(c.target),a.add(c.source),c.source!==e){let h=c.source.parent;for(;h&&h!==e;)a.add(h),h=h.parent}let u=c.target;const d=[];for(;d.push(u),!(o(u)||!u.parent);)u=u.parent;return d}));return{incomers:fE(s,i.incomers),incoming:new Set(n.incoming),subjects:fE(a,i.subjects),outgoing:new Set(n.outgoing),outgoers:fE(l,i.outgoers)}}function WB(e,r,n,o="global"){const a=n?r.findView(n):null;if(o==="view")return at(a,'Scope view id is required when scope is "view"'),W6e(e,a,r);const i=r.element(e),s=H6e(i.ascendingSiblings());return UB(i,s,{incoming:[...i.incoming()],outgoing:[...i.outgoing()]})}function W6e(e,r,n){const o=n.element(e);let a={incoming:K1(Qd(o.incoming(),l=>r.includesRelation(l.id))),outgoing:K1(Qd(o.outgoing(),l=>r.includesRelation(l.id)))};const i=rO(o),s=new Set([...o.ascendingSiblings(),...Kd(r.elements(),F6e(l=>l.element),Qd(l=>l!==o&&i(l)))]);return UB(o,s,a)}var YB;(e=>{e.isInside=r=>n=>to(r,n.source.id)&&to(r,n.target.id),e.isDirectedBetween=(r,n)=>o=>(o.source.id===r||to(r,o.source.id))&&(o.target.id===n||to(n,o.target.id)),e.isAnyBetween=(r,n)=>{const o=(0,e.isDirectedBetween)(r,n),a=(0,e.isDirectedBetween)(n,r);return i=>o(i)||a(i)},e.isIncoming=r=>n=>(n.target.id===r||to(r,n.target.id))&&!to(r,n.source.id),e.isOutgoing=r=>n=>(n.source.id===r||to(r,n.source.id))&&!to(r,n.target.id),e.isAnyInOut=r=>{const n=(0,e.isIncoming)(r),o=(0,e.isOutgoing)(r);return a=>n(a)||o(a)}})(YB||(YB={}));const Y6e=Symbol.for("nodejs.util.inspect.custom");function G6e(e,r){let n=r.length-e.length;if(n===1){let[o,...a]=r;return Kd(o,{lazy:e,lazyArgs:a})}if(n===0){let o={lazy:e,lazyArgs:r};return Object.assign(a=>Kd(a,o),o)}throw Error("Wrong number of arguments")}function Ef(e){return e===""||e===void 0?!0:Array.isArray(e)?e.length===0:Object.keys(e).length===0}function mE(...e){return Do(X6e,e)}function X6e(e,r){if(e===r||Object.is(e,r))return!0;if(typeof e!="object"||!e||typeof r!="object"||!r)return!1;if(e instanceof Map&&r instanceof Map)return K6e(e,r);if(e instanceof Set&&r instanceof Set)return Z6e(e,r);let n=Object.keys(e);if(n.length!==Object.keys(r).length)return!1;for(let o of n){if(!Object.hasOwn(r,o))return!1;let{[o]:a}=e,{[o]:i}=r;if(a!==i||!Object.is(a,i))return!1}return!0}function K6e(e,r){if(e.size!==r.size)return!1;for(let[n,o]of e){let a=r.get(n);if(o!==a||!Object.is(o,a))return!1}return!0}function Z6e(e,r){if(e.size!==r.size)return!1;for(let n of e)if(!r.has(n))return!1;return!0}function Ox(...e){return G6e(Q6e,e)}function Q6e(){let e=new Set;return r=>e.has(r)?sE:(e.add(r),{done:!1,hasNext:!0,next:r})}class GB{Aux;get style(){return yr(this,"style",()=>U1({shape:this.$model.$styles.defaults.shape,color:this.$model.$styles.defaults.color,border:this.$model.$styles.defaults.border,opacity:this.$model.$styles.defaults.opacity,size:this.$model.$styles.defaults.size,padding:this.$model.$styles.defaults.padding,textSize:this.$model.$styles.defaults.text,...this.$node.style}))}get name(){return g1(this.id)}get shape(){return this.style.shape}get color(){return this.style.color}get summary(){return or.memoize(this,"summary",xf(this.$node))}get description(){return or.memoize(this,"description",wf(this.$node))}get technology(){return this.$node.technology??null}get links(){return this.$node.links??[]}ancestors(){return this.$model.ancestors(this)}commonAncestor(r){const n=b1(this.id,r.id);return n?this.$model.node(n):null}siblings(){return this.$model.siblings(this)}isSibling(r){return this.parent===r.parent}*ascendingSiblings(){yield*this.siblings();for(const r of this.ancestors())yield*r.siblings()}*descendingSiblings(){for(const r of[...this.ancestors()].reverse())yield*r.siblings();yield*this.siblings()}incoming(r="all"){return this.$model.incoming(this,r)}outgoing(r="all"){return this.$model.outgoing(this,r)}*incomers(r="all"){const n=new Set;for(const o of this.incoming(r))n.has(o.source.id)||(n.add(o.source.id),yield o.source)}*outgoers(r="all"){const n=new Set;for(const o of this.outgoing(r))n.has(o.target.id)||(n.add(o.target.id),yield o.target)}*views(){for(const r of this.$model.views())r._type==="deployment"&&r.includesDeployment(this.id)&&(yield r)}isDeploymentNode(){return!1}isInstance(){return!1}get allOutgoing(){return yr(this,Symbol.for("allOutgoing"),()=>yu.from(new Set(this.outgoingModelRelationships()),new Set(this.outgoing())))}get allIncoming(){return yr(this,Symbol.for("allIncoming"),()=>yu.from(new Set(this.incomingModelRelationships()),new Set(this.incoming())))}hasMetadata(){return!!this.$node.metadata&&!Ef(this.$node.metadata)}getMetadata(r){return r?this.$node.metadata?.[r]:this.$node.metadata??{}}isTagged(r){return this.tags.includes(r)}}class XB extends GB{constructor(r,n){super(),this.$model=r,this.$node=n,this.id=n.id,this._literalId=n.id,this.title=n.title,this.hierarchyLevel=rx(n.id)}id;_literalId;title;hierarchyLevel;get parent(){return this.$model.parent(this)}get kind(){return this.$node.kind}get tags(){return yr(this,Symbol.for("tags"),()=>Ox([...this.$node.tags??[],...this.$model.$model.specification.deployments[this.kind]?.tags??[]]))}children(){return this.$model.children(this)}descendants(r="desc"){return this.$model.descendants(this,r)}isDeploymentNode(){return!0}*instances(){for(const r of this.descendants("desc"))r.isInstance()&&(yield r)}onlyOneInstance(){const r=this.children();if(r.size!==1)return null;const n=hE(r);return n?n.isInstance()?n:n.onlyOneInstance():null}_relationshipsFromInstances=null;relationshipsFromInstances(){if(this._relationshipsFromInstances)return this._relationshipsFromInstances;const{outgoing:r,incoming:n}=this._relationshipsFromInstances={outgoing:new Set,incoming:new Set};for(const o of this.instances()){for(const a of o.element.outgoing())r.add(a);for(const a of o.element.incoming())n.add(a)}return this._relationshipsFromInstances}outgoingModelRelationships(){return this.relationshipsFromInstances().outgoing.values()}incomingModelRelationships(){return this.relationshipsFromInstances().incoming.values()}internalModelRelationships(){const{outgoing:r,incoming:n}=this.relationshipsFromInstances();return _f(n,r)}}class KB extends GB{constructor(r,n,o){super(),this.$model=r,this.$instance=n,this.element=o,this.id=n.id,this._literalId=n.id,this.title=n.title??o.title,this.hierarchyLevel=rx(n.id)}id;_literalId;title;hierarchyLevel;get $node(){return this.$instance}get parent(){return bt(this.$model.parent(this),`Parent of ${this.id} not found`)}get style(){return yr(this,"style",()=>U1({shape:this.$model.$styles.defaults.shape,color:this.$model.$styles.defaults.color,border:this.$model.$styles.defaults.border,opacity:this.$model.$styles.defaults.opacity,size:this.$model.$styles.defaults.size,padding:this.$model.$styles.defaults.padding,textSize:this.$model.$styles.defaults.text,...this.element.$element.style,...this.$instance.style}))}get tags(){return yr(this,Symbol.for("tags"),()=>Ox([...this.$instance.tags??[],...this.element.tags]))}get kind(){return this.element.kind}get summary(){return or.memoize(this,"summary",xf(this.$instance)??xf(this.element.$element))}get description(){return or.memoize(this,"description",wf(this.$instance)??wf(this.element.$element))}get technology(){return this.$instance.technology??this.element.technology??null}get links(){return this.$instance.links??this.element.links}isInstance(){return!0}outgoingModelRelationships(){return this.element.outgoing()}incomingModelRelationships(){return this.element.incoming()}*views(){for(const r of this.$model.views())if(r._type==="deployment"){if(r.includesDeployment(this.id)){yield r;continue}r.includesDeployment(this.parent.id)&&this.parent.onlyOneInstance()&&(yield r)}}}class J6e{constructor(r,n){this.instance=r,this.element=n}get id(){return this.instance.id}get _literalId(){return this.instance.id}get style(){return yr(this,"style ",()=>({shape:this.element.shape,color:this.element.color,...this.element.$element.style}))}get shape(){return this.element.shape}get color(){return this.element.color}get title(){return this.element.title}get summary(){return this.element.summary}get description(){return this.element.description}get technology(){return this.element.technology}isDeploymentNode(){return!1}isInstance(){return!1}}class e8e{constructor(r,n){this.$model=r,this.$relationship=n,this.source=r.deploymentRef(n.source),this.target=r.deploymentRef(n.target);const o=b1(this.source.id,this.target.id);this.boundary=o?this.$model.node(o):null}boundary;source;target;get id(){return this.$relationship.id}get expression(){return`${this.source.id} -> ${this.target.id}`}get title(){return la(this.$relationship.title)?this.$relationship.title:null}get technology(){return this.$relationship.technology??null}get hasSummary(){return!!this.$relationship.summary&&!!this.$relationship.description&&!mE(this.$relationship.summary,this.$relationship.description)}get summary(){return or.memoize(this,"summary",xf(this.$relationship))}get description(){return or.memoize(this,"description",wf(this.$relationship))}get tags(){return this.$relationship.tags??[]}get kind(){return this.$relationship.kind??null}get navigateTo(){return this.$relationship.navigateTo?this.$model.$model.view(this.$relationship.navigateTo):null}get links(){return this.$relationship.links??[]}get color(){return this.$relationship.color??this.$model.$styles.defaults.relationship.color}get line(){return this.$relationship.line??this.$model.$styles.defaults.relationship.line}get head(){return this.$relationship.head??this.$model.$styles.defaults.relationship.arrow}get tail(){return this.$relationship.tail}*views(){for(const r of this.$model.views())r.includesRelation(this.id)&&(yield r)}isDeploymentRelation(){return!0}isModelRelation(){return!1}hasMetadata(){return!!this.$relationship.metadata&&!Ef(this.$relationship.metadata)}getMetadata(r){return r?this.$relationship.metadata?.[r]:this.$relationship.metadata??{}}isTagged(r){return this.tags.includes(r)}}class yu{constructor(r=new Set,n=new Set){this.model=r,this.deployment=n}static empty(){return new yu}static from(r,n){return new yu(new Set(r),new Set(n))}get isEmpty(){return this.model.size===0&&this.deployment.size===0}get nonEmpty(){return this.model.size>0||this.deployment.size>0}get size(){return this.model.size+this.deployment.size}intersect(r){return yu.from(_f(this.model,r.model),_f(this.deployment,r.deployment))}difference(r){return yu.from(dE(this.model,r.model),dE(this.deployment,r.deployment))}union(r){return yu.from(uE(this.model,r.model),uE(this.deployment,r.deployment))}}function ZB(e,r){return n=>e.source===n.source&&e.target===n.target}function gE(e,r,n="directed"){if(e===r)return[];if(tO(e,r))return[];const o=_f(e.allOutgoing,r.allIncoming),a=o.size>0?new pi(e,r,o):null;if(n==="directed")return a?[a]:[];const i=_f(e.allIncoming,r.allOutgoing),s=i.size>0?new pi(r,e,i):null;return a&&s?[a,s]:a?[a]:s?[s]:[]}function QB(e,r,n="both"){if(e.allIncoming.size===0&&e.allOutgoing.size===0)return[];const o=[],a=[];for(const i of r)if(e!==i)for(const s of gE(e,i,n))s.source===e?o.push(s):a.push(s);return[...o,...a]}function t8e(e){return[...e].reduce((r,n,o,a)=>(o===a.length-1||r.push(...QB(n,a.slice(o+1),"both")),r),[])}const r8e={__proto__:null,findConnection:gE,findConnectionsBetween:QB,findConnectionsWithin:t8e};class pi{constructor(r,n,o=new Set){this.source=r,this.target=n,this.relations=o,this.id=B6e(`model:${r.id}:${n.id}`)}id;_boundary;get boundary(){return this._boundary??=this.source.commonAncestor(this.target)}get expression(){return`${this.source.id} -> ${this.target.id}`}get isDirect(){return this.nonEmpty()&&!this.isImplicit}get isImplicit(){return this.nonEmpty()&&VB(this.relations,PB(ZB(this)))}get directRelations(){return new Set(Qd(this.relations,ZB(this)))}nonEmpty(){return this.relations.size>0}mergeWith(r){return at(this.source.id===r.source.id,"Cannot merge connections with different sources"),at(this.target.id===r.target.id,"Cannot merge connections with different targets"),new pi(this.source,this.target,uE(this.relations,r.relations))}difference(r){return new pi(this.source,this.target,dE(this.relations,r.relations))}intersect(r){return at(r instanceof pi,"Cannot intersect connection with different type"),new pi(this.source,this.target,_f(this.relations,r.relations))}equals(r){at(r instanceof pi,"Cannot merge connection with different type");const n=r;return this.id===n.id&&this.source.id===n.source.id&&this.target.id===n.target.id&&L6e(this.relations,n.relations)}update(r){return new pi(this.source,this.target,r)}[Y6e](r,n,o){const a=this.toString();return Object.defineProperty(a,"constructor",{value:pi,enumerable:!1}),a}toString(){return[this.expression,this.relations.size?" relations:":" relations: [ ]",...[...this.relations].map(r=>" "+r.expression)].join(` +`)}reversed(r=!1){if(!r)return new pi(this.target,this.source);const[n]=gE(this.target,this.source,"directed");return n??new pi(this.target,this.source,new Set)}}const JB={asc:(e,r)=>e>r,desc:(e,r)=>ee(i,a)}function yE(e,r,...n){let o=typeof e=="function"?e:e[0],a=typeof e=="function"?"asc":e[1],{[a]:i}=JB,s=r===void 0?void 0:yE(r,...n);return(l,c)=>{let u=o(l),d=o(c);return i(u,d)?1:i(d,u)?-1:s?.(l,c)??0}}function o8e(e){if(eF(e))return!0;if(typeof e!="object"||!Array.isArray(e))return!1;let[r,n,...o]=e;return eF(r)&&typeof n=="string"&&n in JB&&o.length===0}const eF=e=>typeof e=="function"&&e.length===1;function a8e(...e){return Do(i8e,e,s8e)}const i8e=(e,r)=>e.filter(r),s8e=e=>(r,n,o)=>e(r,n,o)?{done:!1,hasNext:!0,next:r}:sE;function tF(...e){return Do(l8e,e,c8e)}const l8e=(e,r)=>e.flatMap(r),c8e=e=>(r,n,o)=>{let a=e(r,n,o);return Array.isArray(a)?{done:!1,hasNext:!0,hasMany:!0,next:a}:{done:!1,hasNext:!0,next:a}};function bE(...e){return Do(u8e,e)}const u8e=(e,r)=>{let n=Object.create(null);for(let o=0;oe.at(-1);function vE(...e){return Do(f8e,e)}function f8e(e,r){let n={};for(let[o,a]of Object.entries(e))n[o]=r(a,o,e);return n}function xE(...e){return r=>Kd(r,...e)}function rF(...e){return n8e(m8e,e)}const m8e=(e,r)=>[...e].sort(r);function nF(e,r,n){return typeof r=="number"||r===void 0?o=>o.split(e,r):e.split(r,n)}function Z1(...e){return Do(Object.values,e)}class jx{constructor(r,n){this.$model=r,this.$element=n,this.id=this.$element.id,this._literalId=this.$element.id;const[o,a]=u6e(this.id);o?(this.imported={from:o,fqn:a},this.hierarchyLevel=rx(a)):(this.imported=null,this.hierarchyLevel=rx(this.id))}Aux;id;_literalId;hierarchyLevel;imported;get name(){return g1(this.id)}get parent(){return this.$model.parent(this)}get kind(){return this.$element.kind}get shape(){return this.style.shape}get color(){return this.style.color}get icon(){return this.style.icon??null}get tags(){return yr(this,Symbol.for("tags"),()=>Ox([...this.$element.tags??[],...this.$model.specification.elements[this.$element.kind]?.tags??[]]))}get title(){return this.$element.title}get hasSummary(){return!!this.$element.summary&&!!this.$element.description&&!mE(this.$element.summary,this.$element.description)}get summary(){return or.memoize(this,"summary",xf(this.$element))}get description(){return or.memoize(this,"description",wf(this.$element))}get technology(){return this.$element.technology??null}get links(){return this.$element.links??[]}get defaultView(){return yr(this,Symbol.for("defaultView"),()=>hE(this.scopedViews())??null)}get isRoot(){return this.parent===null}get style(){return yr(this,"style",()=>U1({shape:this.$model.$styles.defaults.shape,color:this.$model.$styles.defaults.color,border:this.$model.$styles.defaults.border,opacity:this.$model.$styles.defaults.opacity,size:this.$model.$styles.defaults.size,padding:this.$model.$styles.defaults.padding,textSize:this.$model.$styles.defaults.text,...this.$element.style}))}isAncestorOf(r){return to(this,r)}isDescendantOf(r){return to(r,this)}ancestors(){return this.$model.ancestors(this)}commonAncestor(r){const n=b1(this.id,r.id);return n?this.$model.element(n):null}children(){return this.$model.children(this)}descendants(r){return r?nO([...this.$model.descendants(this)],r)[Symbol.iterator]():this.$model.descendants(this)}siblings(){return this.$model.siblings(this)}*ascendingSiblings(){yield*this.siblings();for(const r of this.ancestors())yield*r.siblings()}*descendingSiblings(){for(const r of[...this.ancestors()].reverse())yield*r.siblings();yield*this.siblings()}incoming(r="all"){return this.$model.incoming(this,r)}*incomers(r="all"){const n=new Set;for(const o of this.incoming(r))n.has(o.source.id)||(n.add(o.source.id),yield o.source)}outgoing(r="all"){return this.$model.outgoing(this,r)}*outgoers(r="all"){const n=new Set;for(const o of this.outgoing(r))n.has(o.target.id)||(n.add(o.target.id),yield o.target)}get allOutgoing(){return yr(this,Symbol.for("allOutgoing"),()=>new Set(this.outgoing()))}get allIncoming(){return yr(this,Symbol.for("allIncoming"),()=>new Set(this.incoming()))}views(){return yr(this,Symbol.for("views"),()=>{const r=new Set;for(const n of this.$model.views())n.includesElement(this.id)&&r.add(n);return r})}scopedViews(){return yr(this,Symbol.for("scopedViews"),()=>{const r=new Set;for(const n of this.$model.views())n.isScopedElementView()&&n.viewOf.id===this.id&&r.add(n);return r})}isDeployed(){return la(hE(this.deployments()))}deployments(){return this.$model.deployment.instancesOf(this)}hasMetadata(){return!!this.$element.metadata&&!Ef(this.$element.metadata)}getMetadata(r){return r?this.$element.metadata?.[r]:this.$element.metadata??{}}isTagged(r){return this.tags.includes(r)}}const Tr=e=>typeof e=="string"?e:e.id,$a="/",wE=e=>{if(at(!e.includes(` +`),"View title cannot contain newlines"),e.includes($a)){const r=e.split($a).map(n=>n.trim()).filter(n=>n.length>0);return Kl(r,1)?r:[""]}return[e.trim()]},Lx=e=>wE(e).join($a),g8e=e=>{const r=wE(e);return Kl(r,2)?r.slice(0,-1).join($a):null},kE=e=>e.includes($a)?wE(e).pop()??e:e.trim();class y8e{constructor(r){this.$model=r;const n=this.$deployments=r.$data.deployments,o=Z1(n.elements);for(const a of uu(o)){const i=this.addElement(a);for(const s of i.tags)this.#c.get(s).add(i);i.isInstance()&&this.#r.get(i.element.id).add(i)}for(const a of Z1(n.relations)){const i=this.addRelation(a);for(const s of i.tags)this.#c.get(s).add(i)}}#e=new Map;#i=new Map;#t=new Xn(()=>new Set);#r=new Xn(()=>new Set);#s=new Set;#n=new Map;#l=new Xn(()=>new Set);#a=new Xn(()=>new Set);#o=new Xn(()=>new Set);#c=new Xn(()=>new Set);#u=new Map;$deployments;get $styles(){return this.$model.$styles}element(r){if(r instanceof XB||r instanceof KB)return r;const n=Tr(r);return bt(this.#e.get(n),`Element ${n} not found`)}findElement(r){return this.#e.get(r)??null}node(r){const n=this.element(r);return at(n.isDeploymentNode(),`Element ${n.id} is not a deployment node`),n}findNode(r){const n=this.findElement(r);return n?(at(n.isDeploymentNode(),`Element ${n?.id} is not a deployment node`),n):null}instance(r){const n=this.element(r);return at(n.isInstance(),`Element ${n.id} is not a deployed instance`),n}findInstance(r){const n=this.findElement(r);return n?(at(n.isInstance(),`Element ${n?.id} is not a deployed instance`),n):null}roots(){return this.#s.values()}elements(){return this.#e.values()}*nodes(){for(const r of this.#e.values())r.isDeploymentNode()&&(yield r)}*nodesOfKind(r){for(const n of this.#e.values())n.isDeploymentNode()&&n.kind===r&&(yield n)}*instances(){for(const r of this.#e.values())r.isInstance()&&(yield r)}*instancesOf(r){const n=Tr(r),o=this.#r.get(n);o&&(yield*o)}deploymentRef(r){if(Y1.isInsideInstanceRef(r)){const{deployment:n,element:o}=r;return O6e(this.#u,`${n}@${o}`,()=>new J6e(this.instance(n),this.$model.element(o)))}return this.element(r.deployment)}relationships(){return this.#n.values()}relationship(r){return bt(this.#n.get(Tr(r)),`DeploymentRelationModel ${r} not found`)}findRelationship(r){return this.#n.get(r)??null}*views(){for(const r of this.$model.views())r.isDeploymentView()&&(yield r)}parent(r){const n=Tr(r);return this.#i.get(n)||null}children(r){const n=Tr(r);return this.#t.get(n)}*siblings(r){const n=Tr(r),o=this.parent(r)?.children()??this.roots();for(const a of o)a.id!==n&&(yield a)}*ancestors(r){let n=Tr(r),o;for(;o=this.#i.get(n);)yield o,n=o.id}*descendants(r,n="desc"){for(const o of this.children(r))n==="asc"?(yield o,yield*this.descendants(o.id)):(yield*this.descendants(o.id),yield o)}*incoming(r,n="all"){const o=Tr(r);for(const a of this.#l.get(o))switch(!0){case n==="all":case(n==="direct"&&a.target.id===o):case(n==="to-descendants"&&a.target.id!==o):yield a;break}}*outgoing(r,n="all"){const o=Tr(r);for(const a of this.#a.get(o))switch(!0){case n==="all":case(n==="direct"&&a.source.id===o):case(n==="from-descendants"&&a.source.id!==o):yield a;break}}addElement(r){if(this.#e.has(r.id))throw new Error(`Element ${r.id} already exists`);const n=k6e(r)?new XB(this,Object.freeze(r)):new KB(this,Object.freeze(r),this.$model.element(r.element));this.#e.set(n.id,n);const o=tx(n.id);return o?(at(this.#e.has(o),`Parent ${o} of ${n.id} not found`),this.#i.set(n.id,this.node(o)),this.#t.get(o).add(n)):(at(n.isDeploymentNode(),`Root element ${n.id} is not a deployment node`),this.#s.add(n)),n}addRelation(r){if(this.#n.has(r.id))throw new Error(`Relation ${r.id} already exists`);const n=new e8e(this,Object.freeze(r));this.#n.set(n.id,n),this.#l.get(n.target.id).add(n),this.#a.get(n.source.id).add(n);const o=n.boundary?.id??null;if(o)for(const a of[o,...jd(o)])this.#o.get(a).add(n);for(const a of jd(n.source.id)){if(a===o)break;this.#a.get(a).add(n)}for(const a of jd(n.target.id)){if(a===o)break;this.#l.get(a).add(n)}return n}}class oF{constructor(r,n){this.model=r,this.$relationship=n,this.source=r.element(Y1.flatten(n.source)),this.target=r.element(Y1.flatten(n.target));const o=b1(this.source.id,this.target.id);this.boundary=o?this.model.element(o):null}source;target;boundary;get id(){return this.$relationship.id}get expression(){return`${this.source.id} -> ${this.target.id}`}get title(){return la(this.$relationship.title)?this.$relationship.title:null}get technology(){return la(this.$relationship.technology)?this.$relationship.technology:null}get hasSummary(){return!!this.$relationship.summary&&!!this.$relationship.description&&!mE(this.$relationship.summary,this.$relationship.description)}get summary(){return or.memoize(this,"summary",xf(this.$relationship))}get description(){return or.memoize(this,"description",wf(this.$relationship))}get navigateTo(){return this.$relationship.navigateTo?this.model.view(this.$relationship.navigateTo):null}get tags(){return this.$relationship.tags??[]}get kind(){return this.$relationship.kind??null}get links(){return this.$relationship.links??[]}get color(){return this.$relationship.color??this.model.$styles.defaults.relationship.color}get line(){return this.$relationship.line??this.model.$styles.defaults.relationship.line}get head(){return this.$relationship.head??this.model.$styles.defaults.relationship.arrow}get tail(){return this.$relationship.tail}*views(){for(const r of this.model.views())r.includesRelation(this.id)&&(yield r)}isDeploymentRelation(){return!1}isModelRelation(){return!0}hasMetadata(){return!!this.$relationship.metadata&&!Ef(this.$relationship.metadata)}getMetadata(r){return r?this.$relationship.metadata?.[r]:this.$relationship.metadata??{}}isTagged(r){return this.tags.includes(r)}}var aF=Symbol.for("immer-nothing"),iF=Symbol.for("immer-draftable"),Ma=Symbol.for("immer-state");function ns(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Q1=Object.getPrototypeOf;function Sf(e){return!!e&&!!e[Ma]}function Jd(e){return e?lF(e)||Array.isArray(e)||!!e[iF]||!!e.constructor?.[iF]||J1(e)||Hx(e):!1}var b8e=Object.prototype.constructor.toString(),sF=new WeakMap;function lF(e){if(!e||typeof e!="object")return!1;const r=Object.getPrototypeOf(e);if(r===null||r===Object.prototype)return!0;const n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;if(n===Object)return!0;if(typeof n!="function")return!1;let o=sF.get(n);return o===void 0&&(o=Function.toString.call(n),sF.set(n,o)),o===b8e}function Bx(e,r,n=!0){Fx(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(a=>{r(a,e[a],e)}):e.forEach((o,a)=>r(a,o,e))}function Fx(e){const r=e[Ma];return r?r.type_:Array.isArray(e)?1:J1(e)?2:Hx(e)?3:0}function _E(e,r){return Fx(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function cF(e,r,n){const o=Fx(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function v8e(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function J1(e){return e instanceof Map}function Hx(e){return e instanceof Set}function ep(e){return e.copy_||e.base_}function EE(e,r){if(J1(e))return new Map(e);if(Hx(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=lF(e);if(r===!0||r==="class_only"&&!n){const o=Object.getOwnPropertyDescriptors(e);delete o[Ma];let a=Reflect.ownKeys(o);for(let i=0;i1&&Object.defineProperties(e,{set:Vx,add:Vx,clear:Vx,delete:Vx}),Object.freeze(e),r&&Object.values(e).forEach(n=>SE(n,!0))),e}function x8e(){ns(2)}var Vx={value:x8e};function qx(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var w8e={};function tp(e){const r=w8e[e];return r||ns(0,e),r}var e0;function uF(){return e0}function k8e(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function dF(e,r){r&&(tp("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function CE(e){TE(e),e.drafts_.forEach(_8e),e.drafts_=null}function TE(e){e===e0&&(e0=e.parent_)}function pF(e){return e0=k8e(e0,e)}function _8e(e){const r=e[Ma];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function hF(e,r){r.unfinalizedDrafts_=r.drafts_.length;const n=r.drafts_[0];return e!==void 0&&e!==n?(n[Ma].modified_&&(CE(r),ns(4)),Jd(e)&&(e=Ux(r,e),r.parent_||Wx(r,e)),r.patches_&&tp("Patches").generateReplacementPatches_(n[Ma].base_,e,r.patches_,r.inversePatches_)):e=Ux(r,n,[]),CE(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==aF?e:void 0}function Ux(e,r,n){if(qx(r))return r;const o=e.immer_.shouldUseStrictIteration(),a=r[Ma];if(!a)return Bx(r,(i,s)=>fF(e,a,r,i,s,n),o),r;if(a.scope_!==e)return r;if(!a.modified_)return Wx(e,a.base_,!0),a.base_;if(!a.finalized_){a.finalized_=!0,a.scope_.unfinalizedDrafts_--;const i=a.copy_;let s=i,l=!1;a.type_===3&&(s=new Set(i),i.clear(),l=!0),Bx(s,(c,u)=>fF(e,a,i,c,u,n,l),o),Wx(e,i,!1),n&&e.patches_&&tp("Patches").generatePatches_(a,n,e.patches_,e.inversePatches_)}return a.copy_}function fF(e,r,n,o,a,i,s){if(a==null||typeof a!="object"&&!s)return;const l=qx(a);if(!(l&&!s)){if(Sf(a)){const c=i&&r&&r.type_!==3&&!_E(r.assigned_,o)?i.concat(o):void 0,u=Ux(e,a,c);if(cF(n,o,u),Sf(u))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Jd(a)&&!l){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||r&&r.base_&&r.base_[o]===a&&l)return;Ux(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&(J1(n)?n.has(o):Object.prototype.propertyIsEnumerable.call(n,o))&&Wx(e,a)}}}function Wx(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&SE(r,n)}function E8e(e,r){const n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:uF(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=o,i=AE;n&&(a=[o],i=t0);const{revoke:s,proxy:l}=Proxy.revocable(a,i);return o.draft_=l,o.revoke_=s,l}var AE={get(e,r){if(r===Ma)return e;const n=ep(e);if(!_E(n,r))return S8e(e,n,r);const o=n[r];return e.finalized_||!Jd(o)?o:o===RE(e.base_,r)?(DE(e),e.copy_[r]=$E(o,e)):o},has(e,r){return r in ep(e)},ownKeys(e){return Reflect.ownKeys(ep(e))},set(e,r,n){const o=mF(ep(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){const a=RE(ep(e),r),i=a?.[Ma];if(i&&i.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(v8e(n,a)&&(n!==void 0||_E(e.base_,r)))return!0;DE(e),NE(e)}return e.copy_[r]===n&&(n!==void 0||r in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=n,e.assigned_[r]=!0),!0},deleteProperty(e,r){return RE(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,DE(e),NE(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){const n=ep(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){ns(11)},getPrototypeOf(e){return Q1(e.base_)},setPrototypeOf(){ns(12)}},t0={};Bx(AE,(e,r)=>{t0[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}}),t0.deleteProperty=function(e,r){return t0.set.call(this,e,r,void 0)},t0.set=function(e,r,n){return AE.set.call(this,e[0],r,n,e[0])};function RE(e,r){const n=e[Ma];return(n?ep(n):e)[r]}function S8e(e,r,n){const o=mF(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function mF(e,r){if(!(r in e))return;let n=Q1(e);for(;n;){const o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=Q1(n)}}function NE(e){e.modified_||(e.modified_=!0,e.parent_&&NE(e.parent_))}function DE(e){e.copy_||(e.copy_=EE(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var C8e=class{constructor(r){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(n,o,a)=>{if(typeof n=="function"&&typeof o!="function"){const s=o;o=n;const l=this;return function(u=s,...d){return l.produce(u,h=>o.call(this,h,...d))}}typeof o!="function"&&ns(6),a!==void 0&&typeof a!="function"&&ns(7);let i;if(Jd(n)){const s=pF(this),l=$E(n,void 0);let c=!0;try{i=o(l),c=!1}finally{c?CE(s):TE(s)}return dF(s,a),hF(i,s)}else if(!n||typeof n!="object"){if(i=o(n),i===void 0&&(i=n),i===aF&&(i=void 0),this.autoFreeze_&&SE(i,!0),a){const s=[],l=[];tp("Patches").generateReplacementPatches_(n,i,s,l),a(s,l)}return i}else ns(1,n)},this.produceWithPatches=(n,o)=>{if(typeof n=="function")return(l,...c)=>this.produceWithPatches(l,u=>n(u,...c));let a,i;return[this.produce(n,o,(l,c)=>{a=l,i=c}),a,i]},typeof r?.autoFreeze=="boolean"&&this.setAutoFreeze(r.autoFreeze),typeof r?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(r.useStrictShallowCopy),typeof r?.useStrictIteration=="boolean"&&this.setUseStrictIteration(r.useStrictIteration)}createDraft(r){Jd(r)||ns(8),Sf(r)&&(r=T8e(r));const n=pF(this),o=$E(r,void 0);return o[Ma].isManual_=!0,TE(n),o}finishDraft(r,n){const o=r&&r[Ma];(!o||!o.isManual_)&&ns(9);const{scope_:a}=o;return dF(a,n),hF(void 0,a)}setAutoFreeze(r){this.autoFreeze_=r}setUseStrictShallowCopy(r){this.useStrictShallowCopy_=r}setUseStrictIteration(r){this.useStrictIteration_=r}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(r,n){let o;for(o=n.length-1;o>=0;o--){const i=n[o];if(i.path.length===0&&i.op==="replace"){r=i.value;break}}o>-1&&(n=n.slice(o+1));const a=tp("Patches").applyPatches_;return Sf(r)?a(r,n):this.produce(r,i=>a(i,n))}};function $E(e,r){const n=J1(e)?tp("MapSet").proxyMap_(e,r):Hx(e)?tp("MapSet").proxySet_(e,r):E8e(e,r);return(r?r.scope_:uF()).drafts_.push(n),n}function T8e(e){return Sf(e)||ns(10,e),gF(e)}function gF(e){if(!Jd(e)||qx(e))return e;const r=e[Ma];let n,o=!0;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=EE(e,r.scope_.immer_.useStrictShallowCopy_),o=r.scope_.immer_.shouldUseStrictIteration()}else n=EE(e,!0);return Bx(n,(a,i)=>{cF(n,a,gF(i))},o),r&&(r.finalized_=!1),n}var A8e=new C8e,yF=A8e.produce;function R8e(e){return Kd(e,a8e(r=>!!r.notation),bE(Zd("notation")),vE(xE(bE(Zd("shape")),vE(xE(bE(Zd("color")),vE(xE(Px(Zd("kind")),Ox())),G1(),Px(([r,n])=>({kinds:n,color:r})))),G1(),tF(([r,n])=>n.map(({color:o,kinds:a})=>({shape:r,color:o,kinds:a}))))),G1(),tF(([r,n])=>n.map(({shape:o,color:a,kinds:i})=>({title:r,shape:o,color:a,kinds:i}))),rF(Zd("shape"),Zd("title"),[r=>r.kinds.length,"desc"]))}const sl=(e,r)=>e===r||rs(e)&&rs(r)?!1:!Vv(e,r),bF=5;function N8e(e,r){e.color=r.color,e.kind=r.kind,e.navigateTo=r.navigateTo??null,e.links=r.links?[...r.links]:null,e.tags=[...r.tags],rs(r.style.border)?delete e.style.border:e.style.border=r.style.border,d8e(r.style.opacity)?e.style.opacity=r.style.opacity:delete e.style.opacity,rs(r.style.multiple)?delete e.style.multiple:e.style.multiple=r.style.multiple}function D8e(e,r,n){if(sl(r.icon??"none",e.icon??"none")){const o=la(e.icon)&&e.icon!=="none";switch(!0){case(o&&la(r.icon)&&r.icon!=="none"):return e.icon=r.icon,!0;case(o&&(rs(r.icon)||r.icon==="none")):return e.icon="none",!0;case(!o&&la(r.icon)&&r.icon!=="none"):return n?(e.icon=r.icon,!0):!1}}return!0}function $8e(e,r,n){let o=!0;return sl(e.title,r.title)&&(n?e.title=r.title:o=!1),sl(e.description,r.description)&&(rs(r.description)?delete e.description:n?e.description=r.description:o=!1),sl(e.technology,r.technology)&&(rs(r.technology)?delete e.technology:n?e.technology=r.technology:o=!1),o}function M8e(e,r,n){return e.title=r.title,rs(r.description)?delete e.description:e.description=r.description,rs(r.technology)?delete e.technology:e.technology=r.technology,!0}function vF(e,r){at(e.id===r.id,"applyManualLayout: view ids do not match"),at(e._stage==="layouted","applyManualLayout: expected layouted view"),at(r._stage==="layouted","applyManualLayout: expected layouted snapshot"),at(e._layout!=="manual","applyManualLayout: expected auto-layouted view");const n=new Set;e._type!==r._type&&n.add("type-changed");const o=new Map(e.nodes.map(b=>[b.id,b])),a=new Map(e.edges.map(b=>[b.id,b])),i=new Set(o.keys()),s=new Set(a.keys()),l=new Set(r.nodes.map(b=>b.id)),c=new Set(r.edges.map(b=>b.id));pE(i,l).size>0&&n.add("nodes-mismatch"),pE(s,c).size>0&&n.add("edges-mismatch");const u=r.nodes.map(b=>{const x=o.get(b.id);return yF(b,w=>{if(!x){w.drifts=["missing"];return}N8e(w,x);const k=new Set,C=b.children.length>0,_=x.children.length>0;(sl(w.modelRef,x.modelRef)||sl(w.deploymentRef,x.deploymentRef))&&k.add("modelRef-changed"),_&&!C&&k.add("became-compound"),!_&&C&&k.add("became-leaf"),sl(w.parent,x.parent)&&k.add("parent-changed");const T=w.width+bF>=x.width&&w.height+bF>=x.height;sl(w.shape,x.shape)&&(T?w.shape=x.shape:k.add("shape-changed")),D8e(w,x,T&&_===C)||k.add("label-changed"),(C?M8e:$8e)(w,x,T)||k.add("label-changed"),sl(b.notation,x.notation)&&(w.notation=x.notation??null),C&&_&&pE(new Set(b.children),new Set(x.children)).size>0&&k.add("children-changed");const R=[...k];Kl(R,1)&&(n.add("nodes-mismatch"),w.drifts=R)})}),d=r.edges.map(b=>{const x=a.get(b.id);return yF(b,w=>{if(!x){w.drifts=["missing"];return}const k=new Set;w.source===x.target&&w.target===x.source?k.add("direction-changed"):(w.source!==x.source&&k.add("source-changed"),w.target!==x.target&&k.add("target-changed")),k.size===0&&sl(w.dir??"forward",x.dir??"forward")&&k.add("direction-changed"),w.color=x.color,w.line=x.line,w.navigateTo=x.navigateTo??null,w.tags=x.tags?[...x.tags]:null,rs(x.notes)?delete w.notes:w.notes=x.notes,x.astPath&&(w.astPath=x.astPath),x.labelBBox?((!w.labelBBox||!la(w.label)&&la(x.label))&&k.add("label-changed"),w.labelBBox={x:w.labelBBox?.x??x.labelBBox.x,y:w.labelBBox?.y??x.labelBBox.y,width:x.labelBBox.width,height:x.labelBBox.height},w.label=x.label,w.description=x.description??null,w.technology=x.technology??null):b.labelBBox&&k.add("label-changed");const C=[...k];Kl(C,1)&&(n.add("edges-mismatch"),w.drifts=C)})}),h=R8e(u),f={...r};Object.assign(f,{title:e.title??r.title,description:e.description??r.description,tags:e.tags?[...e.tags]:null,links:e.links?[...e.links]:null,[IB]:"manual",...h&&h.length>0?{notation:{nodes:h}}:{},nodes:u,edges:d}),N6e(e)&&f._type==="dynamic"&&Object.assign(f,{variant:e.variant});const g=[...n];return Kl(g,1)?f.drifts=g:"drifts"in f&&delete f.drifts,f}function P8e(e,r){const{drifts:n}=vF(e,r);if(n)Object.assign(e,{[IB]:"auto",drifts:n});else{const o=e;"drifts"in e&&delete o.drifts}return e}class z8e{constructor(r,n,o,a){this.source=o,this.target=a,this.$viewModel=r,this.$view=r.$view,this.$edge=n}Aux;$viewModel;$view;$edge;get id(){return this.$edge.id}get parent(){return this.$edge.parent?this.$viewModel.node(this.$edge.parent):null}get label(){return this.$edge.label??null}get description(){return or.memoize(this,"description",this.$edge.description)}get technology(){return this.$edge.technology??null}hasParent(){return this.$edge.parent!==null}get tags(){return this.$edge.tags??[]}get stepNumber(){return this.isStep()?SB(this.id):null}get navigateTo(){return this.$edge.navigateTo?this.$viewModel.$model.view(this.$edge.navigateTo):null}get color(){return this.$edge.color}get line(){return this.$edge.line??this.$viewModel.$styles.defaults.relationship.line}get head(){return this.$edge.head??this.$viewModel.$styles.defaults.relationship.arrow}get tail(){return this.$edge.tail}isStep(){return q1(this.id)}*relationships(r){for(const n of this.$edge.relations)if(r){const o=this.$viewModel.$model.findRelationship(n,r);o&&(yield o)}else yield this.$viewModel.$model.relationship(n)}includesRelation(r){const n=typeof r=="string"?r:r.id;return this.$edge.relations.includes(n)}isTagged(r){return this.tags.includes(r)}}class I8e{Aux;$viewModel;$view;$node;constructor(r,n){this.$viewModel=r,this.$view=r.$view,this.$node=n}get id(){return this.$node.id}get title(){return this.$node.title}get kind(){return this.$node.kind}get description(){return or.memoize(this,"description",this.$node.description)}get technology(){return this.$node.technology??null}get parent(){return this.$node.parent?this.$viewModel.node(this.$node.parent):null}get element(){const r=this.$node.modelRef;return r?this.$viewModel.$model.element(r):null}get deployment(){const r=this.$node.deploymentRef;return r?this.$viewModel.$model.deployment.element(r):null}get shape(){return this.$node.shape}get color(){return this.$node.color}get icon(){return this.$node.icon??null}get tags(){return this.$node.tags}get links(){return this.$node.links??[]}get navigateTo(){return this.$node.navigateTo?this.$viewModel.$model.view(this.$node.navigateTo):null}get style(){return this.$node.style}get x(){return"x"in this.$node?this.$node.x:void 0}get y(){return"y"in this.$node?this.$node.y:void 0}get width(){return"width"in this.$node?this.$node.width:void 0}get height(){return"height"in this.$node?this.$node.height:void 0}children(){return yr(this,"children",()=>new Set(this.$node.children.map(r=>this.$viewModel.node(r))))}*ancestors(){let r=this.parent;for(;r;)yield r,r=r.parent}*siblings(){const r=this.parent?.children()??this.$viewModel.roots();for(const n of r)n.id!==this.id&&(yield n)}*incoming(r="all"){for(const n of this.$node.inEdges){const o=this.$viewModel.edge(n);switch(!0){case r==="all":case(r==="direct"&&o.target.id===this.id):case(r==="to-descendants"&&o.target.id!==this.id):yield o;break}}}*incomers(r="all"){const n=new Set;for(const o of this.incoming(r))n.has(o.source.id)||(n.add(o.source.id),yield o.source)}*outgoing(r="all"){for(const n of this.$node.outEdges){const o=this.$viewModel.edge(n);switch(!0){case r==="all":case(r==="direct"&&o.source.id===this.id):case(r==="from-descendants"&&o.source.id!==this.id):yield o;break}}}*outgoers(r="all"){const n=new Set;for(const o of this.outgoing(r))n.has(o.target.id)||(n.add(o.target.id),yield o.target)}isLayouted(){return"width"in this.$node&&"height"in this.$node}hasChildren(){return this.$node.children.length>0}hasParent(){return this.$node.parent!==null}hasElement(){return la(this.$node.modelRef)}hasDeployment(){return la(this.$node.deploymentRef)}hasDeployedInstance(){return this.hasElement()&&this.hasDeployment()}isGroup(){return l6e(this.$node)}isTagged(r){return this.tags.includes(r)}}class ME{Aux;#e;#i=new Set;#t=new Map;#r=new Map;#s=new Set;#n=new Set;#l=new Set;#a=new Xn(r=>new Set);#o;id;$model;title;folder;viewPath;constructor(r,n,o,a){this.$model=r,this.#e=o,this.id=o.id,this.folder=n,this.#o=a;for(const i of this.#e.nodes){const s=new I8e(this,Object.freeze(i));this.#t.set(i.id,s),i.parent||this.#i.add(s),i.deploymentRef&&this.#n.add(i.deploymentRef),i.modelRef&&this.#s.add(i.modelRef);for(const l of s.tags)this.#a.get(l).add(s)}for(const i of this.#e.edges){const s=new z8e(this,Object.freeze(i),this.node(i.source),this.node(i.target));for(const l of s.tags)this.#a.get(l).add(s);for(const l of i.relations)this.#l.add(l);this.#r.set(i.id,s)}this.title=o.title?kE(o.title):null,this.viewPath=o.title?Lx(o.title):o.id}get $styles(){return this.$model.$styles}get _type(){return this.#e[W1]}get stage(){return this.#e[Gd]}get bounds(){if("bounds"in this.#e)return this.#e.bounds;if(this.#o)return this.#o.bounds;throw new Error("View is not layouted")}get titleOrId(){return this.title??this.viewOf?.title??this.id}get titleOrUntitled(){return this.title??"Untitled"}get breadcrumbs(){return yr(this,"breadcrumbs",()=>this.folder.isRoot?[this]:[...this.folder.breadcrumbs,this])}get description(){return or.memoize(this,"description",this.#e.description)}get tags(){return this.#e.tags??[]}get links(){return this.#e.links??[]}get viewOf(){if(this.isElementView()){const r=this.#e.viewOf;return r?this.$model.element(r):null}return null}get mode(){return this.isDynamicView()?this.#e.variant??"diagram":null}get includedTags(){return[...this.#a.keys()]}get $view(){if(!this.isLayouted()||"drifts"in this.#e)return this.#e;const r=this.#o;return r?yr(this,"withDriftReasons",()=>P8e(this.#e,r)):this.#e}get $layouted(){if(!this.isLayouted())throw new Error("View is not layouted");return this.manualLayouted??this.#e}get hasManualLayout(){return this.#o!==void 0}get manualLayouted(){if(!this.isLayouted())return null;const r=this.#o;return r?yr(this,"snapshotWithManualLayout",()=>vF(this.#e,r)):null}get driftReasons(){return this.isLayouted()?this.$view.drifts??[]:[]}roots(){return this.#i.values()}*compounds(){for(const r of this.#t.values())r.hasChildren()&&(yield r)}node(r){const n=Tr(r);return bt(this.#t.get(n),`Node ${n} not found in view ${this.#e.id}`)}findNode(r){return this.#t.get(Tr(r))??null}findNodeWithElement(r){const n=Tr(r);return this.#s.has(n)?X1(this.#t.values(),o=>o.hasElement()&&o.element.id===n)??null:null}nodes(){return this.#t.values()}edge(r){const n=Tr(r);return bt(this.#r.get(n),`Edge ${n} not found in view ${this.#e.id}`)}findEdge(r){return this.#r.get(Tr(r))??null}edges(){return this.#r.values()}*edgesWithRelation(r){for(const n of this.#r.values())n.includesRelation(r)&&(yield n)}*elements(){for(const r of this.#t.values())r.hasElement()&&(yield r)}isTagged(r){return this.tags.includes(r)}includesElement(r){return this.#s.has(Tr(r))}includesDeployment(r){return this.#n.has(Tr(r))}includesRelation(r){return this.#l.has(Tr(r))}isComputed(){return this.#e[Gd]==="computed"}isLayouted(){return this.#e[Gd]==="layouted"}isDiagram(){return this.#e[Gd]==="layouted"}isElementView(){return this.#e[W1]==="element"}isScopedElementView(){return this.#e[W1]==="element"&&la(this.#e.viewOf)}isDeploymentView(){return this.#e[W1]==="deployment"}isDynamicView(){return this.#e[W1]==="dynamic"}}class Yx{$model;path;title;isRoot;parentPath;defaultViewId;constructor(r,n,o){this.$model=r,this.path=n.join("/"),this.isRoot=this.path==="",this.title=p8e(n),this.isRoot?this.parentPath=void 0:this.parentPath=n.slice(0,-1).join("/"),this.defaultViewId=o}get defaultView(){return this.defaultViewId?this.$model.view(this.defaultViewId):null}get breadcrumbs(){return at(!this.isRoot,"Root view folder has no breadcrumbs"),yr(this,"breadcrumbs",()=>{const r=this.parent;return r?r.isRoot?[r,this]:[...r.breadcrumbs,this]:[this]})}get parent(){return at(!this.isRoot,"Root view folder has no parent"),Ef(this.parentPath)?null:this.$model.viewFolder(this.parentPath)}get children(){return this.$model.viewFolderItems(this.path)}get folders(){return yr(this,"folders",()=>{const r=[];for(const n of this.children)n instanceof Yx&&r.push(n);return r})}get views(){return yr(this,"views",()=>{const r=[];for(const n of this.children)n instanceof ME&&r.push(n);return r})}}class rp{Aux;_elements=new Map;_parents=new Map;_children=new Xn(()=>new Set);_rootElements=new Set;_relations=new Map;_incoming=new Xn(()=>new Set);_outgoing=new Xn(()=>new Set);_internal=new Xn(()=>new Set);_views=new Map;_rootViewFolder;_viewFolders=new Map;_viewFolderItems=new Xn(()=>new Set);_allTags=new Xn(()=>new Set);static fromParsed(r){return new rp(r)}static create(r){return new rp(r)}static fromDump(r){const{_stage:n="layouted",projectId:o="unknown",project:a,globals:i,imports:s,deployments:l,views:c,relations:u,elements:d,specification:h}=r;return new rp({[Gd]:n,projectId:o,project:a,globals:{predicates:i?.predicates??{},dynamicPredicates:i?.dynamicPredicates??{},styles:i?.styles??{}},imports:s??{},deployments:{elements:l?.elements??{},relations:l?.relations??{}},views:c??{},relations:u??{},elements:d??{},specification:h})}deployment;$data;constructor(r){this.$data=r;for(const[,n]of G1(r.elements)){const o=this.addElement(n);for(const a of o.tags)this._allTags.get(a).add(o)}for(const[n,o]of G1(r.imports??{}))for(const a of uu(o)){const i=this.addImportedElement(n,a);for(const s of i.tags)this._allTags.get(s).add(i)}for(const n of Z1(r.relations)){const o=this.addRelation(n);for(const a of o.tags)this._allTags.get(a).add(o)}if(this.deployment=new y8e(this),zB(r,"computed")||zB(r,"layouted")){const n=eO($a);Z1(r.views);const o=Kd(Z1(r.views),Px(i=>({view:i,path:Lx(i.title??i.id),folderPath:i.title&&g8e(i.title)||""})),lE((i,s)=>n(i.folderPath,s.folderPath))),a=i=>{let s=this._viewFolders.get(i);if(!s){const l=nF(i,$a);at(Kl(l,1),`View group path "${i}" must have at least one element`);let c;i===""?c=o.find(u=>u.view.id==="index"):c=o.find(u=>u.path===i),s=new Yx(this,l,c?.view.id),this._viewFolders.set(i,s)}return s};this._rootViewFolder=a("");for(const{folderPath:i}of o)this._viewFolders.has(i)||nF(i,$a).reduce((s,l)=>{const c=s.join($a),u=Ef(c)?l:c+$a+l,d=a(u);return this._viewFolderItems.get(c).add(d),s.push(l),s},[]);for(const{view:i,folderPath:s}of o){const l=new ME(this,a(s),i,r.manualLayouts?.[i.id]);this._viewFolderItems.get(s).add(l),this._views.set(i.id,l);for(const c of l.tags)this._allTags.get(c).add(l)}}else this._rootViewFolder=new Yx(this,[""],void 0),this._viewFolders.set(this._rootViewFolder.path,this._rootViewFolder)}get asParsed(){return this}get asComputed(){return this}get asLayouted(){return this}get $styles(){return yr(this,"styles",()=>ZI.from(this.$data.project.styles,this.$data.specification.customColors?{theme:{colors:this.$data.specification.customColors}}:void 0))}isParsed(){return this.stage==="parsed"}isLayouted(){return this.stage==="layouted"}isComputed(){return this.stage==="computed"}get $model(){return this.$data}get stage(){return this.$data[Gd]}get projectId(){return this.$data.projectId??"default"}get project(){return this.$data.project??yr(this,Symbol.for("project"),()=>({id:this.projectId}))}get specification(){return this.$data.specification}get globals(){return yr(this,Symbol.for("globals"),()=>({predicates:{...this.$data.globals?.predicates},dynamicPredicates:{...this.$data.globals?.dynamicPredicates},styles:{...this.$data.globals?.styles}}))}element(r){if(r instanceof jx)return r;const n=Tr(r);return bt(this._elements.get(n),`Element ${n} not found`)}findElement(r){return this._elements.get(Tr(r))??null}roots(){return this._rootElements.values()}elements(){return this._elements.values()}relationships(){return this._relations.values()}relationship(r,n){if(n==="deployment")return this.deployment.relationship(r);const o=Tr(r);let a=this._relations.get(o)??null;return a||n==="model"?bt(a,`Model relation ${o} not found`):bt(this.deployment.findRelationship(o),`No model/deployment relation ${o} not found`)}findRelationship(r,n){if(n==="deployment")return this.deployment.findRelationship(r);let o=this._relations.get(Tr(r))??null;return o||n==="model"?o:this.deployment.findRelationship(r)}views(){return this._views.values()}view(r){const n=Tr(r);return bt(this._views.get(n),`View ${n} not found`)}findView(r){return this._views.get(r)??null}viewFolder(r){return bt(this._viewFolders.get(r),`View folder ${r} not found`)}get rootViewFolder(){return this._rootViewFolder}get hasViewFolders(){return this._viewFolders.size>1}viewFolderItems(r){return at(this._viewFolders.has(r),`View folder ${r} not found`),this._viewFolderItems.get(r)}parent(r){const n=Tr(r);return this._parents.get(n)||null}children(r){const n=Tr(r);return this._children.get(n)}*siblings(r){const n=Tr(r),o=this._parents.get(n),a=o?this._children.get(o.id).values():this.roots();for(const i of a)i.id!==n&&(yield i)}*ancestors(r){let n=Tr(r),o;for(;o=this._parents.get(n);)yield o,n=o.id}*descendants(r){for(const n of this.children(r))yield n,yield*this.descendants(n.id)}*incoming(r,n="all"){const o=Tr(r);for(const a of this._incoming.get(o))switch(!0){case n==="all":case(n==="direct"&&a.target.id===o):case(n==="to-descendants"&&a.target.id!==o):yield a;break}}*outgoing(r,n="all"){const o=Tr(r);for(const a of this._outgoing.get(o))switch(!0){case n==="all":case(n==="direct"&&a.source.id===o):case(n==="from-descendants"&&a.source.id!==o):yield a;break}}get tags(){return yr(this,"tags",()=>lE([...this._allTags.keys()],ex))}get tagsSortedByUsage(){return yr(this,"tagsSortedByUsage",()=>Kd([...this._allTags.entries()],Px(([r,n])=>({tag:r,count:n.size,tagged:n})),lE((r,n)=>ex(r.tag,n.tag)),rF([Zd("count"),"desc"])))}findByTag(r,n){return Qd(this._allTags.get(r),o=>n==="elements"?o instanceof jx:n==="views"?o instanceof ME:n==="relationships"?o instanceof oF:!0)}*elementsOfKind(r){for(const n of this._elements.values())n.kind===r&&(yield n)}*elementsWhere(r){const n=Xd(r);for(const o of this._elements.values())n(o)&&(yield o)}*relationshipsWhere(r){const n=Xd(r);for(const o of this._relations.values())n(o)&&(yield o)}addElement(r){if(this._elements.has(r.id))throw new Error(`Element ${r.id} already exists`);const n=new jx(this,Object.freeze(r));this._elements.set(n.id,n);const o=tx(n.id);return o?(at(this._elements.has(o),`Parent ${o} of ${n.id} not found`),this._parents.set(n.id,this.element(o)),this._children.get(o).add(n)):this._rootElements.add(n),n}addImportedElement(r,n){at(!c6e(n.id),"Imported element already has global FQN");const o=EB(r,n.id);if(this._elements.has(o))throw new Error(`Element ${o} already exists`);const a=new jx(this,Object.freeze({...n,id:o}));this._elements.set(a.id,a);let i=tx(a.id);for(;i;){if(i.includes(".")&&this._elements.has(i))return this._parents.set(a.id,this.element(i)),this._children.get(i).add(a),a;i=tx(i)}return this._rootElements.add(a),a}addRelation(r){if(this._relations.has(r.id))throw new Error(`Relation ${r.id} already exists`);const n=new oF(this,Object.freeze(r)),{source:o,target:a}=n;this._relations.set(n.id,n),this._incoming.get(a.id).add(n),this._outgoing.get(o.id).add(n);const i=b1(o.id,a.id);if(i)for(const s of[i,...jd(i)])this._internal.get(s).add(n);for(const s of jd(o.id)){if(s===i)break;this._outgoing.get(s).add(n)}for(const s of jd(a.id)){if(s===i)break;this._incoming.get(s).add(n)}return n}}(e=>{e.EMPTY=e.create({_stage:"computed",projectId:"default",project:{id:"default"},specification:{elements:{},relationships:{},deployments:{},tags:{}},globals:{predicates:{},dynamicPredicates:{},styles:{}},deployments:{elements:{},relations:{}},elements:{},relations:{},views:{},imports:{}})})(rp||(rp={}));function Gx(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}var O8e=e=>typeof e=="object"&&e!==null;function np(e){return Object.fromEntries(Object.entries(e??{}).filter(([r,n])=>n!==void 0))}var j8e=e=>e==="base";function L8e(e){return e.slice().filter(r=>!j8e(r))}function xF(e){return String.fromCharCode(e+(e>25?39:97))}function B8e(e){let r="",n;for(n=Math.abs(e);n>52;n=n/52|0)r=xF(n%52)+r;return xF(n%52)+r}function F8e(e,r){let n=r.length;for(;n;)e=e*33^r.charCodeAt(--n);return e}function H8e(e){return B8e(F8e(5381,e)>>>0)}var wF=/\s*!(important)?/i;function V8e(e){return typeof e=="string"?wF.test(e):!1}function q8e(e){return typeof e=="string"?e.replace(wF,"").trim():e}function PE(e){return typeof e=="string"?e.replaceAll(" ","_"):e}var go=e=>{const r=new Map;return(...n)=>{const o=JSON.stringify(n);if(r.has(o))return r.get(o);const a=e(...n);return r.set(o,a),a}},U8e=new Set(["__proto__","constructor","prototype"]);function zE(...e){return e.reduce((r,n)=>(n&&Object.keys(n).forEach(o=>{if(U8e.has(o))return;const a=r[o],i=n[o];Gx(a)&&Gx(i)?r[o]=zE(a,i):r[o]=i}),r),{})}var W8e=e=>e!=null;function IE(e,r,n={}){const{stop:o,getKey:a}=n;function i(s,l=[]){if(O8e(s)){const c={};for(const[u,d]of Object.entries(s)){const h=a?.(u,d)??u,f=[...l,h];if(o?.(s,f))return r(s,l);const g=i(d,f);W8e(g)&&(c[h]=g)}return c}return r(s,l)}return i(e)}function Y8e(e,r){return Array.isArray(e)?e.map(n=>r(n)):Gx(e)?IE(e,n=>r(n)):r(e)}function G8e(e,r){return e.reduce((n,o,a)=>{const i=r[a];return o!=null&&(n[i]=o),n},{})}function kF(e,r,n=!0){const{utility:o,conditions:a}=r,{hasShorthand:i,resolveShorthand:s}=o;return IE(e,l=>Array.isArray(l)?G8e(l,a.breakpoints.keys):l,{stop:l=>Array.isArray(l),getKey:n?l=>i?s(l):l:void 0})}var X8e={shift:e=>e,finalize:e=>e,breakpoints:{keys:[]}},K8e=e=>typeof e=="string"?e.replaceAll(/[\n\s]+/g," "):e;function _F(e){const{utility:r,hash:n,conditions:o=X8e}=e,a=s=>[r.prefix,s].filter(Boolean).join("-"),i=(s,l)=>{let c;if(n){const u=[...o.finalize(s),l];c=a(r.toHash(u,H8e))}else c=[...o.finalize(s),a(l)].join(":");return c};return go(({base:s,...l}={})=>{const c=Object.assign(l,s),u=kF(c,e),d=new Set;return IE(u,(h,f)=>{if(h==null)return;const g=V8e(h),[b,...x]=o.shift(f),w=L8e(x),k=r.transform(b,q8e(K8e(h)));let C=i(w,k.className);g&&(C=`${C}!`),d.add(C)}),Array.from(d).join(" ")})}function Z8e(...e){return e.flat().filter(r=>Gx(r)&&Object.keys(np(r)).length>0)}function Q8e(e){function r(a){const i=Z8e(...a);return i.length===1?i:i.map(s=>kF(s,e))}function n(...a){return zE(...r(a))}function o(...a){return Object.assign({},...r(a))}return{mergeCss:go(n),assignCss:o}}var J8e=/([A-Z])/g,eEe=/^ms-/,tEe=go(e=>e.startsWith("--")?e:e.replace(J8e,"-$1").replace(eEe,"-ms-").toLowerCase()),rEe=["min","max","clamp","calc"],nEe=new RegExp(`^(${rEe.join("|")})\\(.*\\)`),oEe=e=>typeof e=="string"&&nEe.test(e),aEe="cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%",iEe=`(?:${aEe.split(",").join("|")})`,sEe=new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${iEe}$`),lEe=e=>typeof e=="string"&&sEe.test(e),cEe=e=>typeof e=="string"&&/^var\(--.+\)$/.test(e),r0={map:Y8e,isCssFunction:oEe,isCssVar:cEe,isCssUnit:lEe},n0=(e,r)=>{if(!e?.defaultValues)return r;const n=typeof e.defaultValues=="function"?e.defaultValues(r):e.defaultValues;return Object.assign({},n,np(r))},uEe=(e={})=>{const r=o=>({className:[e.className,o].filter(Boolean).join("__"),base:e.base?.[o]??{},variants:{},defaultVariants:e.defaultVariants??{},compoundVariants:e.compoundVariants?OE(e.compoundVariants,o):[]}),n=(e.slots??[]).map(o=>[o,r(o)]);for(const[o,a]of Object.entries(e.variants??{}))for(const[i,s]of Object.entries(a))n.forEach(([l,c])=>{c.variants[o]??={},c.variants[o][i]=s[l]??{}});return Object.fromEntries(n)},OE=(e,r)=>e.filter(n=>n.css[r]).map(n=>({...n,css:n.css[r]}));function oo(e,...r){const n=Object.getOwnPropertyDescriptors(e),o=Object.keys(n),a=s=>{const l={};for(let c=0;ca(Array.isArray(s)?s:o.filter(s));return r.map(i).concat(a(o))}var jE=(...e)=>{const r=e.reduce((n,o)=>(o&&o.forEach(a=>n.add(a)),n),new Set([]));return Array.from(r)},EF=["htmlSize","htmlTranslate","htmlWidth","htmlHeight"];function dEe(e){return EF.includes(e)?e.replace("html","").toLowerCase():e}function LE(e){return Object.fromEntries(Object.entries(e).map(([r,n])=>[dEe(r),n]))}LE.keys=EF;const pEe="_hover,_focus,_focusWithin,_focusVisible,_disabled,_active,_visited,_target,_readOnly,_readWrite,_empty,_checked,_enabled,_expanded,_highlighted,_complete,_incomplete,_dragging,_before,_after,_firstLetter,_firstLine,_marker,_selection,_file,_backdrop,_first,_last,_only,_even,_odd,_firstOfType,_lastOfType,_onlyOfType,_peerFocus,_peerHover,_peerActive,_peerFocusWithin,_peerFocusVisible,_peerDisabled,_peerChecked,_peerInvalid,_peerExpanded,_peerPlaceholderShown,_groupFocus,_groupHover,_groupActive,_groupFocusWithin,_groupFocusVisible,_groupDisabled,_groupChecked,_groupExpanded,_groupInvalid,_indeterminate,_required,_valid,_invalid,_autofill,_inRange,_outOfRange,_placeholder,_placeholderShown,_pressed,_selected,_grabbed,_underValue,_overValue,_atValue,_default,_optional,_open,_closed,_fullscreen,_loading,_hidden,_current,_currentPage,_currentStep,_today,_unavailable,_rangeStart,_rangeEnd,_now,_topmost,_motionReduce,_motionSafe,_print,_landscape,_portrait,_dark,_light,_osDark,_osLight,_highContrast,_lessContrast,_moreContrast,_ltr,_rtl,_scrollbar,_scrollbarThumb,_scrollbarTrack,_horizontal,_vertical,_icon,_starting,_noscript,_invertedColors,_shapeSizeXs,_shapeSizeSm,_shapeSizeMd,_shapeSizeLg,_shapeSizeXl,_shapeRectangle,_shapePerson,_shapeBrowser,_shapeMobile,_shapeCylinder,_shapeStorage,_shapeQueue,_notDisabled,_reduceGraphics,_reduceGraphicsOnPan,_noReduceGraphics,_whenPanning,_smallZoom,_compoundTransparent,_edgeActive,_whenHovered,_whenSelectable,_whenSelected,_whenDimmed,_whenFocused,_p3,_srgb,_rec2020,xs,xsOnly,xsDown,sm,smOnly,smDown,md,mdOnly,mdDown,lg,lgOnly,lgDown,xl,xlOnly,xlDown,xsToSm,xsToMd,xsToLg,xsToXl,smToMd,smToLg,smToXl,mdToLg,mdToXl,lgToXl,@/xs,@/sm,@/md,@/lg,@likec4-root/xs,@likec4-root/sm,@likec4-root/md,@likec4-root/lg,@likec4-dialog/xs,@likec4-dialog/sm,@likec4-dialog/md,@likec4-dialog/lg,base",SF=new Set(pEe.split(",")),hEe=/^@|&|&$/;function CF(e){return SF.has(e)||hEe.test(e)}const fEe=/^_/,mEe=/&|@/;function TF(e){return e.map(r=>SF.has(r)?r.replace(fEe,""):mEe.test(r)?`[${PE(r.trim())}]`:r)}function AF(e){return e.sort((r,n)=>{const o=CF(r),a=CF(n);return o&&!a?1:!o&&a?-1:0})}const gEe="aspectRatio:asp,boxDecorationBreak:bx-db,zIndex:z,boxSizing:bx-s,objectPosition:obj-p,objectFit:obj-f,overscrollBehavior:ovs-b,overscrollBehaviorX:ovs-bx,overscrollBehaviorY:ovs-by,position:pos/1,top:top,left:left,inset:inset,insetInline:inset-x/insetX,insetBlock:inset-y/insetY,insetBlockEnd:inset-be,insetBlockStart:inset-bs,insetInlineEnd:inset-e/insetEnd/end,insetInlineStart:inset-s/insetStart/start,right:right,bottom:bottom,float:float,visibility:vis,display:d,hideFrom:hide,hideBelow:show,flexBasis:flex-b,flex:flex,flexDirection:flex-d/flexDir,flexGrow:flex-g,flexShrink:flex-sh,gridTemplateColumns:grid-tc,gridTemplateRows:grid-tr,gridColumn:grid-c,gridRow:grid-r,gridColumnStart:grid-cs,gridColumnEnd:grid-ce,gridAutoFlow:grid-af,gridAutoColumns:grid-ac,gridAutoRows:grid-ar,gap:gap,gridGap:grid-g,gridRowGap:grid-rg,gridColumnGap:grid-cg,rowGap:rg,columnGap:cg,justifyContent:jc,alignContent:ac,alignItems:ai,alignSelf:as,padding:p/1,paddingLeft:pl/1,paddingRight:pr/1,paddingTop:pt/1,paddingBottom:pb/1,paddingBlock:py/1/paddingY,paddingBlockEnd:pbe,paddingBlockStart:pbs,paddingInline:px/paddingX/1,paddingInlineEnd:pe/1/paddingEnd,paddingInlineStart:ps/1/paddingStart,marginLeft:ml/1,marginRight:mr/1,marginTop:mt/1,marginBottom:mb/1,margin:m/1,marginBlock:my/1/marginY,marginBlockEnd:mbe,marginBlockStart:mbs,marginInline:mx/1/marginX,marginInlineEnd:me/1/marginEnd,marginInlineStart:ms/1/marginStart,spaceX:sx,spaceY:sy,outlineWidth:ring-w/ringWidth,outlineColor:ring-c/ringColor,outline:ring/1,outlineOffset:ring-o/ringOffset,focusRing:focus-ring,focusVisibleRing:focus-v-ring,focusRingColor:focus-ring-c,focusRingOffset:focus-ring-o,focusRingWidth:focus-ring-w,focusRingStyle:focus-ring-s,divideX:dvd-x,divideY:dvd-y,divideColor:dvd-c,divideStyle:dvd-s,width:w/1,inlineSize:w-is,minWidth:min-w/minW,minInlineSize:min-w-is,maxWidth:max-w/maxW,maxInlineSize:max-w-is,height:h/1,blockSize:h-bs,minHeight:min-h/minH,minBlockSize:min-h-bs,maxHeight:max-h/maxH,maxBlockSize:max-b,boxSize:size,color:c,fontFamily:ff,fontSize:fs,fontSizeAdjust:fs-a,fontPalette:fp,fontKerning:fk,fontFeatureSettings:ff-s,fontWeight:fw,fontSmoothing:fsmt,fontVariant:fv,fontVariantAlternates:fv-alt,fontVariantCaps:fv-caps,fontVariationSettings:fv-s,fontVariantNumeric:fv-num,letterSpacing:ls,lineHeight:lh,textAlign:ta,textDecoration:td,textDecorationColor:td-c,textEmphasisColor:te-c,textDecorationStyle:td-s,textDecorationThickness:td-t,textUnderlineOffset:tu-o,textTransform:tt,textIndent:ti,textShadow:tsh,textShadowColor:tsh-c/textShadowColor,textOverflow:tov,verticalAlign:va,wordBreak:wb,textWrap:tw,truncate:trunc,lineClamp:lc,listStyleType:li-t,listStylePosition:li-pos,listStyleImage:li-img,listStyle:li-s,backgroundPosition:bg-p/bgPosition,backgroundPositionX:bg-p-x/bgPositionX,backgroundPositionY:bg-p-y/bgPositionY,backgroundAttachment:bg-a/bgAttachment,backgroundClip:bg-cp/bgClip,background:bg/1,backgroundColor:bg-c/bgColor,backgroundOrigin:bg-o/bgOrigin,backgroundImage:bg-i/bgImage,backgroundRepeat:bg-r/bgRepeat,backgroundBlendMode:bg-bm/bgBlendMode,backgroundSize:bg-s/bgSize,backgroundGradient:bg-grad/bgGradient,backgroundLinear:bg-linear/bgLinear,backgroundRadial:bg-radial/bgRadial,backgroundConic:bg-conic/bgConic,textGradient:txt-grad,gradientFromPosition:grad-from-pos,gradientToPosition:grad-to-pos,gradientFrom:grad-from,gradientTo:grad-to,gradientVia:grad-via,gradientViaPosition:grad-via-pos,borderRadius:bdr/rounded,borderTopLeftRadius:bdr-tl/roundedTopLeft,borderTopRightRadius:bdr-tr/roundedTopRight,borderBottomRightRadius:bdr-br/roundedBottomRight,borderBottomLeftRadius:bdr-bl/roundedBottomLeft,borderTopRadius:bdr-t/roundedTop,borderRightRadius:bdr-r/roundedRight,borderBottomRadius:bdr-b/roundedBottom,borderLeftRadius:bdr-l/roundedLeft,borderStartStartRadius:bdr-ss/roundedStartStart,borderStartEndRadius:bdr-se/roundedStartEnd,borderStartRadius:bdr-s/roundedStart,borderEndStartRadius:bdr-es/roundedEndStart,borderEndEndRadius:bdr-ee/roundedEndEnd,borderEndRadius:bdr-e/roundedEnd,border:bd,borderWidth:bd-w,borderTopWidth:bd-t-w,borderLeftWidth:bd-l-w,borderRightWidth:bd-r-w,borderBottomWidth:bd-b-w,borderBlockStartWidth:bd-bs-w,borderBlockEndWidth:bd-be-w,borderColor:bd-c,borderInline:bd-x/borderX,borderInlineWidth:bd-x-w/borderXWidth,borderInlineColor:bd-x-c/borderXColor,borderBlock:bd-y/borderY,borderBlockWidth:bd-y-w/borderYWidth,borderBlockColor:bd-y-c/borderYColor,borderLeft:bd-l,borderLeftColor:bd-l-c,borderInlineStart:bd-s/borderStart,borderInlineStartWidth:bd-s-w/borderStartWidth,borderInlineStartColor:bd-s-c/borderStartColor,borderRight:bd-r,borderRightColor:bd-r-c,borderInlineEnd:bd-e/borderEnd,borderInlineEndWidth:bd-e-w/borderEndWidth,borderInlineEndColor:bd-e-c/borderEndColor,borderTop:bd-t,borderTopColor:bd-t-c,borderBottom:bd-b,borderBottomColor:bd-b-c,borderBlockEnd:bd-be,borderBlockEndColor:bd-be-c,borderBlockStart:bd-bs,borderBlockStartColor:bd-bs-c,opacity:op,boxShadow:bx-sh/shadow,boxShadowColor:bx-sh-c/shadowColor,mixBlendMode:mix-bm,filter:filter,brightness:brightness,contrast:contrast,grayscale:grayscale,hueRotate:hue-rotate,invert:invert,saturate:saturate,sepia:sepia,dropShadow:drop-shadow,blur:blur,backdropFilter:bkdp,backdropBlur:bkdp-blur,backdropBrightness:bkdp-brightness,backdropContrast:bkdp-contrast,backdropGrayscale:bkdp-grayscale,backdropHueRotate:bkdp-hue-rotate,backdropInvert:bkdp-invert,backdropOpacity:bkdp-opacity,backdropSaturate:bkdp-saturate,backdropSepia:bkdp-sepia,borderCollapse:bd-cl,borderSpacing:bd-sp,borderSpacingX:bd-sx,borderSpacingY:bd-sy,tableLayout:tbl,transitionTimingFunction:trs-tmf,transitionDelay:trs-dly,transitionDuration:trs-dur,transitionProperty:trs-prop,transition:transition,animation:anim,animationName:anim-n,animationTimingFunction:anim-tmf,animationDuration:anim-dur,animationDelay:anim-dly,animationPlayState:anim-ps,animationComposition:anim-comp,animationFillMode:anim-fm,animationDirection:anim-dir,animationIterationCount:anim-ic,animationRange:anim-r,animationState:anim-s,animationRangeStart:anim-rs,animationRangeEnd:anim-re,animationTimeline:anim-tl,transformOrigin:trf-o,transformBox:trf-b,transformStyle:trf-s,transform:trf,rotate:rotate,rotateX:rotate-x,rotateY:rotate-y,rotateZ:rotate-z,scale:scale,scaleX:scale-x,scaleY:scale-y,translate:translate,translateX:translate-x/x,translateY:translate-y/y,translateZ:translate-z/z,accentColor:ac-c,caretColor:ca-c,scrollBehavior:scr-bhv,scrollbar:scr-bar,scrollbarColor:scr-bar-c,scrollbarGutter:scr-bar-g,scrollbarWidth:scr-bar-w,scrollMargin:scr-m,scrollMarginLeft:scr-ml,scrollMarginRight:scr-mr,scrollMarginTop:scr-mt,scrollMarginBottom:scr-mb,scrollMarginBlock:scr-my/scrollMarginY,scrollMarginBlockEnd:scr-mbe,scrollMarginBlockStart:scr-mbt,scrollMarginInline:scr-mx/scrollMarginX,scrollMarginInlineEnd:scr-me,scrollMarginInlineStart:scr-ms,scrollPadding:scr-p,scrollPaddingBlock:scr-py/scrollPaddingY,scrollPaddingBlockStart:scr-pbs,scrollPaddingBlockEnd:scr-pbe,scrollPaddingInline:scr-px/scrollPaddingX,scrollPaddingInlineEnd:scr-pe,scrollPaddingInlineStart:scr-ps,scrollPaddingLeft:scr-pl,scrollPaddingRight:scr-pr,scrollPaddingTop:scr-pt,scrollPaddingBottom:scr-pb,scrollSnapAlign:scr-sa,scrollSnapStop:scrs-s,scrollSnapType:scrs-t,scrollSnapStrictness:scrs-strt,scrollSnapMargin:scrs-m,scrollSnapMarginTop:scrs-mt,scrollSnapMarginBottom:scrs-mb,scrollSnapMarginLeft:scrs-ml,scrollSnapMarginRight:scrs-mr,scrollSnapCoordinate:scrs-c,scrollSnapDestination:scrs-d,scrollSnapPointsX:scrs-px,scrollSnapPointsY:scrs-py,scrollSnapTypeX:scrs-tx,scrollSnapTypeY:scrs-ty,scrollTimeline:scrtl,scrollTimelineAxis:scrtl-a,scrollTimelineName:scrtl-n,touchAction:tch-a,userSelect:us,overflow:ov,overflowWrap:ov-wrap,overflowX:ov-x,overflowY:ov-y,overflowAnchor:ov-a,overflowBlock:ov-b,overflowInline:ov-i,overflowClipBox:ovcp-bx,overflowClipMargin:ovcp-m,overscrollBehaviorBlock:ovs-bb,overscrollBehaviorInline:ovs-bi,fill:fill,stroke:stk,strokeWidth:stk-w,strokeDasharray:stk-dsh,strokeDashoffset:stk-do,strokeLinecap:stk-lc,strokeLinejoin:stk-lj,strokeMiterlimit:stk-ml,strokeOpacity:stk-op,srOnly:sr,debug:debug,appearance:ap,backfaceVisibility:bfv,clipPath:cp-path,hyphens:hy,mask:msk,maskImage:msk-i,maskSize:msk-s,textSizeAdjust:txt-adj,container:cq,containerName:cq-n,containerType:cq-t,cursor:cursor,textStyle:textStyle,layerStyle:layerStyle,animationStyle:animationStyle",RF=new Map,NF=new Map;gEe.split(",").forEach(e=>{const[r,n]=e.split(":"),[o,...a]=n.split("/");RF.set(r,o),a.length&&a.forEach(i=>{NF.set(i==="1"?o:i,r)})});const DF=e=>NF.get(e)||e,$F={conditions:{shift:AF,finalize:TF,breakpoints:{keys:["base","xs","sm","md","lg","xl"]}},utility:{transform:(e,r)=>{const n=DF(e);return{className:`${RF.get(n)||tEe(n)}_${PE(r)}`}},hasShorthand:!0,toHash:(e,r)=>r(e.join(":")),resolveShorthand:DF}},yEe=_F($F),be=(...e)=>yEe(op(...e));be.raw=(...e)=>op(...e);const{mergeCss:op}=Q8e($F);function et(){let e="",r=0,n;for(;r({base:{},variants:{},defaultVariants:{},compoundVariants:[],...e});function o0(e){const{base:r,variants:n,defaultVariants:o,compoundVariants:a}=MF(e),i=f=>({...o,...np(f)});function s(f={}){const g=i(f);let b={...r};for(const[w,k]of Object.entries(g))n[w]?.[k]&&(b=op(b,n[w][k]));const x=BE(a,g);return op(b,x)}function l(f){const g=MF(f.config),b=jE(f.variantKeys,Object.keys(n));return o0({base:op(r,g.base),variants:Object.fromEntries(b.map(x=>[x,op(n[x],g.variants[x])])),defaultVariants:zE(o,g.defaultVariants),compoundVariants:[...a,...g.compoundVariants]})}function c(f){return be(s(f))}const u=Object.keys(n);function d(f){return oo(f,u)}const h=Object.fromEntries(Object.entries(n).map(([f,g])=>[f,Object.keys(g)]));return Object.assign(go(c),{__cva__:!0,variantMap:h,variantKeys:u,raw:s,config:e,merge:l,splitVariantProps:d,getVariantProps:i})}function BE(e,r){let n={};return e.forEach(o=>{Object.entries(o).every(([a,i])=>a==="css"?!0:(Array.isArray(i)?i:[i]).some(s=>r[a]===s))&&(n=op(n,o.css))}),n}function bEe(e,r,n,o){if(r.length>0&&typeof n?.[o]=="object")throw new Error(`[recipe:${e}:${o}] Conditions are not supported when using compound variants.`)}function vEe(e){const r=Object.entries(uEe(e)).map(([h,f])=>[h,o0(f)]),n=e.defaultVariants??{},o=r.reduce((h,[f,g])=>(e.className&&(h[f]=g.config.className),h),{});function a(h){const f=r.map(([g,b])=>[g,et(b(h),o[g])]);return Object.fromEntries(f)}function i(h){const f=r.map(([g,b])=>[g,b.raw(h)]);return Object.fromEntries(f)}const s=e.variants??{},l=Object.keys(s);function c(h){return oo(h,l)}const u=h=>({...n,...np(h)}),d=Object.fromEntries(Object.entries(s).map(([h,f])=>[h,Object.keys(f)]));return Object.assign(go(a),{__cva__:!1,raw:i,config:e,variantMap:d,variantKeys:l,classNameMap:o,splitVariantProps:c,getVariantProps:u})}var xEe={outline:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},filled:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"currentColor",stroke:"none"}};const Nt=(e,r,n,o)=>{const a=E.forwardRef(({color:i="currentColor",size:s=24,stroke:l=2,title:c,className:u,children:d,...h},f)=>E.createElement("svg",{ref:f,...xEe[e],width:s,height:s,className:["tabler-icon",`tabler-icon-${r}`,u].join(" "),...e==="filled"?{fill:i}:{strokeWidth:l,stroke:i},...h},[c&&E.createElement("title",{key:"svg-title"},c),...o.map(([g,b])=>E.createElement(g,b)),...Array.isArray(d)?d:[d]]));return a.displayName=`${n}`,a},wEe=[["path",{d:"M12 6m-7 0a7 3 0 1 0 14 0a7 3 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M5 6v12c0 1.657 3.134 3 7 3s7 -1.343 7 -3v-12",key:"svg-1"}]],PF=Nt("outline","cylinder","Cylinder",wEe),kEe=[["path",{d:"M21 14.008v-5.018a1.98 1.98 0 0 0 -1 -1.717l-4 -2.008a2.016 2.016 0 0 0 -2 0l-10 5.008c-.619 .355 -1 1.01 -1 1.718v5.018c0 .709 .381 1.363 1 1.717l4 2.008a2.016 2.016 0 0 0 2 0l10 -5.008c.619 -.355 1 -1.01 1 -1.718z",key:"svg-0"}],["path",{d:"M9 21v-7.5",key:"svg-1"}],["path",{d:"M9 13.5l11.5 -5.5",key:"svg-2"}],["path",{d:"M3.5 11l5.5 2.5",key:"svg-3"}]],_Ee=Nt("outline","rectangular-prism","RectangularPrism",kEe),EEe=[["path",{d:"M3 15m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z",key:"svg-0"}],["path",{d:"M10 15m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z",key:"svg-1"}],["path",{d:"M17 15m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z",key:"svg-2"}],["path",{d:"M5 11v-3a3 3 0 0 1 3 -3h8a3 3 0 0 1 3 3v3",key:"svg-3"}],["path",{d:"M16.5 8.5l2.5 2.5l2.5 -2.5",key:"svg-4"}]],SEe=Nt("outline","reorder","Reorder",EEe),CEe=[["path",{d:"M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0",key:"svg-0"}],["path",{d:"M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2",key:"svg-1"}]],TEe=Nt("outline","user","User",CEe),AEe=[["path",{d:"M6 5a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2v-14z",key:"svg-0"}],["path",{d:"M11 4h2",key:"svg-1"}],["path",{d:"M12 17v.01",key:"svg-2"}]],REe=Nt("outline","device-mobile","DeviceMobile",AEe),NEe=[["path",{d:"M4 8h16",key:"svg-0"}],["path",{d:"M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z",key:"svg-1"}],["path",{d:"M8 4v4",key:"svg-2"}]],DEe=Nt("outline","browser","Browser",NEe),FE=E.createContext(null);function $Ee({value:e,children:r}){return E.useContext(FE)?y.jsx(y.Fragment,{children:r}):y.jsx(FE.Provider,{value:e,children:r})}function Xx({element:e,className:r,style:n}){const o=E.useContext(FE);if(!e||!e.icon||e.icon==="none")return null;let a;return e.icon.startsWith("http://")||e.icon.startsWith("https://")?a=y.jsx("img",{src:e.icon,alt:e.title}):o&&(a=y.jsx(o,{node:e})),a?y.jsx("div",{className:et(r,"likec4-element-icon"),"data-likec4-icon":e.icon,style:n,children:a}):null}const MEe={browser:DEe,cylinder:PF,mobile:REe,person:TEe,queue:SEe,rectangle:_Ee,storage:PF};function PEe({element:e,className:r}){const n=y.jsx(Xx,{element:e,className:r});if(n)return n;const o=MEe[e.shape];return y.jsx("div",{className:et(r,"likec4-shape-icon"),children:y.jsx(o,{})})}function Cf(e){const r=E.useRef(e);return r.current=e,E.useMemo(()=>Object.freeze({get current(){return r.current}}),[])}function zF(e){const r=Cf(e);E.useEffect(()=>()=>{r.current()},[])}function HE(e,r,n,o=0){const a=E.useRef(void 0),i=E.useRef(void 0),s=E.useRef(e),l=E.useRef(void 0),c=()=>{a.current&&(clearTimeout(a.current),a.current=void 0),i.current&&(clearTimeout(i.current),i.current=void 0)};return zF(c),E.useEffect(()=>{s.current=e},r),E.useMemo(()=>{const u=()=>{if(c(),!l.current)return;const h=l.current;l.current=void 0,s.current.apply(h.this,h.args)},d=function(...h){a.current&&clearTimeout(a.current),l.current={args:h,this:this},a.current=setTimeout(u,n),o>0&&!i.current&&(i.current=setTimeout(u,o))};return Object.defineProperties(d,{length:{value:e.length},name:{value:`${e.name||"anonymous"}__debounced__${n}`}}),d},[n,o,...r])}const zEe=()=>{},Kx=typeof globalThis<"u"&&typeof navigator<"u"&&typeof document<"u";function IEe(e){const r=Cf(e),n=E.useRef(0),o=E.useCallback(()=>{Kx&&n.current&&(cancelAnimationFrame(n.current),n.current=0)},[]);return zF(o),[E.useMemo(()=>{const a=(...i)=>{Kx&&(o(),n.current=requestAnimationFrame(()=>{r.current(...i),n.current=0}))};return Object.defineProperties(a,{length:{value:e.length},name:{value:`${e.name||"anonymous"}__raf`}}),a},[]),o]}const OEe=(e,r)=>{if(e===r)return!0;if(e.length!==r.length)return!1;for(const[n,o]of e.entries())if(o!==r[n])return!1;return!0};function jEe(e,r,n=OEe,o=E.useEffect,...a){const i=E.useRef(void 0);(i.current===void 0||Kx&&!n(i.current,r))&&(i.current=r),o(e,i.current,...a)}function IF(){const e=E.useRef(!0);return E.useEffect(()=>{e.current=!1},[]),e.current}const VE=Kx?E.useLayoutEffect:E.useEffect;function LEe(e){E.useEffect(()=>{e()},[])}function qE(e,r){const[n,o]=IEe(e);E.useEffect(()=>(n(),o),r)}const BEe=e=>(e+1)%Number.MAX_SAFE_INTEGER;function FEe(){const[,e]=E.useState(0);return E.useCallback(()=>{e(BEe)},[])}function OF(e,r){const n=IF();E.useEffect(n?zEe:e,r)}const HEe=e=>{e&&clearTimeout(e)};function Zx(e,r){const n=Cf(e),o=Cf(r),a=E.useRef(null),i=E.useCallback(()=>{HEe(a.current)},[]),s=E.useCallback(()=>{o.current!==void 0&&(i(),a.current=setTimeout(()=>{n.current()},o.current))},[]);return E.useEffect(()=>(s(),i),[r]),[i,s]}const jF=(e,r,n)=>{const o=E.useRef(void 0);return(o.current===void 0||!n(o.current,r))&&(o.current=r),E.useMemo(e,o.current)};function _n(e){if(typeof e=="string"||typeof e=="number")return""+e;let r="";if(Array.isArray(e))for(let n=0,o;n{}};function Qx(){for(var e=0,r=arguments.length,n={},o;e=0&&(o=n.slice(a+1),n=n.slice(0,a)),n&&!r.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:o}})}Jx.prototype=Qx.prototype={constructor:Jx,on:function(e,r){var n=this._,o=qEe(e+"",n),a,i=-1,s=o.length;if(arguments.length<2){for(;++i0)for(var n=new Array(a),o=0,a,i;o=0&&(r=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),BF.hasOwnProperty(r)?{space:BF[r],local:e}:e}function WEe(e){return function(){var r=this.ownerDocument,n=this.namespaceURI;return n===UE&&r.documentElement.namespaceURI===UE?r.createElement(e):r.createElementNS(n,e)}}function YEe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function FF(e){var r=e3(e);return(r.local?YEe:WEe)(r)}function GEe(){}function WE(e){return e==null?GEe:function(){return this.querySelector(e)}}function XEe(e){typeof e!="function"&&(e=WE(e));for(var r=this._groups,n=r.length,o=new Array(n),a=0;a=_&&(_=C+1);!(A=w[_])&&++_=0;)(s=o[a])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function x9e(e){e||(e=w9e);function r(h,f){return h&&f?e(h.__data__,f.__data__):!h-!f}for(var n=this._groups,o=n.length,a=new Array(o),i=0;ir?1:e>=r?0:NaN}function k9e(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function _9e(){return Array.from(this)}function E9e(){for(var e=this._groups,r=0,n=e.length;r1?this.each((r==null?z9e:typeof r=="function"?O9e:I9e)(e,r,n??"")):Tf(this.node(),e)}function Tf(e,r){return e.style.getPropertyValue(r)||WF(e).getComputedStyle(e,null).getPropertyValue(r)}function L9e(e){return function(){delete this[e]}}function B9e(e,r){return function(){this[e]=r}}function F9e(e,r){return function(){var n=r.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function H9e(e,r){return arguments.length>1?this.each((r==null?L9e:typeof r=="function"?F9e:B9e)(e,r)):this.node()[e]}function YF(e){return e.trim().split(/^|\s+/)}function YE(e){return e.classList||new GF(e)}function GF(e){this._node=e,this._names=YF(e.getAttribute("class")||"")}GF.prototype={add:function(e){var r=this._names.indexOf(e);r<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var r=this._names.indexOf(e);r>=0&&(this._names.splice(r,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function XF(e,r){for(var n=YE(e),o=-1,a=r.length;++o=0&&(n=r.slice(o+1),r=r.slice(0,o)),{type:r,name:n}})}function g7e(e){return function(){var r=this.__on;if(r){for(var n=0,o=-1,a=r.length,i;n()=>e;function XE(e,{sourceEvent:r,subject:n,target:o,identifier:a,active:i,x:s,y:l,dx:c,dy:u,dispatch:d}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:d}})}XE.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function C7e(e){return!e.ctrlKey&&!e.button}function T7e(){return this.parentNode}function A7e(e,r){return r??{x:e.x,y:e.y}}function R7e(){return navigator.maxTouchPoints||"ontouchstart"in this}function tH(){var e=C7e,r=T7e,n=A7e,o=R7e,a={},i=Qx("start","drag","end"),s=0,l,c,u,d,h=0;function f(T){T.on("mousedown.drag",g).filter(o).on("touchstart.drag",w).on("touchmove.drag",k,S7e).on("touchend.drag touchcancel.drag",C).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(T,A){if(!(d||!e.call(this,T,A))){var R=_(this,r.call(this,T,A),T,A,"mouse");R&&(za(T.view).on("mousemove.drag",b,i0).on("mouseup.drag",x,i0),JF(T.view),GE(T),u=!1,l=T.clientX,c=T.clientY,R("start",T))}}function b(T){if(Af(T),!u){var A=T.clientX-l,R=T.clientY-c;u=A*A+R*R>h}a.mouse("drag",T)}function x(T){za(T.view).on("mousemove.drag mouseup.drag",null),eH(T.view,u),Af(T),a.mouse("end",T)}function w(T,A){if(e.call(this,T,A)){var R=T.changedTouches,D=r.call(this,T,A),N=R.length,M,O;for(M=0;M>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):n===8?o3(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):n===4?o3(r>>12&15|r>>8&240,r>>8&15|r>>4&240,r>>4&15|r&240,((r&15)<<4|r&15)/255):null):(r=D7e.exec(e))?new ca(r[1],r[2],r[3],1):(r=$7e.exec(e))?new ca(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=M7e.exec(e))?o3(r[1],r[2],r[3],r[4]):(r=P7e.exec(e))?o3(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=z7e.exec(e))?cH(r[1],r[2]/100,r[3]/100,1):(r=I7e.exec(e))?cH(r[1],r[2]/100,r[3]/100,r[4]):nH.hasOwnProperty(e)?iH(nH[e]):e==="transparent"?new ca(NaN,NaN,NaN,0):null}function iH(e){return new ca(e>>16&255,e>>8&255,e&255,1)}function o3(e,r,n,o){return o<=0&&(e=r=n=NaN),new ca(e,r,n,o)}function L7e(e){return e instanceof s0||(e=ap(e)),e?(e=e.rgb(),new ca(e.r,e.g,e.b,e.opacity)):new ca}function ZE(e,r,n,o){return arguments.length===1?L7e(e):new ca(e,r,n,o??1)}function ca(e,r,n,o){this.r=+e,this.g=+r,this.b=+n,this.opacity=+o}KE(ca,ZE,rH(s0,{brighter(e){return e=e==null?n3:Math.pow(n3,e),new ca(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?l0:Math.pow(l0,e),new ca(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ca(ip(this.r),ip(this.g),ip(this.b),a3(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:sH,formatHex:sH,formatHex8:B7e,formatRgb:lH,toString:lH}));function sH(){return`#${sp(this.r)}${sp(this.g)}${sp(this.b)}`}function B7e(){return`#${sp(this.r)}${sp(this.g)}${sp(this.b)}${sp((isNaN(this.opacity)?1:this.opacity)*255)}`}function lH(){const e=a3(this.opacity);return`${e===1?"rgb(":"rgba("}${ip(this.r)}, ${ip(this.g)}, ${ip(this.b)}${e===1?")":`, ${e})`}`}function a3(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ip(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function sp(e){return e=ip(e),(e<16?"0":"")+e.toString(16)}function cH(e,r,n,o){return o<=0?e=r=n=NaN:n<=0||n>=1?e=r=NaN:r<=0&&(e=NaN),new as(e,r,n,o)}function uH(e){if(e instanceof as)return new as(e.h,e.s,e.l,e.opacity);if(e instanceof s0||(e=ap(e)),!e)return new as;if(e instanceof as)return e;e=e.rgb();var r=e.r/255,n=e.g/255,o=e.b/255,a=Math.min(r,n,o),i=Math.max(r,n,o),s=NaN,l=i-a,c=(i+a)/2;return l?(r===i?s=(n-o)/l+(n0&&c<1?0:s,new as(s,l,c,e.opacity)}function F7e(e,r,n,o){return arguments.length===1?uH(e):new as(e,r,n,o??1)}function as(e,r,n,o){this.h=+e,this.s=+r,this.l=+n,this.opacity=+o}KE(as,F7e,rH(s0,{brighter(e){return e=e==null?n3:Math.pow(n3,e),new as(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?l0:Math.pow(l0,e),new as(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,r=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,o=n+(n<.5?n:1-n)*r,a=2*n-o;return new ca(QE(e>=240?e-240:e+120,a,o),QE(e,a,o),QE(e<120?e+240:e-120,a,o),this.opacity)},clamp(){return new as(dH(this.h),i3(this.s),i3(this.l),a3(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 e=a3(this.opacity);return`${e===1?"hsl(":"hsla("}${dH(this.h)}, ${i3(this.s)*100}%, ${i3(this.l)*100}%${e===1?")":`, ${e})`}`}}));function dH(e){return e=(e||0)%360,e<0?e+360:e}function i3(e){return Math.max(0,Math.min(1,e||0))}function QE(e,r,n){return(e<60?r+(n-r)*e/60:e<180?n:e<240?r+(n-r)*(240-e)/60:r)*255}const JE=e=>()=>e;function H7e(e,r){return function(n){return e+n*r}}function V7e(e,r,n){return e=Math.pow(e,n),r=Math.pow(r,n)-e,n=1/n,function(o){return Math.pow(e+o*r,n)}}function q7e(e){return(e=+e)==1?pH:function(r,n){return n-r?V7e(r,n,e):JE(isNaN(r)?n:r)}}function pH(e,r){var n=r-e;return n?H7e(e,n):JE(isNaN(e)?r:e)}const s3=(function e(r){var n=q7e(r);function o(a,i){var s=n((a=ZE(a)).r,(i=ZE(i)).r),l=n(a.g,i.g),c=n(a.b,i.b),u=pH(a.opacity,i.opacity);return function(d){return a.r=s(d),a.g=l(d),a.b=c(d),a.opacity=u(d),a+""}}return o.gamma=e,o})(1);function U7e(e,r){r||(r=[]);var n=e?Math.min(r.length,e.length):0,o=r.slice(),a;return function(i){for(a=0;an&&(i=r.slice(n,i),l[s]?l[s]+=i:l[++s]=i),(o=o[0])===(a=a[0])?l[s]?l[s]+=a:l[++s]=a:(l[++s]=null,c.push({i:s,x:cl(o,a)})),n=t9.lastIndex;return n180?d+=360:d-u>180&&(u+=360),f.push({i:h.push(a(h)+"rotate(",null,o)-2,x:cl(u,d)})):d&&h.push(a(h)+"rotate("+d+o)}function l(u,d,h,f){u!==d?f.push({i:h.push(a(h)+"skewX(",null,o)-2,x:cl(u,d)}):d&&h.push(a(h)+"skewX("+d+o)}function c(u,d,h,f,g,b){if(u!==h||d!==f){var x=g.push(a(g)+"scale(",null,",",null,")");b.push({i:x-4,x:cl(u,h)},{i:x-2,x:cl(d,f)})}else(h!==1||f!==1)&&g.push(a(g)+"scale("+h+","+f+")")}return function(u,d){var h=[],f=[];return u=e(u),d=e(d),i(u.translateX,u.translateY,d.translateX,d.translateY,h,f),s(u.rotate,d.rotate,h,f),l(u.skewX,d.skewX,h,f),c(u.scaleX,u.scaleY,d.scaleX,d.scaleY,h,f),u=d=null,function(g){for(var b=-1,x=f.length,w;++b=0&&e._call.call(void 0,r),e=e._next;--Nf}function kH(){lp=(d3=f0.now())+p3,Nf=d0=0;try{iSe()}finally{Nf=0,lSe(),lp=0}}function sSe(){var e=f0.now(),r=e-d3;r>vH&&(p3-=r,d3=e)}function lSe(){for(var e,r=u3,n,o=1/0;r;)r._call?(o>r._time&&(o=r._time),e=r,r=r._next):(n=r._next,r._next=null,r=e?e._next=n:u3=n);h0=e,n9(o)}function n9(e){if(!Nf){d0&&(d0=clearTimeout(d0));var r=e-lp;r>24?(e<1/0&&(d0=setTimeout(kH,e-f0.now()-p3)),p0&&(p0=clearInterval(p0))):(p0||(d3=f0.now(),p0=setInterval(sSe,vH)),Nf=1,xH(kH))}}function _H(e,r,n){var o=new h3;return r=r==null?0:+r,o.restart(a=>{o.stop(),e(a+r)},r,n),o}var cSe=Qx("start","end","cancel","interrupt"),uSe=[],EH=0,SH=1,o9=2,f3=3,CH=4,a9=5,m3=6;function g3(e,r,n,o,a,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;dSe(e,n,{name:r,index:o,group:a,on:cSe,tween:uSe,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:EH})}function i9(e,r){var n=is(e,r);if(n.state>EH)throw new Error("too late; already scheduled");return n}function ul(e,r){var n=is(e,r);if(n.state>f3)throw new Error("too late; already running");return n}function is(e,r){var n=e.__transition;if(!n||!(n=n[r]))throw new Error("transition not found");return n}function dSe(e,r,n){var o=e.__transition,a;o[r]=n,n.timer=wH(i,0,n.time);function i(u){n.state=SH,n.timer.restart(s,n.delay,n.time),n.delay<=u&&s(u-n.delay)}function s(u){var d,h,f,g;if(n.state!==SH)return c();for(d in o)if(g=o[d],g.name===n.name){if(g.state===f3)return _H(s);g.state===CH?(g.state=m3,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete o[d]):+do9&&o.state=0&&(r=r.slice(0,n)),!r||r==="start"})}function FSe(e,r,n){var o,a,i=BSe(r)?i9:ul;return function(){var s=i(this,e),l=s.on;l!==o&&(a=(o=l).copy()).on(r,n),s.on=a}}function HSe(e,r){var n=this._id;return arguments.length<2?is(this.node(),n).on.on(e):this.each(FSe(n,e,r))}function VSe(e){return function(){var r=this.parentNode;for(var n in this.__transition)if(+n!==e)return;r&&r.removeChild(this)}}function qSe(){return this.on("end.remove",VSe(this._id))}function USe(e){var r=this._name,n=this._id;typeof e!="function"&&(e=WE(e));for(var o=this._groups,a=o.length,i=new Array(a),s=0;s()=>e;function gCe(e,{sourceEvent:r,target:n,transform:o,dispatch:a}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:a}})}function sc(e,r,n){this.k=e,this.x=r,this.y=n}sc.prototype={constructor:sc,scale:function(e){return e===1?this:new sc(this.k*e,this.x,this.y)},translate:function(e,r){return e===0&r===0?this:new sc(this.k,this.x+this.k*e,this.y+this.k*r)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var v3=new sc(1,0,0);NH.prototype=sc.prototype;function NH(e){for(;!e.__zoom;)if(!(e=e.parentNode))return v3;return e.__zoom}function l9(e){e.stopImmediatePropagation()}function m0(e){e.preventDefault(),e.stopImmediatePropagation()}function yCe(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function bCe(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function DH(){return this.__zoom||v3}function vCe(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function xCe(){return navigator.maxTouchPoints||"ontouchstart"in this}function wCe(e,r,n){var o=e.invertX(r[0][0])-n[0][0],a=e.invertX(r[1][0])-n[1][0],i=e.invertY(r[0][1])-n[0][1],s=e.invertY(r[1][1])-n[1][1];return e.translate(a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a),s>i?(i+s)/2:Math.min(0,i)||Math.max(0,s))}function $H(){var e=yCe,r=bCe,n=wCe,o=vCe,a=xCe,i=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],l=250,c=c3,u=Qx("start","zoom","end"),d,h,f,g=500,b=150,x=0,w=10;function k(P){P.property("__zoom",DH).on("wheel.zoom",N,{passive:!1}).on("mousedown.zoom",M).on("dblclick.zoom",O).filter(a).on("touchstart.zoom",F).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",U).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(P,V,I,H){var q=P.selection?P.selection():P;q.property("__zoom",DH),P!==q?A(P,V,I,H):q.interrupt().each(function(){R(this,arguments).event(H).start().zoom(null,typeof V=="function"?V.apply(this,arguments):V).end()})},k.scaleBy=function(P,V,I,H){k.scaleTo(P,function(){var q=this.__zoom.k,Z=typeof V=="function"?V.apply(this,arguments):V;return q*Z},I,H)},k.scaleTo=function(P,V,I,H){k.transform(P,function(){var q=r.apply(this,arguments),Z=this.__zoom,W=I==null?T(q):typeof I=="function"?I.apply(this,arguments):I,G=Z.invert(W),K=typeof V=="function"?V.apply(this,arguments):V;return n(_(C(Z,K),W,G),q,s)},I,H)},k.translateBy=function(P,V,I,H){k.transform(P,function(){return n(this.__zoom.translate(typeof V=="function"?V.apply(this,arguments):V,typeof I=="function"?I.apply(this,arguments):I),r.apply(this,arguments),s)},null,H)},k.translateTo=function(P,V,I,H,q){k.transform(P,function(){var Z=r.apply(this,arguments),W=this.__zoom,G=H==null?T(Z):typeof H=="function"?H.apply(this,arguments):H;return n(v3.translate(G[0],G[1]).scale(W.k).translate(typeof V=="function"?-V.apply(this,arguments):-V,typeof I=="function"?-I.apply(this,arguments):-I),Z,s)},H,q)};function C(P,V){return V=Math.max(i[0],Math.min(i[1],V)),V===P.k?P:new sc(V,P.x,P.y)}function _(P,V,I){var H=V[0]-I[0]*P.k,q=V[1]-I[1]*P.k;return H===P.x&&q===P.y?P:new sc(P.k,H,q)}function T(P){return[(+P[0][0]+ +P[1][0])/2,(+P[0][1]+ +P[1][1])/2]}function A(P,V,I,H){P.on("start.zoom",function(){R(this,arguments).event(H).start()}).on("interrupt.zoom end.zoom",function(){R(this,arguments).event(H).end()}).tween("zoom",function(){var q=this,Z=arguments,W=R(q,Z).event(H),G=r.apply(q,Z),K=I==null?T(G):typeof I=="function"?I.apply(q,Z):I,j=Math.max(G[1][0]-G[0][0],G[1][1]-G[0][1]),Y=q.__zoom,Q=typeof V=="function"?V.apply(q,Z):V,J=c(Y.invert(K).concat(j/Y.k),Q.invert(K).concat(j/Q.k));return function(ie){if(ie===1)ie=Q;else{var ne=J(ie),re=j/ne[2];ie=new sc(re,K[0]-ne[0]*re,K[1]-ne[1]*re)}W.zoom(null,ie)}})}function R(P,V,I){return!I&&P.__zooming||new D(P,V)}function D(P,V){this.that=P,this.args=V,this.active=0,this.sourceEvent=null,this.extent=r.apply(P,V),this.taps=0}D.prototype={event:function(P){return P&&(this.sourceEvent=P),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(P,V){return this.mouse&&P!=="mouse"&&(this.mouse[1]=V.invert(this.mouse[0])),this.touch0&&P!=="touch"&&(this.touch0[1]=V.invert(this.touch0[0])),this.touch1&&P!=="touch"&&(this.touch1[1]=V.invert(this.touch1[0])),this.that.__zoom=V,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(P){var V=za(this.that).datum();u.call(P,this.that,new gCe(P,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:u}),V)}};function N(P,...V){if(!e.apply(this,arguments))return;var I=R(this,V).event(P),H=this.__zoom,q=Math.max(i[0],Math.min(i[1],H.k*Math.pow(2,o.apply(this,arguments)))),Z=os(P);if(I.wheel)(I.mouse[0][0]!==Z[0]||I.mouse[0][1]!==Z[1])&&(I.mouse[1]=H.invert(I.mouse[0]=Z)),clearTimeout(I.wheel);else{if(H.k===q)return;I.mouse=[Z,H.invert(Z)],y3(this),I.start()}m0(P),I.wheel=setTimeout(W,b),I.zoom("mouse",n(_(C(H,q),I.mouse[0],I.mouse[1]),I.extent,s));function W(){I.wheel=null,I.end()}}function M(P,...V){if(f||!e.apply(this,arguments))return;var I=P.currentTarget,H=R(this,V,!0).event(P),q=za(P.view).on("mousemove.zoom",K,!0).on("mouseup.zoom",j,!0),Z=os(P,I),W=P.clientX,G=P.clientY;JF(P.view),l9(P),H.mouse=[Z,this.__zoom.invert(Z)],y3(this),H.start();function K(Y){if(m0(Y),!H.moved){var Q=Y.clientX-W,J=Y.clientY-G;H.moved=Q*Q+J*J>x}H.event(Y).zoom("mouse",n(_(H.that.__zoom,H.mouse[0]=os(Y,I),H.mouse[1]),H.extent,s))}function j(Y){q.on("mousemove.zoom mouseup.zoom",null),eH(Y.view,H.moved),m0(Y),H.event(Y).end()}}function O(P,...V){if(e.apply(this,arguments)){var I=this.__zoom,H=os(P.changedTouches?P.changedTouches[0]:P,this),q=I.invert(H),Z=I.k*(P.shiftKey?.5:2),W=n(_(C(I,Z),H,q),r.apply(this,V),s);m0(P),l>0?za(this).transition().duration(l).call(A,W,H,P):za(this).call(k.transform,W,H,P)}}function F(P,...V){if(e.apply(this,arguments)){var I=P.touches,H=I.length,q=R(this,V,P.changedTouches.length===H).event(P),Z,W,G,K;for(l9(P),W=0;W"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:r,sourceHandle:n,targetHandle:o})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:o}", edge id: ${r}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},g0=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],MH=["Enter"," ","Escape"],PH={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:r,y:n})=>`Moved selected node ${e}. New position, x: ${r}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var Df;(function(e){e.Strict="strict",e.Loose="loose"})(Df||(Df={}));var cp;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(cp||(cp={}));var y0;(function(e){e.Partial="partial",e.Full="full"})(y0||(y0={}));const zH={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null};var bu;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(bu||(bu={}));var x3;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(x3||(x3={}));var tt;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(tt||(tt={}));const IH={[tt.Left]:tt.Right,[tt.Right]:tt.Left,[tt.Top]:tt.Bottom,[tt.Bottom]:tt.Top};function OH(e){return e===null?null:e?"valid":"invalid"}const jH=e=>"id"in e&&"source"in e&&"target"in e,kCe=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),c9=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),b0=(e,r=[0,0])=>{const{width:n,height:o}=ao(e),a=e.origin??r,i=n*a[0],s=o*a[1];return{x:e.position.x-i,y:e.position.y-s}},LH=(e,r={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((o,a)=>{const i=typeof a=="string";let s=!r.nodeLookup&&!i?a:void 0;r.nodeLookup&&(s=i?r.nodeLookup.get(a):c9(a)?a:r.nodeLookup.get(a.id));const l=s?_3(s,r.nodeOrigin):{x:0,y:0,x2:0,y2:0};return w3(o,l)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return k3(n)},$f=(e,r={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},o=!1;return e.forEach(a=>{(r.filter===void 0||r.filter(a))&&(n=w3(n,_3(a)),o=!0)}),o?k3(n):{x:0,y:0,width:0,height:0}},u9=(e,r,[n,o,a]=[0,0,1],i=!1,s=!1)=>{const l={...w0(r,[n,o,a]),width:r.width/a,height:r.height/a},c=[];for(const u of e.values()){const{measured:d,selectable:h=!0,hidden:f=!1}=u;if(s&&!h||f)continue;const g=d.width??u.width??u.initialWidth??null,b=d.height??u.height??u.initialHeight??null,x=v0(l,dp(u)),w=(g??0)*(b??0),k=i&&x>0;(!u.internals.handleBounds||k||x>=w||u.dragging)&&c.push(u)}return c},_Ce=(e,r)=>{const n=new Set;return e.forEach(o=>{n.add(o.id)}),r.filter(o=>n.has(o.source)||n.has(o.target))};function ECe(e,r){const n=new Map,o=r?.nodes?new Set(r.nodes.map(a=>a.id)):null;return e.forEach(a=>{a.measured.width&&a.measured.height&&(r?.includeHiddenNodes||!a.hidden)&&(!o||o.has(a.id))&&n.set(a.id,a)}),n}async function SCe({nodes:e,width:r,height:n,panZoom:o,minZoom:a,maxZoom:i},s){if(e.size===0)return Promise.resolve(!0);const l=ECe(e,s),c=$f(l),u=vu(c,r,n,s?.minZoom??a,s?.maxZoom??i,s?.padding??.1);return await o.setViewport(u,{duration:s?.duration,ease:s?.ease,interpolate:s?.interpolate}),Promise.resolve(!0)}function BH({nodeId:e,nextPosition:r,nodeLookup:n,nodeOrigin:o=[0,0],nodeExtent:a,onError:i}){const s=n.get(e),l=s.parentId?n.get(s.parentId):void 0,{x:c,y:u}=l?l.internals.positionAbsolute:{x:0,y:0},d=s.origin??o;let h=s.extent||a;if(s.extent==="parent"&&!s.expandParent)if(!l)i?.("005",dl.error005());else{const g=l.measured.width,b=l.measured.height;g&&b&&(h=[[c,u],[c+g,u+b]])}else l&&If(s.extent)&&(h=[[s.extent[0][0]+c,s.extent[0][1]+u],[s.extent[1][0]+c,s.extent[1][1]+u]]);const f=If(h)?up(r,h,s.measured):r;return(s.measured.width===void 0||s.measured.height===void 0)&&i?.("015",dl.error015()),{position:{x:f.x-c+(s.measured.width??0)*d[0],y:f.y-u+(s.measured.height??0)*d[1]},positionAbsolute:f}}async function CCe({nodesToRemove:e=[],edgesToRemove:r=[],nodes:n,edges:o,onBeforeDelete:a}){const i=new Set(e.map(h=>h.id)),s=[];for(const h of n){if(h.deletable===!1)continue;const f=i.has(h.id),g=!f&&h.parentId&&s.find(b=>b.id===h.parentId);(f||g)&&s.push(h)}const l=new Set(r.map(h=>h.id)),c=o.filter(h=>h.deletable!==!1),u=_Ce(s,c);for(const h of c)l.has(h.id)&&!u.find(f=>f.id===h.id)&&u.push(h);if(!a)return{edges:u,nodes:s};const d=await a({nodes:s,edges:u});return typeof d=="boolean"?d?{edges:u,nodes:s}:{edges:[],nodes:[]}:d}const Mf=(e,r=0,n=1)=>Math.min(Math.max(e,r),n),up=(e={x:0,y:0},r,n)=>({x:Mf(e.x,r[0][0],r[1][0]-(n?.width??0)),y:Mf(e.y,r[0][1],r[1][1]-(n?.height??0))});function FH(e,r,n){const{width:o,height:a}=ao(n),{x:i,y:s}=n.internals.positionAbsolute;return up(e,[[i,s],[i+o,s+a]],r)}const HH=(e,r,n)=>en?-Mf(Math.abs(e-n),1,r)/r:0,VH=(e,r,n=15,o=40)=>{const a=HH(e.x,o,r.width-o)*n,i=HH(e.y,o,r.height-o)*n;return[a,i]},w3=(e,r)=>({x:Math.min(e.x,r.x),y:Math.min(e.y,r.y),x2:Math.max(e.x2,r.x2),y2:Math.max(e.y2,r.y2)}),d9=({x:e,y:r,width:n,height:o})=>({x:e,y:r,x2:e+n,y2:r+o}),k3=({x:e,y:r,x2:n,y2:o})=>({x:e,y:r,width:n-e,height:o-r}),dp=(e,r=[0,0])=>{const{x:n,y:o}=c9(e)?e.internals.positionAbsolute:b0(e,r);return{x:n,y:o,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},_3=(e,r=[0,0])=>{const{x:n,y:o}=c9(e)?e.internals.positionAbsolute:b0(e,r);return{x:n,y:o,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:o+(e.measured?.height??e.height??e.initialHeight??0)}},qH=(e,r)=>k3(w3(d9(e),d9(r))),v0=(e,r)=>{const n=Math.max(0,Math.min(e.x+e.width,r.x+r.width)-Math.max(e.x,r.x)),o=Math.max(0,Math.min(e.y+e.height,r.y+r.height)-Math.max(e.y,r.y));return Math.ceil(n*o)},UH=e=>ss(e.width)&&ss(e.height)&&ss(e.x)&&ss(e.y),ss=e=>!isNaN(e)&&isFinite(e),TCe=(e,r)=>{},x0=(e,r=[1,1])=>({x:r[0]*Math.round(e.x/r[0]),y:r[1]*Math.round(e.y/r[1])}),w0=({x:e,y:r},[n,o,a],i=!1,s=[1,1])=>{const l={x:(e-n)/a,y:(r-o)/a};return i?x0(l,s):l},E3=({x:e,y:r},[n,o,a])=>({x:e*a+n,y:r*a+o});function Pf(e,r){if(typeof e=="number")return Math.floor((r-r/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(n)}if(typeof e=="string"&&e.endsWith("%")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(r*n*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function ACe(e,r,n){if(typeof e=="string"||typeof e=="number"){const o=Pf(e,n),a=Pf(e,r);return{top:o,right:a,bottom:o,left:a,x:a*2,y:o*2}}if(typeof e=="object"){const o=Pf(e.top??e.y??0,n),a=Pf(e.bottom??e.y??0,n),i=Pf(e.left??e.x??0,r),s=Pf(e.right??e.x??0,r);return{top:o,right:s,bottom:a,left:i,x:i+s,y:o+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function RCe(e,r,n,o,a,i){const{x:s,y:l}=E3(e,[r,n,o]),{x:c,y:u}=E3({x:e.x+e.width,y:e.y+e.height},[r,n,o]),d=a-c,h=i-u;return{left:Math.floor(s),top:Math.floor(l),right:Math.floor(d),bottom:Math.floor(h)}}const vu=(e,r,n,o,a,i)=>{const s=ACe(i,r,n),l=(r-s.x)/e.width,c=(n-s.y)/e.height,u=Math.min(l,c),d=Mf(u,o,a),h=e.x+e.width/2,f=e.y+e.height/2,g=r/2-h*d,b=n/2-f*d,x=RCe(e,g,b,d,r,n),w={left:Math.min(x.left-s.left,0),top:Math.min(x.top-s.top,0),right:Math.min(x.right-s.right,0),bottom:Math.min(x.bottom-s.bottom,0)};return{x:g-w.left+w.right,y:b-w.top+w.bottom,zoom:d}},zf=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0;function If(e){return e!=null&&e!=="parent"}function ao(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function WH(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function YH(e,r={width:0,height:0},n,o,a){const i={...e},s=o.get(n);if(s){const l=s.origin||a;i.x+=s.internals.positionAbsolute.x-(r.width??0)*l[0],i.y+=s.internals.positionAbsolute.y-(r.height??0)*l[1]}return i}function GH(e,r){if(e.size!==r.size)return!1;for(const n of e)if(!r.has(n))return!1;return!0}function NCe(){let e,r;return{promise:new Promise((n,o)=>{e=n,r=o}),resolve:e,reject:r}}function DCe(e){return{...PH,...e||{}}}function k0(e,{snapGrid:r=[0,0],snapToGrid:n=!1,transform:o,containerBounds:a}){const{x:i,y:s}=ls(e),l=w0({x:i-(a?.left??0),y:s-(a?.top??0)},o),{x:c,y:u}=n?x0(l,r):l;return{xSnapped:c,ySnapped:u,...l}}const p9=e=>({width:e.offsetWidth,height:e.offsetHeight}),XH=e=>e?.getRootNode?.()||window?.document,$Ce=["INPUT","SELECT","TEXTAREA"];function KH(e){const r=e.composedPath?.()?.[0]||e.target;return r?.nodeType!==1?!1:$Ce.includes(r.nodeName)||r.hasAttribute("contenteditable")||!!r.closest(".nokey")}const ZH=e=>"clientX"in e,ls=(e,r)=>{const n=ZH(e),o=n?e.clientX:e.touches?.[0].clientX,a=n?e.clientY:e.touches?.[0].clientY;return{x:o-(r?.left??0),y:a-(r?.top??0)}},QH=(e,r,n,o,a)=>{const i=r.querySelectorAll(`.${e}`);return!i||!i.length?null:Array.from(i).map(s=>{const l=s.getBoundingClientRect();return{id:s.getAttribute("data-handleid"),type:e,nodeId:a,position:s.getAttribute("data-handlepos"),x:(l.left-n.left)/o,y:(l.top-n.top)/o,...p9(s)}})};function JH({sourceX:e,sourceY:r,targetX:n,targetY:o,sourceControlX:a,sourceControlY:i,targetControlX:s,targetControlY:l}){const c=e*.125+a*.375+s*.375+n*.125,u=r*.125+i*.375+l*.375+o*.125,d=Math.abs(c-e),h=Math.abs(u-r);return[c,u,d,h]}function S3(e,r){return e>=0?.5*e:r*25*Math.sqrt(-e)}function eV({pos:e,x1:r,y1:n,x2:o,y2:a,c:i}){switch(e){case tt.Left:return[r-S3(r-o,i),n];case tt.Right:return[r+S3(o-r,i),n];case tt.Top:return[r,n-S3(n-a,i)];case tt.Bottom:return[r,n+S3(a-n,i)]}}function C3({sourceX:e,sourceY:r,sourcePosition:n=tt.Bottom,targetX:o,targetY:a,targetPosition:i=tt.Top,curvature:s=.25}){const[l,c]=eV({pos:n,x1:e,y1:r,x2:o,y2:a,c:s}),[u,d]=eV({pos:i,x1:o,y1:a,x2:e,y2:r,c:s}),[h,f,g,b]=JH({sourceX:e,sourceY:r,targetX:o,targetY:a,sourceControlX:l,sourceControlY:c,targetControlX:u,targetControlY:d});return[`M${e},${r} C${l},${c} ${u},${d} ${o},${a}`,h,f,g,b]}function tV({sourceX:e,sourceY:r,targetX:n,targetY:o}){const a=Math.abs(n-e)/2,i=n0}const zCe=({source:e,sourceHandle:r,target:n,targetHandle:o})=>`xy-edge__${e}${r||""}-${n}${o||""}`,ICe=(e,r)=>r.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),OCe=(e,r)=>{if(!e.source||!e.target)return r;let n;return jH(e)?n={...e}:n={...e,id:zCe(e)},ICe(n,r)?r:(n.sourceHandle===null&&delete n.sourceHandle,n.targetHandle===null&&delete n.targetHandle,r.concat(n))};function rV({sourceX:e,sourceY:r,targetX:n,targetY:o}){const[a,i,s,l]=tV({sourceX:e,sourceY:r,targetX:n,targetY:o});return[`M ${e},${r}L ${n},${o}`,a,i,s,l]}const nV={[tt.Left]:{x:-1,y:0},[tt.Right]:{x:1,y:0},[tt.Top]:{x:0,y:-1},[tt.Bottom]:{x:0,y:1}},jCe=({source:e,sourcePosition:r=tt.Bottom,target:n})=>r===tt.Left||r===tt.Right?e.xMath.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2));function LCe({source:e,sourcePosition:r=tt.Bottom,target:n,targetPosition:o=tt.Top,center:a,offset:i,stepPosition:s}){const l=nV[r],c=nV[o],u={x:e.x+l.x*i,y:e.y+l.y*i},d={x:n.x+c.x*i,y:n.y+c.y*i},h=jCe({source:u,sourcePosition:r,target:d}),f=h.x!==0?"x":"y",g=h[f];let b=[],x,w;const k={x:0,y:0},C={x:0,y:0},[,,_,T]=tV({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(l[f]*c[f]===-1){f==="x"?(x=a.x??u.x+(d.x-u.x)*s,w=a.y??(u.y+d.y)/2):(x=a.x??(u.x+d.x)/2,w=a.y??u.y+(d.y-u.y)*s);const A=[{x,y:u.y},{x,y:d.y}],R=[{x:u.x,y:w},{x:d.x,y:w}];l[f]===g?b=f==="x"?A:R:b=f==="x"?R:A}else{const A=[{x:u.x,y:d.y}],R=[{x:d.x,y:u.y}];if(f==="x"?b=l.x===g?R:A:b=l.y===g?A:R,r===o){const F=Math.abs(e[f]-n[f]);if(F<=i){const L=Math.min(i-1,i-F);l[f]===g?k[f]=(u[f]>e[f]?-1:1)*L:C[f]=(d[f]>n[f]?-1:1)*L}}if(r!==o){const F=f==="x"?"y":"x",L=l[f]===c[F],U=u[F]>d[F],P=u[F]=O?(x=(D.x+N.x)/2,w=b[0].y):(x=b[0].x,w=(D.y+N.y)/2)}return[[e,{x:u.x+k.x,y:u.y+k.y},...b,{x:d.x+C.x,y:d.y+C.y},n],x,w,_,T]}function BCe(e,r,n,o){const a=Math.min(oV(e,r)/2,oV(r,n)/2,o),{x:i,y:s}=r;if(e.x===i&&i===n.x||e.y===s&&s===n.y)return`L${i} ${s}`;if(e.y===s){const u=e.x{let _="";return C>0&&Cn.id===r):e[0])||null}function h9(e,r){return e?typeof e=="string"?e:`${r?`${r}__`:""}${Object.keys(e).sort().map(n=>`${n}=${e[n]}`).join("&")}`:""}function FCe(e,{id:r,defaultColor:n,defaultMarkerStart:o,defaultMarkerEnd:a}){const i=new Set;return e.reduce((s,l)=>([l.markerStart||o,l.markerEnd||a].forEach(c=>{if(c&&typeof c=="object"){const u=h9(c,r);i.has(u)||(s.push({id:u,color:c.color||n,...c}),i.add(u))}}),s),[]).sort((s,l)=>s.id.localeCompare(l.id))}function HCe(e,r,n,o,a){let i=.5;a==="start"?i=0:a==="end"&&(i=1);let s=[(e.x+e.width*i)*r.zoom+r.x,e.y*r.zoom+r.y-o],l=[-100*i,-100];switch(n){case tt.Right:s=[(e.x+e.width)*r.zoom+r.x+o,(e.y+e.height*i)*r.zoom+r.y],l=[0,-100*i];break;case tt.Bottom:s[1]=(e.y+e.height)*r.zoom+r.y+o,l[1]=0;break;case tt.Left:s=[e.x*r.zoom+r.x-o,(e.y+e.height*i)*r.zoom+r.y],l=[-100,-100*i];break}return`translate(${s[0]}px, ${s[1]}px) translate(${l[0]}%, ${l[1]}%)`}const cV=1e3,VCe=10,f9={nodeOrigin:[0,0],nodeExtent:g0,elevateNodesOnSelect:!0,defaults:{}},qCe={...f9,checkEquality:!0};function m9(e,r){const n={...e};for(const o in r)r[o]!==void 0&&(n[o]=r[o]);return n}function UCe(e,r,n){const o=m9(f9,n);for(const a of e.values())if(a.parentId)y9(a,e,r,o);else{const i=b0(a,o.nodeOrigin),s=If(a.extent)?a.extent:o.nodeExtent,l=up(i,s,ao(a));a.internals.positionAbsolute=l}}function WCe(e,r){if(!e.handles)return e.measured?r?.internals.handleBounds:void 0;const n=[],o=[];for(const a of e.handles){const i={id:a.id,width:a.width??1,height:a.height??1,nodeId:e.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?n.push(i):a.type==="target"&&o.push(i)}return{source:n,target:o}}function g9(e,r,n,o){const a=m9(qCe,o);let i={i:-1},s=e.length>0;const l=new Map(r),c=a?.elevateNodesOnSelect?cV:0;r.clear(),n.clear();for(const u of e){let d=l.get(u.id);if(a.checkEquality&&u===d?.internals.userNode)r.set(u.id,d);else{const h=b0(u,a.nodeOrigin),f=If(u.extent)?u.extent:a.nodeExtent,g=up(h,f,ao(u));d={...a.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:g,handleBounds:WCe(u,d),z:uV(u,c),userNode:u}},r.set(u.id,d)}(d.measured===void 0||d.measured.width===void 0||d.measured.height===void 0)&&!d.hidden&&(s=!1),u.parentId&&y9(d,r,n,o,i)}return s}function YCe(e,r){if(!e.parentId)return;const n=r.get(e.parentId);n?n.set(e.id,e):r.set(e.parentId,new Map([[e.id,e]]))}function y9(e,r,n,o,a){const{elevateNodesOnSelect:i,nodeOrigin:s,nodeExtent:l}=m9(f9,o),c=e.parentId,u=r.get(c);if(!u){console.warn(`Parent node ${c} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}YCe(e,n),a&&!u.parentId&&u.internals.rootParentIndex===void 0&&(u.internals.rootParentIndex=++a.i,u.internals.z=u.internals.z+a.i*VCe),a&&u.internals.rootParentIndex!==void 0&&(a.i=u.internals.rootParentIndex);const d=i?cV:0,{x:h,y:f,z:g}=GCe(e,u,s,l,d),{positionAbsolute:b}=e.internals,x=h!==b.x||f!==b.y;(x||g!==e.internals.z)&&r.set(e.id,{...e,internals:{...e.internals,positionAbsolute:x?{x:h,y:f}:b,z:g}})}function uV(e,r){return(ss(e.zIndex)?e.zIndex:0)+(e.selected?r:0)}function GCe(e,r,n,o,a){const{x:i,y:s}=r.internals.positionAbsolute,l=ao(e),c=b0(e,n),u=If(e.extent)?up(c,e.extent,l):c;let d=up({x:i+u.x,y:s+u.y},o,l);e.extent==="parent"&&(d=FH(d,l,r));const h=uV(e,a),f=r.internals.z??0;return{x:d.x,y:d.y,z:f>=h?f+1:h}}function b9(e,r,n,o=[0,0]){const a=[],i=new Map;for(const s of e){const l=r.get(s.parentId);if(!l)continue;const c=i.get(s.parentId)?.expandedRect??dp(l),u=qH(c,s.rect);i.set(s.parentId,{expandedRect:u,parent:l})}return i.size>0&&i.forEach(({expandedRect:s,parent:l},c)=>{const u=l.internals.positionAbsolute,d=ao(l),h=l.origin??o,f=s.x0||g>0||w||k)&&(a.push({id:c,type:"position",position:{x:l.position.x-f+w,y:l.position.y-g+k}}),n.get(c)?.forEach(C=>{e.some(_=>_.id===C.id)||a.push({id:C.id,type:"position",position:{x:C.position.x+f,y:C.position.y+g}})})),(d.width0){const f=b9(h,r,n,a);c.push(...f)}return{changes:c,updatedInternals:l}}async function KCe({delta:e,panZoom:r,transform:n,translateExtent:o,width:a,height:i}){if(!r||!e.x&&!e.y)return Promise.resolve(!1);const s=await r.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[a,i]],o),l=!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2]);return Promise.resolve(l)}function dV(e,r,n,o,a,i){let s=a;const l=o.get(s)||new Map;o.set(s,l.set(n,r)),s=`${a}-${e}`;const c=o.get(s)||new Map;if(o.set(s,c.set(n,r)),i){s=`${a}-${e}-${i}`;const u=o.get(s)||new Map;o.set(s,u.set(n,r))}}function pV(e,r,n){e.clear(),r.clear();for(const o of n){const{source:a,target:i,sourceHandle:s=null,targetHandle:l=null}=o,c={edgeId:o.id,source:a,target:i,sourceHandle:s,targetHandle:l},u=`${a}-${s}--${i}-${l}`,d=`${i}-${l}--${a}-${s}`;dV("source",c,d,e,a,s),dV("target",c,u,e,i,l),r.set(o.id,o)}}function hV(e,r){if(!e.parentId)return!1;const n=r.get(e.parentId);return n?n.selected?!0:hV(n,r):!1}function fV(e,r,n){let o=e;do{if(o?.matches?.(r))return!0;if(o===n)return!1;o=o?.parentElement}while(o);return!1}function ZCe(e,r,n,o){const a=new Map;for(const[i,s]of e)if((s.selected||s.id===o)&&(!s.parentId||!hV(s,e))&&(s.draggable||r&&typeof s.draggable>"u")){const l=e.get(i);l&&a.set(i,{id:i,position:l.position||{x:0,y:0},distance:{x:n.x-l.internals.positionAbsolute.x,y:n.y-l.internals.positionAbsolute.y},extent:l.extent,parentId:l.parentId,origin:l.origin,expandParent:l.expandParent,internals:{positionAbsolute:l.internals.positionAbsolute||{x:0,y:0}},measured:{width:l.measured.width??0,height:l.measured.height??0}})}return a}function v9({nodeId:e,dragItems:r,nodeLookup:n,dragging:o=!0}){const a=[];for(const[s,l]of r){const c=n.get(s)?.internals.userNode;c&&a.push({...c,position:l.position,dragging:o})}if(!e)return[a[0],a];const i=n.get(e)?.internals.userNode;return[i?{...i,position:r.get(e)?.position||i.position,dragging:o}:a[0],a]}function QCe({dragItems:e,snapGrid:r,x:n,y:o}){const a=e.values().next().value;if(!a)return null;const i={x:n-a.distance.x,y:o-a.distance.y},s=x0(i,r);return{x:s.x-i.x,y:s.y-i.y}}function JCe({onNodeMouseDown:e,getStoreItems:r,onDragStart:n,onDrag:o,onDragStop:a}){let i={x:null,y:null},s=0,l=new Map,c=!1,u={x:0,y:0},d=null,h=!1,f=null,g=!1,b=!1,x=null;function w({noDragClassName:C,handleSelector:_,domNode:T,isSelectable:A,nodeId:R,nodeClickDistance:D=0}){f=za(T);function N({x:L,y:U}){const{nodeLookup:P,nodeExtent:V,snapGrid:I,snapToGrid:H,nodeOrigin:q,onNodeDrag:Z,onSelectionDrag:W,onError:G,updateNodePositions:K}=r();i={x:L,y:U};let j=!1;const Y=l.size>1,Q=Y&&V?d9($f(l)):null,J=Y&&H?QCe({dragItems:l,snapGrid:I,x:L,y:U}):null;for(const[ie,ne]of l){if(!P.has(ie))continue;let re={x:L-ne.distance.x,y:U-ne.distance.y};H&&(re=J?{x:Math.round(re.x+J.x),y:Math.round(re.y+J.y)}:x0(re,I));let ge=null;if(Y&&V&&!ne.extent&&Q){const{positionAbsolute:me}=ne.internals,Te=me.x-Q.x+V[0][0],Ie=me.x+ne.measured.width-Q.x2+V[1][0],Ze=me.y-Q.y+V[0][1],rt=me.y+ne.measured.height-Q.y2+V[1][1];ge=[[Te,Ze],[Ie,rt]]}const{position:De,positionAbsolute:he}=BH({nodeId:ie,nextPosition:re,nodeLookup:P,nodeExtent:ge||V,nodeOrigin:q,onError:G});j=j||ne.position.x!==De.x||ne.position.y!==De.y,ne.position=De,ne.internals.positionAbsolute=he}if(b=b||j,!!j&&(K(l,!0),x&&(o||Z||!R&&W))){const[ie,ne]=v9({nodeId:R,dragItems:l,nodeLookup:P});o?.(x,l,ie,ne),Z?.(x,ie,ne),R||W?.(x,ne)}}async function M(){if(!d)return;const{transform:L,panBy:U,autoPanSpeed:P,autoPanOnNodeDrag:V}=r();if(!V){c=!1,cancelAnimationFrame(s);return}const[I,H]=VH(u,d,P);(I!==0||H!==0)&&(i.x=(i.x??0)-I/L[2],i.y=(i.y??0)-H/L[2],await U({x:I,y:H})&&N(i)),s=requestAnimationFrame(M)}function O(L){const{nodeLookup:U,multiSelectionActive:P,nodesDraggable:V,transform:I,snapGrid:H,snapToGrid:q,selectNodesOnDrag:Z,onNodeDragStart:W,onSelectionDragStart:G,unselectNodesAndEdges:K}=r();h=!0,(!Z||!A)&&!P&&R&&(U.get(R)?.selected||K()),A&&Z&&R&&e?.(R);const j=k0(L.sourceEvent,{transform:I,snapGrid:H,snapToGrid:q,containerBounds:d});if(i=j,l=ZCe(U,V,j,R),l.size>0&&(n||W||!R&&G)){const[Y,Q]=v9({nodeId:R,dragItems:l,nodeLookup:U});n?.(L.sourceEvent,l,Y,Q),W?.(L.sourceEvent,Y,Q),R||G?.(L.sourceEvent,Q)}}const F=tH().clickDistance(D).on("start",L=>{const{domNode:U,nodeDragThreshold:P,transform:V,snapGrid:I,snapToGrid:H}=r();d=U?.getBoundingClientRect()||null,g=!1,b=!1,x=L.sourceEvent,P===0&&O(L),i=k0(L.sourceEvent,{transform:V,snapGrid:I,snapToGrid:H,containerBounds:d}),u=ls(L.sourceEvent,d)}).on("drag",L=>{const{autoPanOnNodeDrag:U,transform:P,snapGrid:V,snapToGrid:I,nodeDragThreshold:H,nodeLookup:q}=r(),Z=k0(L.sourceEvent,{transform:P,snapGrid:V,snapToGrid:I,containerBounds:d});if(x=L.sourceEvent,(L.sourceEvent.type==="touchmove"&&L.sourceEvent.touches.length>1||R&&!q.has(R))&&(g=!0),!g){if(!c&&U&&h&&(c=!0,M()),!h){const W=ls(L.sourceEvent,d),G=W.x-u.x,K=W.y-u.y;Math.sqrt(G*G+K*K)>H&&O(L)}(i.x!==Z.xSnapped||i.y!==Z.ySnapped)&&l&&h&&(u=ls(L.sourceEvent,d),N(Z))}}).on("end",L=>{if(!(!h||g)&&(c=!1,h=!1,cancelAnimationFrame(s),l.size>0)){const{nodeLookup:U,updateNodePositions:P,onNodeDragStop:V,onSelectionDragStop:I}=r();if(b&&(P(l,!1),b=!1),a||V||!R&&I){const[H,q]=v9({nodeId:R,dragItems:l,nodeLookup:U,dragging:!1});a?.(L.sourceEvent,l,H,q),V?.(L.sourceEvent,H,q),R||I?.(L.sourceEvent,q)}}}).filter(L=>{const U=L.target;return!L.button&&(!C||!fV(U,`.${C}`,T))&&(!_||fV(U,_,T))});f.call(F)}function k(){f?.on(".drag",null)}return{update:w,destroy:k}}function eTe(e,r,n){const o=[],a={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const i of r.values())v0(a,dp(i))>0&&o.push(i);return o}const tTe=250;function rTe(e,r,n,o){let a=[],i=1/0;const s=eTe(e,n,r+tTe);for(const l of s){const c=[...l.internals.handleBounds?.source??[],...l.internals.handleBounds?.target??[]];for(const u of c){if(o.nodeId===u.nodeId&&o.type===u.type&&o.id===u.id)continue;const{x:d,y:h}=_0(l,u,u.position,!0),f=Math.sqrt(Math.pow(d-e.x,2)+Math.pow(h-e.y,2));f>r||(f1){const l=o.type==="source"?"target":"source";return a.find(c=>c.type===l)??a[0]}return a[0]}function mV(e,r,n,o,a,i=!1){const s=o.get(e);if(!s)return null;const l=a==="strict"?s.internals.handleBounds?.[r]:[...s.internals.handleBounds?.source??[],...s.internals.handleBounds?.target??[]],c=(n?l?.find(u=>u.id===n):l?.[0])??null;return c&&i?{...c,..._0(s,c,c.position,!0)}:c}function gV(e,r){return e||(r?.classList.contains("target")?"target":r?.classList.contains("source")?"source":null)}function nTe(e,r){let n=null;return r?n=!0:e&&!r&&(n=!1),n}const yV=()=>!0;function oTe(e,{connectionMode:r,connectionRadius:n,handleId:o,nodeId:a,edgeUpdaterType:i,isTarget:s,domNode:l,nodeLookup:c,lib:u,autoPanOnConnect:d,flowId:h,panBy:f,cancelConnection:g,onConnectStart:b,onConnect:x,onConnectEnd:w,isValidConnection:k=yV,onReconnectEnd:C,updateConnection:_,getTransform:T,getFromHandle:A,autoPanSpeed:R,dragThreshold:D=1,handleDomNode:N}){const M=XH(e.target);let O=0,F;const{x:L,y:U}=ls(e),P=gV(i,N),V=l?.getBoundingClientRect();let I=!1;if(!V||!P)return;const H=mV(a,P,o,c,r);if(!H)return;let q=ls(e,V),Z=!1,W=null,G=!1,K=null;function j(){if(!d||!V)return;const[ge,De]=VH(q,V,R);f({x:ge,y:De}),O=requestAnimationFrame(j)}const Y={...H,nodeId:a,type:P,position:H.position},Q=c.get(a);let J={inProgress:!0,isValid:null,from:_0(Q,Y,tt.Left,!0),fromHandle:Y,fromPosition:Y.position,fromNode:Q,to:q,toHandle:null,toPosition:IH[Y.position],toNode:null};function ie(){I=!0,_(J),b?.(e,{nodeId:a,handleId:o,handleType:P})}D===0&&ie();function ne(ge){if(!I){const{x:Te,y:Ie}=ls(ge),Ze=Te-L,rt=Ie-U;if(!(Ze*Ze+rt*rt>D*D))return;ie()}if(!A()||!Y){re(ge);return}const De=T();q=ls(ge,V),F=rTe(w0(q,De,!1,[1,1]),n,c,Y),Z||(j(),Z=!0);const he=bV(ge,{handle:F,connectionMode:r,fromNodeId:a,fromHandleId:o,fromType:s?"target":"source",isValidConnection:k,doc:M,lib:u,flowId:h,nodeLookup:c});K=he.handleDomNode,W=he.connection,G=nTe(!!F,he.isValid);const me={...J,isValid:G,to:he.toHandle&&G?E3({x:he.toHandle.x,y:he.toHandle.y},De):q,toHandle:he.toHandle,toPosition:G&&he.toHandle?he.toHandle.position:IH[Y.position],toNode:he.toHandle?c.get(he.toHandle.nodeId):null};G&&F&&J.toHandle&&me.toHandle&&J.toHandle.type===me.toHandle.type&&J.toHandle.nodeId===me.toHandle.nodeId&&J.toHandle.id===me.toHandle.id&&J.to.x===me.to.x&&J.to.y===me.to.y||(_(me),J=me)}function re(ge){if(!("touches"in ge&&ge.touches.length>0)){if(I){(F||K)&&W&&G&&x?.(W);const{inProgress:De,...he}=J,me={...he,toPosition:J.toHandle?J.toPosition:null};w?.(ge,me),i&&C?.(ge,me)}g(),cancelAnimationFrame(O),Z=!1,G=!1,W=null,K=null,M.removeEventListener("mousemove",ne),M.removeEventListener("mouseup",re),M.removeEventListener("touchmove",ne),M.removeEventListener("touchend",re)}}M.addEventListener("mousemove",ne),M.addEventListener("mouseup",re),M.addEventListener("touchmove",ne),M.addEventListener("touchend",re)}function bV(e,{handle:r,connectionMode:n,fromNodeId:o,fromHandleId:a,fromType:i,doc:s,lib:l,flowId:c,isValidConnection:u=yV,nodeLookup:d}){const h=i==="target",f=r?s.querySelector(`.${l}-flow__handle[data-id="${c}-${r?.nodeId}-${r?.id}-${r?.type}"]`):null,{x:g,y:b}=ls(e),x=s.elementFromPoint(g,b),w=x?.classList.contains(`${l}-flow__handle`)?x:f,k={handleDomNode:w,isValid:!1,connection:null,toHandle:null};if(w){const C=gV(void 0,w),_=w.getAttribute("data-nodeid"),T=w.getAttribute("data-handleid"),A=w.classList.contains("connectable"),R=w.classList.contains("connectableend");if(!_||!C)return k;const D={source:h?_:o,sourceHandle:h?T:a,target:h?o:_,targetHandle:h?a:T};k.connection=D;const N=A&&R&&(n===Df.Strict?h&&C==="source"||!h&&C==="target":_!==o||T!==a);k.isValid=N&&u(D),k.toHandle=mV(_,C,T,d,n,!0)}return k}const x9={onPointerDown:oTe,isValid:bV};function aTe({domNode:e,panZoom:r,getTransform:n,getViewScale:o}){const a=za(e);function i({translateExtent:l,width:c,height:u,zoomStep:d=1,pannable:h=!0,zoomable:f=!0,inversePan:g=!1}){const b=_=>{if(_.sourceEvent.type!=="wheel"||!r)return;const T=n(),A=_.sourceEvent.ctrlKey&&zf()?10:1,R=-_.sourceEvent.deltaY*(_.sourceEvent.deltaMode===1?.05:_.sourceEvent.deltaMode?1:.002)*d,D=T[2]*Math.pow(2,R*A);r.scaleTo(D)};let x=[0,0];const w=_=>{(_.sourceEvent.type==="mousedown"||_.sourceEvent.type==="touchstart")&&(x=[_.sourceEvent.clientX??_.sourceEvent.touches[0].clientX,_.sourceEvent.clientY??_.sourceEvent.touches[0].clientY])},k=_=>{const T=n();if(_.sourceEvent.type!=="mousemove"&&_.sourceEvent.type!=="touchmove"||!r)return;const A=[_.sourceEvent.clientX??_.sourceEvent.touches[0].clientX,_.sourceEvent.clientY??_.sourceEvent.touches[0].clientY],R=[A[0]-x[0],A[1]-x[1]];x=A;const D=o()*Math.max(T[2],Math.log(T[2]))*(g?-1:1),N={x:T[0]-R[0]*D,y:T[1]-R[1]*D},M=[[0,0],[c,u]];r.setViewportConstrained({x:N.x,y:N.y,zoom:T[2]},M,l)},C=$H().on("start",w).on("zoom",h?k:null).on("zoom.wheel",f?b:null);a.call(C,{})}function s(){a.on("zoom",null)}return{update:i,destroy:s,pointer:os}}const A3=e=>({x:e.x,y:e.y,zoom:e.k}),w9=({x:e,y:r,zoom:n})=>v3.translate(e,r).scale(n),Of=(e,r)=>e.target.closest(`.${r}`),vV=(e,r)=>r===2&&Array.isArray(e)&&e.includes(2),iTe=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,k9=(e,r=0,n=iTe,o=()=>{})=>{const a=typeof r=="number"&&r>0;return a||o(),a?e.transition().duration(r).ease(n).on("end",o):e},xV=e=>{const r=e.ctrlKey&&zf()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*r};function sTe({zoomPanValues:e,noWheelClassName:r,d3Selection:n,d3Zoom:o,panOnScrollMode:a,panOnScrollSpeed:i,zoomOnPinch:s,onPanZoomStart:l,onPanZoom:c,onPanZoomEnd:u}){return d=>{if(Of(d,r))return d.ctrlKey&&d.preventDefault(),!1;d.preventDefault(),d.stopImmediatePropagation();const h=n.property("__zoom").k||1;if(d.ctrlKey&&s){const w=os(d),k=xV(d),C=h*Math.pow(2,k);o.scaleTo(n,C,w,d);return}const f=d.deltaMode===1?20:1;let g=a===cp.Vertical?0:d.deltaX*f,b=a===cp.Horizontal?0:d.deltaY*f;!zf()&&d.shiftKey&&a!==cp.Vertical&&(g=d.deltaY*f,b=0),o.translateBy(n,-(g/h)*i,-(b/h)*i,{internal:!0});const x=A3(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(c?.(d,x),e.panScrollTimeout=setTimeout(()=>{u?.(d,x),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,l?.(d,x))}}function lTe({noWheelClassName:e,preventScrolling:r,d3ZoomHandler:n}){return function(o,a){const i=o.type==="wheel",s=!r&&i&&!o.ctrlKey,l=Of(o,e);if(o.ctrlKey&&i&&l&&o.preventDefault(),s||l)return null;o.preventDefault(),n.call(this,o,a)}}function cTe({zoomPanValues:e,onDraggingChange:r,onPanZoomStart:n}){return o=>{if(o.sourceEvent?.internal)return;const a=A3(o.transform);e.mouseButton=o.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=a,o.sourceEvent?.type==="mousedown"&&r(!0),n&&n?.(o.sourceEvent,a)}}function uTe({zoomPanValues:e,panOnDrag:r,onPaneContextMenu:n,onTransformChange:o,onPanZoom:a}){return i=>{e.usedRightMouseButton=!!(n&&vV(r,e.mouseButton??0)),i.sourceEvent?.sync||o([i.transform.x,i.transform.y,i.transform.k]),a&&!i.sourceEvent?.internal&&a?.(i.sourceEvent,A3(i.transform))}}function dTe({zoomPanValues:e,panOnDrag:r,panOnScroll:n,onDraggingChange:o,onPanZoomEnd:a,onPaneContextMenu:i}){return s=>{if(!s.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,i&&vV(r,e.mouseButton??0)&&!e.usedRightMouseButton&&s.sourceEvent&&i(s.sourceEvent),e.usedRightMouseButton=!1,o(!1),a)){const l=A3(s.transform);e.prevViewport=l,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{a?.(s.sourceEvent,l)},n?150:0)}}}function pTe({zoomActivationKeyPressed:e,zoomOnScroll:r,zoomOnPinch:n,panOnDrag:o,panOnScroll:a,zoomOnDoubleClick:i,userSelectionActive:s,noWheelClassName:l,noPanClassName:c,lib:u,connectionInProgress:d}){return h=>{const f=e||r,g=n&&h.ctrlKey,b=h.type==="wheel";if(h.button===1&&h.type==="mousedown"&&(Of(h,`${u}-flow__node`)||Of(h,`${u}-flow__edge`)))return!0;if(!o&&!f&&!a&&!i&&!n||s||d&&!b||Of(h,l)&&b||Of(h,c)&&(!b||a&&b&&!e)||!n&&h.ctrlKey&&b)return!1;if(!n&&h.type==="touchstart"&&h.touches?.length>1)return h.preventDefault(),!1;if(!f&&!a&&!g&&b||!o&&(h.type==="mousedown"||h.type==="touchstart")||Array.isArray(o)&&!o.includes(h.button)&&h.type==="mousedown")return!1;const x=Array.isArray(o)&&o.includes(h.button)||!h.button||h.button<=1;return(!h.ctrlKey||b)&&x}}function hTe({domNode:e,minZoom:r,maxZoom:n,paneClickDistance:o,translateExtent:a,viewport:i,onPanZoom:s,onPanZoomStart:l,onPanZoomEnd:c,onDraggingChange:u}){const d={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},h=e.getBoundingClientRect(),f=$H().clickDistance(!ss(o)||o<0?0:o).scaleExtent([r,n]).translateExtent(a),g=za(e).call(f);_({x:i.x,y:i.y,zoom:Mf(i.zoom,r,n)},[[0,0],[h.width,h.height]],a);const b=g.on("wheel.zoom"),x=g.on("dblclick.zoom");f.wheelDelta(xV);function w(L,U){return g?new Promise(P=>{f?.interpolate(U?.interpolate==="linear"?u0:c3).transform(k9(g,U?.duration,U?.ease,()=>P(!0)),L)}):Promise.resolve(!1)}function k({noWheelClassName:L,noPanClassName:U,onPaneContextMenu:P,userSelectionActive:V,panOnScroll:I,panOnDrag:H,panOnScrollMode:q,panOnScrollSpeed:Z,preventScrolling:W,zoomOnPinch:G,zoomOnScroll:K,zoomOnDoubleClick:j,zoomActivationKeyPressed:Y,lib:Q,onTransformChange:J,connectionInProgress:ie}){V&&!d.isZoomingOrPanning&&C();const ne=I&&!Y&&!V?sTe({zoomPanValues:d,noWheelClassName:L,d3Selection:g,d3Zoom:f,panOnScrollMode:q,panOnScrollSpeed:Z,zoomOnPinch:G,onPanZoomStart:l,onPanZoom:s,onPanZoomEnd:c}):lTe({noWheelClassName:L,preventScrolling:W,d3ZoomHandler:b});if(g.on("wheel.zoom",ne,{passive:!1}),!V){const ge=cTe({zoomPanValues:d,onDraggingChange:u,onPanZoomStart:l});f.on("start",ge);const De=uTe({zoomPanValues:d,panOnDrag:H,onPaneContextMenu:!!P,onPanZoom:s,onTransformChange:J});f.on("zoom",De);const he=dTe({zoomPanValues:d,panOnDrag:H,panOnScroll:I,onPaneContextMenu:P,onPanZoomEnd:c,onDraggingChange:u});f.on("end",he)}const re=pTe({zoomActivationKeyPressed:Y,panOnDrag:H,zoomOnScroll:K,panOnScroll:I,zoomOnDoubleClick:j,zoomOnPinch:G,userSelectionActive:V,noPanClassName:U,noWheelClassName:L,lib:Q,connectionInProgress:ie});f.filter(re),j?g.on("dblclick.zoom",x):g.on("dblclick.zoom",null)}function C(){f.on("zoom",null)}async function _(L,U,P){const V=w9(L),I=f?.constrain()(V,U,P);return I&&await w(I),new Promise(H=>H(I))}async function T(L,U){const P=w9(L);return await w(P,U),new Promise(V=>V(P))}function A(L){if(g){const U=w9(L),P=g.property("__zoom");(P.k!==L.zoom||P.x!==L.x||P.y!==L.y)&&f?.transform(g,U,null,{sync:!0})}}function R(){const L=g?NH(g.node()):{x:0,y:0,k:1};return{x:L.x,y:L.y,zoom:L.k}}function D(L,U){return g?new Promise(P=>{f?.interpolate(U?.interpolate==="linear"?u0:c3).scaleTo(k9(g,U?.duration,U?.ease,()=>P(!0)),L)}):Promise.resolve(!1)}function N(L,U){return g?new Promise(P=>{f?.interpolate(U?.interpolate==="linear"?u0:c3).scaleBy(k9(g,U?.duration,U?.ease,()=>P(!0)),L)}):Promise.resolve(!1)}function M(L){f?.scaleExtent(L)}function O(L){f?.translateExtent(L)}function F(L){const U=!ss(L)||L<0?0:L;f?.clickDistance(U)}return{update:k,destroy:C,setViewport:T,setViewportConstrained:_,getViewport:R,scaleTo:D,scaleBy:N,setScaleExtent:M,setTranslateExtent:O,syncViewport:A,setClickDistance:F}}var jf;(function(e){e.Line="line",e.Handle="handle"})(jf||(jf={}));function fTe({width:e,prevWidth:r,height:n,prevHeight:o,affectsX:a,affectsY:i}){const s=e-r,l=n-o,c=[s>0?1:s<0?-1:0,l>0?1:l<0?-1:0];return s&&a&&(c[0]=c[0]*-1),l&&i&&(c[1]=c[1]*-1),c}function wV(e){const r=e.includes("right")||e.includes("left"),n=e.includes("bottom")||e.includes("top"),o=e.includes("left"),a=e.includes("top");return{isHorizontal:r,isVertical:n,affectsX:o,affectsY:a}}function xu(e,r){return Math.max(0,r-e)}function wu(e,r){return Math.max(0,e-r)}function R3(e,r,n){return Math.max(0,r-e,e-n)}function kV(e,r){return e?!r:r}function mTe(e,r,n,o,a,i,s,l){let{affectsX:c,affectsY:u}=r;const{isHorizontal:d,isVertical:h}=r,f=d&&h,{xSnapped:g,ySnapped:b}=n,{minWidth:x,maxWidth:w,minHeight:k,maxHeight:C}=o,{x:_,y:T,width:A,height:R,aspectRatio:D}=e;let N=Math.floor(d?g-e.pointerX:0),M=Math.floor(h?b-e.pointerY:0);const O=A+(c?-N:N),F=R+(u?-M:M),L=-i[0]*A,U=-i[1]*R;let P=R3(O,x,w),V=R3(F,k,C);if(s){let q=0,Z=0;c&&N<0?q=xu(_+N+L,s[0][0]):!c&&N>0&&(q=wu(_+O+L,s[1][0])),u&&M<0?Z=xu(T+M+U,s[0][1]):!u&&M>0&&(Z=wu(T+F+U,s[1][1])),P=Math.max(P,q),V=Math.max(V,Z)}if(l){let q=0,Z=0;c&&N>0?q=wu(_+N,l[0][0]):!c&&N<0&&(q=xu(_+O,l[1][0])),u&&M>0?Z=wu(T+M,l[0][1]):!u&&M<0&&(Z=xu(T+F,l[1][1])),P=Math.max(P,q),V=Math.max(V,Z)}if(a){if(d){const q=R3(O/D,k,C)*D;if(P=Math.max(P,q),s){let Z=0;!c&&!u||c&&!u&&f?Z=wu(T+U+O/D,s[1][1])*D:Z=xu(T+U+(c?N:-N)/D,s[0][1])*D,P=Math.max(P,Z)}if(l){let Z=0;!c&&!u||c&&!u&&f?Z=xu(T+O/D,l[1][1])*D:Z=wu(T+(c?N:-N)/D,l[0][1])*D,P=Math.max(P,Z)}}if(h){const q=R3(F*D,x,w)/D;if(V=Math.max(V,q),s){let Z=0;!c&&!u||u&&!c&&f?Z=wu(_+F*D+L,s[1][0])/D:Z=xu(_+(u?M:-M)*D+L,s[0][0])/D,V=Math.max(V,Z)}if(l){let Z=0;!c&&!u||u&&!c&&f?Z=xu(_+F*D,l[1][0])/D:Z=wu(_+(u?M:-M)*D,l[0][0])/D,V=Math.max(V,Z)}}}M=M+(M<0?V:-V),N=N+(N<0?P:-P),a&&(f?O>F*D?M=(kV(c,u)?-N:N)/D:N=(kV(c,u)?-M:M)*D:d?(M=N/D,u=c):(N=M*D,c=u));const I=c?_+N:_,H=u?T+M:T;return{width:A+(c?-N:N),height:R+(u?-M:M),x:i[0]*N*(c?-1:1)+I,y:i[1]*M*(u?-1:1)+H}}const _V={width:0,height:0,x:0,y:0},gTe={..._V,pointerX:0,pointerY:0,aspectRatio:1};function yTe(e){return[[0,0],[e.measured.width,e.measured.height]]}function bTe(e,r,n){const o=r.position.x+e.position.x,a=r.position.y+e.position.y,i=e.measured.width??0,s=e.measured.height??0,l=n[0]*i,c=n[1]*s;return[[o-l,a-c],[o+i-l,a+s-c]]}function vTe({domNode:e,nodeId:r,getStoreItems:n,onChange:o,onEnd:a}){const i=za(e);let s={controlDirection:wV("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function l({controlPosition:u,boundaries:d,keepAspectRatio:h,resizeDirection:f,onResizeStart:g,onResize:b,onResizeEnd:x,shouldResize:w}){let k={..._V},C={...gTe};s={boundaries:d,resizeDirection:f,keepAspectRatio:h,controlDirection:wV(u)};let _,T=null,A=[],R,D,N,M=!1;const O=tH().on("start",F=>{const{nodeLookup:L,transform:U,snapGrid:P,snapToGrid:V,nodeOrigin:I,paneDomNode:H}=n();if(_=L.get(r),!_)return;T=H?.getBoundingClientRect()??null;const{xSnapped:q,ySnapped:Z}=k0(F.sourceEvent,{transform:U,snapGrid:P,snapToGrid:V,containerBounds:T});k={width:_.measured.width??0,height:_.measured.height??0,x:_.position.x??0,y:_.position.y??0},C={...k,pointerX:q,pointerY:Z,aspectRatio:k.width/k.height},R=void 0,_.parentId&&(_.extent==="parent"||_.expandParent)&&(R=L.get(_.parentId),D=R&&_.extent==="parent"?yTe(R):void 0),A=[],N=void 0;for(const[W,G]of L)if(G.parentId===r&&(A.push({id:W,position:{...G.position},extent:G.extent}),G.extent==="parent"||G.expandParent)){const K=bTe(G,_,G.origin??I);N?N=[[Math.min(K[0][0],N[0][0]),Math.min(K[0][1],N[0][1])],[Math.max(K[1][0],N[1][0]),Math.max(K[1][1],N[1][1])]]:N=K}g?.(F,{...k})}).on("drag",F=>{const{transform:L,snapGrid:U,snapToGrid:P,nodeOrigin:V}=n(),I=k0(F.sourceEvent,{transform:L,snapGrid:U,snapToGrid:P,containerBounds:T}),H=[];if(!_)return;const{x:q,y:Z,width:W,height:G}=k,K={},j=_.origin??V,{width:Y,height:Q,x:J,y:ie}=mTe(C,s.controlDirection,I,s.boundaries,s.keepAspectRatio,j,D,N),ne=Y!==W,re=Q!==G,ge=J!==q&&ne,De=ie!==Z&&re;if(!ge&&!De&&!ne&&!re)return;if((ge||De||j[0]===1||j[1]===1)&&(K.x=ge?J:k.x,K.y=De?ie:k.y,k.x=K.x,k.y=K.y,A.length>0)){const Te=J-q,Ie=ie-Z;for(const Ze of A)Ze.position={x:Ze.position.x-Te+j[0]*(Y-W),y:Ze.position.y-Ie+j[1]*(Q-G)},H.push(Ze)}if((ne||re)&&(K.width=ne&&(!s.resizeDirection||s.resizeDirection==="horizontal")?Y:k.width,K.height=re&&(!s.resizeDirection||s.resizeDirection==="vertical")?Q:k.height,k.width=K.width,k.height=K.height),R&&_.expandParent){const Te=j[0]*(K.width??0);K.x&&K.x{M&&(x?.(F,{...k}),a?.({...k}),M=!1)});i.call(O)}function c(){i.on(".drag",null)}return{update:l,destroy:c}}function _9(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var EV={exports:{}},E9={},SV={exports:{}},S9={},CV;function xTe(){if(CV)return S9;CV=1;var e=dn;function r(h,f){return h===f&&(h!==0||1/h===1/f)||h!==h&&f!==f}var n=typeof Object.is=="function"?Object.is:r,o=e.useState,a=e.useEffect,i=e.useLayoutEffect,s=e.useDebugValue;function l(h,f){var g=f(),b=o({inst:{value:g,getSnapshot:f}}),x=b[0].inst,w=b[1];return i(function(){x.value=g,x.getSnapshot=f,c(x)&&w({inst:x})},[h,g,f]),a(function(){return c(x)&&w({inst:x}),h(function(){c(x)&&w({inst:x})})},[h]),s(g),g}function c(h){var f=h.getSnapshot;h=h.value;try{var g=f();return!n(h,g)}catch{return!0}}function u(h,f){return f()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?u:l;return S9.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:d,S9}var TV;function AV(){return TV||(TV=1,SV.exports=xTe()),SV.exports}var RV;function wTe(){if(RV)return E9;RV=1;var e=dn,r=AV();function n(u,d){return u===d&&(u!==0||1/u===1/d)||u!==u&&d!==d}var o=typeof Object.is=="function"?Object.is:n,a=r.useSyncExternalStore,i=e.useRef,s=e.useEffect,l=e.useMemo,c=e.useDebugValue;return E9.useSyncExternalStoreWithSelector=function(u,d,h,f,g){var b=i(null);if(b.current===null){var x={hasValue:!1,value:null};b.current=x}else x=b.current;b=l(function(){function k(R){if(!C){if(C=!0,_=R,R=f(R),g!==void 0&&x.hasValue){var D=x.value;if(g(D,R))return T=D}return T=R}if(D=T,o(_,R))return D;var N=f(R);return g!==void 0&&g(D,N)?(_=R,D):(_=R,T=N)}var C=!1,_,T,A=h===void 0?null:h;return[function(){return k(d())},A===null?void 0:function(){return k(A())}]},[d,h,f,g]);var w=a(u,b[0],b[1]);return s(function(){x.hasValue=!0,x.value=w},[w]),c(w),w},E9}var NV;function kTe(){return NV||(NV=1,EV.exports=wTe()),EV.exports}var DV=kTe();const _Te=_9(DV),ETe={},$V=e=>{let r;const n=new Set,o=(l,c)=>{const u=typeof l=="function"?l(r):l;if(!Object.is(u,r)){const d=r;r=c??(typeof u!="object"||u===null)?u:Object.assign({},r,u),n.forEach(h=>h(r,d))}},a=()=>r,i={setState:o,getState:a,getInitialState:()=>s,subscribe:l=>(n.add(l),()=>n.delete(l)),destroy:()=>{(ETe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},s=r=e(o,a,i);return i},STe=e=>e?$V(e):$V,{useDebugValue:CTe}=dn,{useSyncExternalStoreWithSelector:TTe}=_Te,ATe=e=>e;function MV(e,r=ATe,n){const o=TTe(e.subscribe,e.getState,e.getServerState||e.getInitialState,r,n);return CTe(o),o}const PV=(e,r)=>{const n=STe(e),o=(a,i=r)=>MV(n,a,i);return Object.assign(o,n),o},RTe=(e,r)=>e?PV(e,r):PV;function Kr(e,r){if(Object.is(e,r))return!0;if(typeof e!="object"||e===null||typeof r!="object"||r===null)return!1;if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(const[o,a]of e)if(!Object.is(a,r.get(o)))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(const o of e)if(!r.has(o))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(r).length)return!1;for(const o of n)if(!Object.prototype.hasOwnProperty.call(r,o)||!Object.is(e[o],r[o]))return!1;return!0}const N3=E.createContext(null),NTe=N3.Provider,zV=dl.error001();function qt(e,r){const n=E.useContext(N3);if(n===null)throw new Error(zV);return MV(n,e,r)}function Ar(){const e=E.useContext(N3);if(e===null)throw new Error(zV);return E.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const IV={display:"none"},DTe={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},OV="react-flow__node-desc",jV="react-flow__edge-desc",$Te="react-flow__aria-live",MTe=e=>e.ariaLiveMessage,PTe=e=>e.ariaLabelConfig;function zTe({rfId:e}){const r=qt(MTe);return y.jsx("div",{id:`${$Te}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:DTe,children:r})}function ITe({rfId:e,disableKeyboardA11y:r}){const n=qt(PTe);return y.jsxs(y.Fragment,{children:[y.jsx("div",{id:`${OV}-${e}`,style:IV,children:r?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),y.jsx("div",{id:`${jV}-${e}`,style:IV,children:n["edge.a11yDescription.default"]}),!r&&y.jsx(zTe,{rfId:e})]})}const ku=E.forwardRef(({position:e="top-left",children:r,className:n,style:o,...a},i)=>{const s=`${e}`.split("-");return y.jsx("div",{className:_n(["react-flow__panel",n,...s]),style:o,ref:i,...a,children:r})});ku.displayName="Panel";function OTe({proOptions:e,position:r="bottom-right"}){return e?.hideAttribution?null:y.jsx(ku,{position:r,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:y.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const jTe=e=>{const r=[],n=[];for(const[,o]of e.nodeLookup)o.selected&&r.push(o.internals.userNode);for(const[,o]of e.edgeLookup)o.selected&&n.push(o);return{selectedNodes:r,selectedEdges:n}},D3=e=>e.id;function LTe(e,r){return Kr(e.selectedNodes.map(D3),r.selectedNodes.map(D3))&&Kr(e.selectedEdges.map(D3),r.selectedEdges.map(D3))}function BTe({onSelectionChange:e}){const r=Ar(),{selectedNodes:n,selectedEdges:o}=qt(jTe,LTe);return E.useEffect(()=>{const a={nodes:n,edges:o};e?.(a),r.getState().onSelectionChangeHandlers.forEach(i=>i(a))},[n,o,e]),null}const FTe=e=>!!e.onSelectionChangeHandlers;function HTe({onSelectionChange:e}){const r=qt(FTe);return e||r?y.jsx(BTe,{onSelectionChange:e}):null}const LV=[0,0],VTe={x:0,y:0,zoom:1},qTe=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","paneClickDistance","ariaLabelConfig"],BV=[...qTe,"rfId"],UTe=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setPaneClickDistance:e.setPaneClickDistance}),FV={translateExtent:g0,nodeOrigin:LV,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function WTe(e){const{setNodes:r,setEdges:n,setMinZoom:o,setMaxZoom:a,setTranslateExtent:i,setNodeExtent:s,reset:l,setDefaultNodesAndEdges:c,setPaneClickDistance:u}=qt(UTe,Kr),d=Ar();E.useEffect(()=>(c(e.defaultNodes,e.defaultEdges),()=>{h.current=FV,l()}),[]);const h=E.useRef(FV);return E.useEffect(()=>{for(const f of BV){const g=e[f],b=h.current[f];g!==b&&(typeof e[f]>"u"||(f==="nodes"?r(g):f==="edges"?n(g):f==="minZoom"?o(g):f==="maxZoom"?a(g):f==="translateExtent"?i(g):f==="nodeExtent"?s(g):f==="paneClickDistance"?u(g):f==="ariaLabelConfig"?d.setState({ariaLabelConfig:DCe(g)}):f==="fitView"?d.setState({fitViewQueued:g}):f==="fitViewOptions"?d.setState({fitViewOptions:g}):d.setState({[f]:g})))}h.current=e},BV.map(f=>e[f])),null}function HV(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function YTe(e){const[r,n]=E.useState(e==="system"?null:e);return E.useEffect(()=>{if(e!=="system"){n(e);return}const o=HV(),a=()=>n(o?.matches?"dark":"light");return a(),o?.addEventListener("change",a),()=>{o?.removeEventListener("change",a)}},[e]),r!==null?r:HV()?.matches?"dark":"light"}const VV=typeof document<"u"?document:null;function E0(e=null,r={target:VV,actInsideInputWithModifier:!0}){const[n,o]=E.useState(!1),a=E.useRef(!1),i=E.useRef(new Set([])),[s,l]=E.useMemo(()=>{if(e!==null){const c=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.replace("+",` +`).replace(` + +`,` ++`).split(` +`)),u=c.reduce((d,h)=>d.concat(...h),[]);return[c,u]}return[[],[]]},[e]);return E.useEffect(()=>{const c=r?.target??VV,u=r?.actInsideInputWithModifier??!0;if(e!==null){const d=g=>{if(a.current=g.ctrlKey||g.metaKey||g.shiftKey||g.altKey,(!a.current||a.current&&!u)&&KH(g))return!1;const b=UV(g.code,l);if(i.current.add(g[b]),qV(s,i.current,!1)){const x=g.composedPath?.()?.[0]||g.target,w=x?.nodeName==="BUTTON"||x?.nodeName==="A";r.preventDefault!==!1&&(a.current||!w)&&g.preventDefault(),o(!0)}},h=g=>{const b=UV(g.code,l);qV(s,i.current,!0)?(o(!1),i.current.clear()):i.current.delete(g[b]),g.key==="Meta"&&i.current.clear(),a.current=!1},f=()=>{i.current.clear(),o(!1)};return c?.addEventListener("keydown",d),c?.addEventListener("keyup",h),window.addEventListener("blur",f),window.addEventListener("contextmenu",f),()=>{c?.removeEventListener("keydown",d),c?.removeEventListener("keyup",h),window.removeEventListener("blur",f),window.removeEventListener("contextmenu",f)}}},[e,o]),n}function qV(e,r,n){return e.filter(o=>n||o.length===r.size).some(o=>o.every(a=>r.has(a)))}function UV(e,r){return r.includes(e)?"code":"key"}const GTe=()=>{const e=Ar();return E.useMemo(()=>({zoomIn:r=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:r?.duration}):Promise.resolve(!1)},zoomOut:r=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:r?.duration}):Promise.resolve(!1)},zoomTo:(r,n)=>{const{panZoom:o}=e.getState();return o?o.scaleTo(r,{duration:n?.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(r,n)=>{const{transform:[o,a,i],panZoom:s}=e.getState();return s?(await s.setViewport({x:r.x??o,y:r.y??a,zoom:r.zoom??i},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[r,n,o]=e.getState().transform;return{x:r,y:n,zoom:o}},setCenter:async(r,n,o)=>e.getState().setCenter(r,n,o),fitBounds:async(r,n)=>{const{width:o,height:a,minZoom:i,maxZoom:s,panZoom:l}=e.getState(),c=vu(r,o,a,i,s,n?.padding??.1);return l?(await l.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(r,n={})=>{const{transform:o,snapGrid:a,snapToGrid:i,domNode:s}=e.getState();if(!s)return r;const{x:l,y:c}=s.getBoundingClientRect(),u={x:r.x-l,y:r.y-c},d=n.snapGrid??a,h=n.snapToGrid??i;return w0(u,o,h,d)},flowToScreenPosition:r=>{const{transform:n,domNode:o}=e.getState();if(!o)return r;const{x:a,y:i}=o.getBoundingClientRect(),s=E3(r,n);return{x:s.x+a,y:s.y+i}}}),[])};function WV(e,r){const n=[],o=new Map,a=[];for(const i of e)if(i.type==="add"){a.push(i);continue}else if(i.type==="remove"||i.type==="replace")o.set(i.id,[i]);else{const s=o.get(i.id);s?s.push(i):o.set(i.id,[i])}for(const i of r){const s=o.get(i.id);if(!s){n.push(i);continue}if(s[0].type==="remove")continue;if(s[0].type==="replace"){n.push({...s[0].item});continue}const l={...i};for(const c of s)XTe(c,l);n.push(l)}return a.length&&a.forEach(i=>{i.index!==void 0?n.splice(i.index,0,{...i.item}):n.push({...i.item})}),n}function XTe(e,r){switch(e.type){case"select":{r.selected=e.selected;break}case"position":{typeof e.position<"u"&&(r.position=e.position),typeof e.dragging<"u"&&(r.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(r.measured??={},r.measured.width=e.dimensions.width,r.measured.height=e.dimensions.height,e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(r.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(r.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(r.resizing=e.resizing);break}}}function $3(e,r){return WV(e,r)}function M3(e,r){return WV(e,r)}function pp(e,r){return{id:e,type:"select",selected:r}}function Lf(e,r=new Set,n=!1){const o=[];for(const[a,i]of e){const s=r.has(a);!(i.selected===void 0&&!s)&&i.selected!==s&&(n&&(i.selected=s),o.push(pp(i.id,s)))}return o}function YV({items:e=[],lookup:r}){const n=[],o=new Map(e.map(a=>[a.id,a]));for(const[a,i]of e.entries()){const s=r.get(i.id),l=s?.internals?.userNode??s;l!==void 0&&l!==i&&n.push({id:i.id,item:i,type:"replace"}),l===void 0&&n.push({item:i,type:"add",index:a})}for(const[a]of r)o.get(a)===void 0&&n.push({id:a,type:"remove"});return n}function GV(e){return{id:e.id,type:"remove"}}const XV=e=>kCe(e),KTe=e=>jH(e);function KV(e){return E.forwardRef(e)}const ZTe=typeof window<"u"?E.useLayoutEffect:E.useEffect;function ZV(e){const[r,n]=E.useState(BigInt(0)),[o]=E.useState(()=>QTe(()=>n(a=>a+BigInt(1))));return ZTe(()=>{const a=o.get();a.length&&(e(a),o.reset())},[r]),o}function QTe(e){let r=[];return{get:()=>r,reset:()=>{r=[]},push:n=>{r.push(n),e()}}}const QV=E.createContext(null);function JTe({children:e}){const r=Ar(),n=E.useCallback(l=>{const{nodes:c=[],setNodes:u,hasDefaultNodes:d,onNodesChange:h,nodeLookup:f,fitViewQueued:g}=r.getState();let b=c;for(const w of l)b=typeof w=="function"?w(b):w;const x=YV({items:b,lookup:f});d&&u(b),x.length>0?h?.(x):g&&window.requestAnimationFrame(()=>{const{fitViewQueued:w,nodes:k,setNodes:C}=r.getState();w&&C(k)})},[]),o=ZV(n),a=E.useCallback(l=>{const{edges:c=[],setEdges:u,hasDefaultEdges:d,onEdgesChange:h,edgeLookup:f}=r.getState();let g=c;for(const b of l)g=typeof b=="function"?b(g):b;d?u(g):h&&h(YV({items:g,lookup:f}))},[]),i=ZV(a),s=E.useMemo(()=>({nodeQueue:o,edgeQueue:i}),[]);return y.jsx(QV.Provider,{value:s,children:e})}function eAe(){const e=E.useContext(QV);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const tAe=e=>!!e.panZoom;function Bf(){const e=GTe(),r=Ar(),n=eAe(),o=qt(tAe),a=E.useMemo(()=>{const i=h=>r.getState().nodeLookup.get(h),s=h=>{n.nodeQueue.push(h)},l=h=>{n.edgeQueue.push(h)},c=h=>{const{nodeLookup:f,nodeOrigin:g}=r.getState(),b=XV(h)?h:f.get(h.id),x=b.parentId?YH(b.position,b.measured,b.parentId,f,g):b.position,w={...b,position:x,width:b.measured?.width??b.width,height:b.measured?.height??b.height};return dp(w)},u=(h,f,g={replace:!1})=>{s(b=>b.map(x=>{if(x.id===h){const w=typeof f=="function"?f(x):f;return g.replace&&XV(w)?w:{...x,...w}}return x}))},d=(h,f,g={replace:!1})=>{l(b=>b.map(x=>{if(x.id===h){const w=typeof f=="function"?f(x):f;return g.replace&&KTe(w)?w:{...x,...w}}return x}))};return{getNodes:()=>r.getState().nodes.map(h=>({...h})),getNode:h=>i(h)?.internals.userNode,getInternalNode:i,getEdges:()=>{const{edges:h=[]}=r.getState();return h.map(f=>({...f}))},getEdge:h=>r.getState().edgeLookup.get(h),setNodes:s,setEdges:l,addNodes:h=>{const f=Array.isArray(h)?h:[h];n.nodeQueue.push(g=>[...g,...f])},addEdges:h=>{const f=Array.isArray(h)?h:[h];n.edgeQueue.push(g=>[...g,...f])},toObject:()=>{const{nodes:h=[],edges:f=[],transform:g}=r.getState(),[b,x,w]=g;return{nodes:h.map(k=>({...k})),edges:f.map(k=>({...k})),viewport:{x:b,y:x,zoom:w}}},deleteElements:async({nodes:h=[],edges:f=[]})=>{const{nodes:g,edges:b,onNodesDelete:x,onEdgesDelete:w,triggerNodeChanges:k,triggerEdgeChanges:C,onDelete:_,onBeforeDelete:T}=r.getState(),{nodes:A,edges:R}=await CCe({nodesToRemove:h,edgesToRemove:f,nodes:g,edges:b,onBeforeDelete:T}),D=R.length>0,N=A.length>0;if(D){const M=R.map(GV);w?.(R),C(M)}if(N){const M=A.map(GV);x?.(A),k(M)}return(N||D)&&_?.({nodes:A,edges:R}),{deletedNodes:A,deletedEdges:R}},getIntersectingNodes:(h,f=!0,g)=>{const b=UH(h),x=b?h:c(h),w=g!==void 0;return x?(g||r.getState().nodes).filter(k=>{const C=r.getState().nodeLookup.get(k.id);if(C&&!b&&(k.id===h.id||!C.internals.positionAbsolute))return!1;const _=dp(w?k:C),T=v0(_,x);return f&&T>0||T>=_.width*_.height||T>=x.width*x.height}):[]},isNodeIntersecting:(h,f,g=!0)=>{const b=UH(h)?h:c(h);if(!b)return!1;const x=v0(b,f);return g&&x>0||x>=f.width*f.height||x>=b.width*b.height},updateNode:u,updateNodeData:(h,f,g={replace:!1})=>{u(h,b=>{const x=typeof f=="function"?f(b):f;return g.replace?{...b,data:x}:{...b,data:{...b.data,...x}}},g)},updateEdge:d,updateEdgeData:(h,f,g={replace:!1})=>{d(h,b=>{const x=typeof f=="function"?f(b):f;return g.replace?{...b,data:x}:{...b,data:{...b.data,...x}}},g)},getNodesBounds:h=>{const{nodeLookup:f,nodeOrigin:g}=r.getState();return LH(h,{nodeLookup:f,nodeOrigin:g})},getHandleConnections:({type:h,id:f,nodeId:g})=>Array.from(r.getState().connectionLookup.get(`${g}-${h}${f?`-${f}`:""}`)?.values()??[]),getNodeConnections:({type:h,handleId:f,nodeId:g})=>Array.from(r.getState().connectionLookup.get(`${g}${h?f?`-${h}-${f}`:`-${h}`:""}`)?.values()??[]),fitView:async h=>{const f=r.getState().fitViewResolver??NCe();return r.setState({fitViewQueued:!0,fitViewOptions:h,fitViewResolver:f}),n.nodeQueue.push(g=>[...g]),f.promise}}},[]);return E.useMemo(()=>({...a,...e,viewportInitialized:o}),[o])}const JV=e=>e.selected,rAe=typeof window<"u"?window:void 0;function nAe({deleteKeyCode:e,multiSelectionKeyCode:r}){const n=Ar(),{deleteElements:o}=Bf(),a=E0(e,{actInsideInputWithModifier:!1}),i=E0(r,{target:rAe});E.useEffect(()=>{if(a){const{edges:s,nodes:l}=n.getState();o({nodes:l.filter(JV),edges:s.filter(JV)}),n.setState({nodesSelectionActive:!1})}},[a]),E.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])}function oAe(e){const r=Ar();E.useEffect(()=>{const n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;const o=p9(e.current);(o.height===0||o.width===0)&&r.getState().onError?.("004",dl.error004()),r.setState({width:o.width||500,height:o.height||500})};if(e.current){n(),window.addEventListener("resize",n);const o=new ResizeObserver(()=>n());return o.observe(e.current),()=>{window.removeEventListener("resize",n),o&&e.current&&o.unobserve(e.current)}}},[])}const P3={position:"absolute",width:"100%",height:"100%",top:0,left:0},aAe=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function iAe({onPaneContextMenu:e,zoomOnScroll:r=!0,zoomOnPinch:n=!0,panOnScroll:o=!1,panOnScrollSpeed:a=.5,panOnScrollMode:i=cp.Free,zoomOnDoubleClick:s=!0,panOnDrag:l=!0,defaultViewport:c,translateExtent:u,minZoom:d,maxZoom:h,zoomActivationKeyCode:f,preventScrolling:g=!0,children:b,noWheelClassName:x,noPanClassName:w,onViewportChange:k,isControlledViewport:C,paneClickDistance:_}){const T=Ar(),A=E.useRef(null),{userSelectionActive:R,lib:D,connectionInProgress:N}=qt(aAe,Kr),M=E0(f),O=E.useRef();oAe(A);const F=E.useCallback(L=>{k?.({x:L[0],y:L[1],zoom:L[2]}),C||T.setState({transform:L})},[k,C]);return E.useEffect(()=>{if(A.current){O.current=hTe({domNode:A.current,minZoom:d,maxZoom:h,translateExtent:u,viewport:c,paneClickDistance:_,onDraggingChange:V=>T.setState({paneDragging:V}),onPanZoomStart:(V,I)=>{const{onViewportChangeStart:H,onMoveStart:q}=T.getState();q?.(V,I),H?.(I)},onPanZoom:(V,I)=>{const{onViewportChange:H,onMove:q}=T.getState();q?.(V,I),H?.(I)},onPanZoomEnd:(V,I)=>{const{onViewportChangeEnd:H,onMoveEnd:q}=T.getState();q?.(V,I),H?.(I)}});const{x:L,y:U,zoom:P}=O.current.getViewport();return T.setState({panZoom:O.current,transform:[L,U,P],domNode:A.current.closest(".react-flow")}),()=>{O.current?.destroy()}}},[]),E.useEffect(()=>{O.current?.update({onPaneContextMenu:e,zoomOnScroll:r,zoomOnPinch:n,panOnScroll:o,panOnScrollSpeed:a,panOnScrollMode:i,zoomOnDoubleClick:s,panOnDrag:l,zoomActivationKeyPressed:M,preventScrolling:g,noPanClassName:w,userSelectionActive:R,noWheelClassName:x,lib:D,onTransformChange:F,connectionInProgress:N})},[e,r,n,o,a,i,s,l,M,g,w,R,x,D,F,N]),y.jsx("div",{className:"react-flow__renderer",ref:A,style:P3,children:b})}const sAe=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function lAe(){const{userSelectionActive:e,userSelectionRect:r}=qt(sAe,Kr);return e&&r?y.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:r.width,height:r.height,transform:`translate(${r.x}px, ${r.y}px)`}}):null}const C9=(e,r)=>n=>{n.target===r.current&&e?.(n)},cAe=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function uAe({isSelecting:e,selectionKeyPressed:r,selectionMode:n=y0.Full,panOnDrag:o,selectionOnDrag:a,onSelectionStart:i,onSelectionEnd:s,onPaneClick:l,onPaneContextMenu:c,onPaneScroll:u,onPaneMouseEnter:d,onPaneMouseMove:h,onPaneMouseLeave:f,children:g}){const b=Ar(),{userSelectionActive:x,elementsSelectable:w,dragging:k,connectionInProgress:C}=qt(cAe,Kr),_=w&&(e||x),T=E.useRef(null),A=E.useRef(),R=E.useRef(new Set),D=E.useRef(new Set),N=E.useRef(!1),M=E.useRef(!1),O=q=>{if(N.current||C){N.current=!1;return}l?.(q),b.getState().resetSelectedElements(),b.setState({nodesSelectionActive:!1})},F=q=>{if(Array.isArray(o)&&o?.includes(2)){q.preventDefault();return}c?.(q)},L=u?q=>u(q):void 0,U=q=>{(a&&T.current===q.target||!a||r)&&q.stopPropagation()},P=q=>{const{resetSelectedElements:Z,domNode:W}=b.getState();A.current=W?.getBoundingClientRect();const G=q.target!==T.current&&!!q.target.closest(".nokey"),K=a&&T.current===q.target||!a||r;if(!w||!e||q.button!==0||!A.current||G||!K||!q.isPrimary)return;q.stopPropagation(),q.preventDefault(),q.target?.setPointerCapture?.(q.pointerId),M.current=!0,N.current=!1;const{x:j,y:Y}=ls(q.nativeEvent,A.current);Z(),b.setState({userSelectionRect:{width:0,height:0,startX:j,startY:Y,x:j,y:Y}}),i?.(q)},V=q=>{const{userSelectionRect:Z,transform:W,nodeLookup:G,edgeLookup:K,connectionLookup:j,triggerNodeChanges:Y,triggerEdgeChanges:Q,defaultEdgeOptions:J}=b.getState();if(!A.current||!Z)return;N.current=!0;const{x:ie,y:ne}=ls(q.nativeEvent,A.current),{startX:re,startY:ge}=Z,De={startX:re,startY:ge,x:ieIe.id)),D.current=new Set;const Te=J?.selectable??!0;for(const Ie of R.current){const Ze=j.get(Ie);if(Ze)for(const{edgeId:rt}of Ze.values()){const Rt=K.get(rt);Rt&&(Rt.selectable??Te)&&D.current.add(rt)}}if(!GH(he,R.current)){const Ie=Lf(G,R.current,!0);Y(Ie)}if(!GH(me,D.current)){const Ie=Lf(K,D.current);Q(Ie)}b.setState({userSelectionRect:De,userSelectionActive:!0,nodesSelectionActive:!1})},I=q=>{if(q.button!==0||!M.current)return;q.target?.releasePointerCapture?.(q.pointerId);const{userSelectionRect:Z}=b.getState();!x&&Z&&q.target===T.current&&O?.(q),b.setState({userSelectionActive:!1,userSelectionRect:null,nodesSelectionActive:R.current.size>0}),s?.(q),(r||a)&&(N.current=!1),M.current=!1},H=o===!0||Array.isArray(o)&&o.includes(0);return y.jsxs("div",{className:_n(["react-flow__pane",{draggable:H,dragging:k,selection:e}]),onClick:_?void 0:C9(O,T),onContextMenu:C9(F,T),onWheel:C9(L,T),onPointerEnter:_?void 0:d,onPointerMove:_?V:h,onPointerUp:_?I:void 0,onPointerDownCapture:_?P:void 0,onClickCapture:_?U:void 0,onPointerLeave:f,ref:T,style:P3,children:[g,y.jsx(lAe,{})]})}function T9({id:e,store:r,unselect:n=!1,nodeRef:o}){const{addSelectedNodes:a,unselectNodesAndEdges:i,multiSelectionActive:s,nodeLookup:l,onError:c}=r.getState(),u=l.get(e);if(!u){c?.("012",dl.error012(e));return}r.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&s)&&(i({nodes:[u],edges:[]}),requestAnimationFrame(()=>o?.current?.blur())):a([e])}function eq({nodeRef:e,disabled:r=!1,noDragClassName:n,handleSelector:o,nodeId:a,isSelectable:i,nodeClickDistance:s}){const l=Ar(),[c,u]=E.useState(!1),d=E.useRef();return E.useEffect(()=>{d.current=JCe({getStoreItems:()=>l.getState(),onNodeMouseDown:h=>{T9({id:h,store:l,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})},[]),E.useEffect(()=>{if(r)d.current?.destroy();else if(e.current)return d.current?.update({noDragClassName:n,handleSelector:o,domNode:e.current,isSelectable:i,nodeId:a,nodeClickDistance:s}),()=>{d.current?.destroy()}},[n,o,r,i,e,a]),c}const dAe=e=>r=>r.selected&&(r.draggable||e&&typeof r.draggable>"u");function tq(){const e=Ar();return E.useCallback(r=>{const{nodeExtent:n,snapToGrid:o,snapGrid:a,nodesDraggable:i,onError:s,updateNodePositions:l,nodeLookup:c,nodeOrigin:u}=e.getState(),d=new Map,h=dAe(i),f=o?a[0]:5,g=o?a[1]:5,b=r.direction.x*f*r.factor,x=r.direction.y*g*r.factor;for(const[,w]of c){if(!h(w))continue;let k={x:w.internals.positionAbsolute.x+b,y:w.internals.positionAbsolute.y+x};o&&(k=x0(k,a));const{position:C,positionAbsolute:_}=BH({nodeId:w.id,nextPosition:k,nodeLookup:c,nodeExtent:n,nodeOrigin:u,onError:s});w.position=C,w.internals.positionAbsolute=_,d.set(w.id,w)}l(d)},[])}const A9=E.createContext(null),pAe=A9.Provider;A9.Consumer;const R9=()=>E.useContext(A9),hAe=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),fAe=(e,r,n)=>o=>{const{connectionClickStartHandle:a,connectionMode:i,connection:s}=o,{fromHandle:l,toHandle:c,isValid:u}=s,d=c?.nodeId===e&&c?.id===r&&c?.type===n;return{connectingFrom:l?.nodeId===e&&l?.id===r&&l?.type===n,connectingTo:d,clickConnecting:a?.nodeId===e&&a?.id===r&&a?.type===n,isPossibleEndHandle:i===Df.Strict?l?.type!==n:e!==l?.nodeId||r!==l?.id,connectionInProcess:!!l,clickConnectionInProcess:!!a,valid:d&&u}};function mAe({type:e="source",position:r=tt.Top,isValidConnection:n,isConnectable:o=!0,isConnectableStart:a=!0,isConnectableEnd:i=!0,id:s,onConnect:l,children:c,className:u,onMouseDown:d,onTouchStart:h,...f},g){const b=s||null,x=e==="target",w=Ar(),k=R9(),{connectOnClick:C,noPanClassName:_,rfId:T}=qt(hAe,Kr),{connectingFrom:A,connectingTo:R,clickConnecting:D,isPossibleEndHandle:N,connectionInProcess:M,clickConnectionInProcess:O,valid:F}=qt(fAe(k,b,e),Kr);k||w.getState().onError?.("010",dl.error010());const L=V=>{const{defaultEdgeOptions:I,onConnect:H,hasDefaultEdges:q}=w.getState(),Z={...I,...V};if(q){const{edges:W,setEdges:G}=w.getState();G(OCe(Z,W))}H?.(Z),l?.(Z)},U=V=>{if(!k)return;const I=ZH(V.nativeEvent);if(a&&(I&&V.button===0||!I)){const H=w.getState();x9.onPointerDown(V.nativeEvent,{handleDomNode:V.currentTarget,autoPanOnConnect:H.autoPanOnConnect,connectionMode:H.connectionMode,connectionRadius:H.connectionRadius,domNode:H.domNode,nodeLookup:H.nodeLookup,lib:H.lib,isTarget:x,handleId:b,nodeId:k,flowId:H.rfId,panBy:H.panBy,cancelConnection:H.cancelConnection,onConnectStart:H.onConnectStart,onConnectEnd:H.onConnectEnd,updateConnection:H.updateConnection,onConnect:L,isValidConnection:n||H.isValidConnection,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,autoPanSpeed:H.autoPanSpeed,dragThreshold:H.connectionDragThreshold})}I?d?.(V):h?.(V)},P=V=>{const{onClickConnectStart:I,onClickConnectEnd:H,connectionClickStartHandle:q,connectionMode:Z,isValidConnection:W,lib:G,rfId:K,nodeLookup:j,connection:Y}=w.getState();if(!k||!q&&!a)return;if(!q){I?.(V.nativeEvent,{nodeId:k,handleId:b,handleType:e}),w.setState({connectionClickStartHandle:{nodeId:k,type:e,id:b}});return}const Q=XH(V.target),J=n||W,{connection:ie,isValid:ne}=x9.isValid(V.nativeEvent,{handle:{nodeId:k,id:b,type:e},connectionMode:Z,fromNodeId:q.nodeId,fromHandleId:q.id||null,fromType:q.type,isValidConnection:J,flowId:K,doc:Q,lib:G,nodeLookup:j});ne&&ie&&L(ie);const re=structuredClone(Y);delete re.inProgress,re.toPosition=re.toHandle?re.toHandle.position:null,H?.(V,re),w.setState({connectionClickStartHandle:null})};return y.jsx("div",{"data-handleid":b,"data-nodeid":k,"data-handlepos":r,"data-id":`${T}-${k}-${b}-${e}`,className:_n(["react-flow__handle",`react-flow__handle-${r}`,"nodrag",_,u,{source:!x,target:x,connectable:o,connectablestart:a,connectableend:i,clickconnecting:D,connectingfrom:A,connectingto:R,valid:F,connectionindicator:o&&(!M||N)&&(M||O?i:a)}]),onMouseDown:U,onTouchStart:U,onClick:C?P:void 0,ref:g,...f,children:c})}const yo=E.memo(KV(mAe));function gAe({data:e,isConnectable:r,sourcePosition:n=tt.Bottom}){return y.jsxs(y.Fragment,{children:[e?.label,y.jsx(yo,{type:"source",position:n,isConnectable:r})]})}function yAe({data:e,isConnectable:r,targetPosition:n=tt.Top,sourcePosition:o=tt.Bottom}){return y.jsxs(y.Fragment,{children:[y.jsx(yo,{type:"target",position:n,isConnectable:r}),e?.label,y.jsx(yo,{type:"source",position:o,isConnectable:r})]})}function bAe(){return null}function vAe({data:e,isConnectable:r,targetPosition:n=tt.Top}){return y.jsxs(y.Fragment,{children:[y.jsx(yo,{type:"target",position:n,isConnectable:r}),e?.label]})}const z3={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},rq={input:gAe,default:yAe,output:vAe,group:bAe};function xAe(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}const wAe=e=>{const{width:r,height:n,x:o,y:a}=$f(e.nodeLookup,{filter:i=>!!i.selected});return{width:ss(r)?r:null,height:ss(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${a}px)`}};function kAe({onSelectionContextMenu:e,noPanClassName:r,disableKeyboardA11y:n}){const o=Ar(),{width:a,height:i,transformString:s,userSelectionActive:l}=qt(wAe,Kr),c=tq(),u=E.useRef(null);if(E.useEffect(()=>{n||u.current?.focus({preventScroll:!0})},[n]),eq({nodeRef:u}),l||!a||!i)return null;const d=e?f=>{const g=o.getState().nodes.filter(b=>b.selected);e(f,g)}:void 0,h=f=>{Object.prototype.hasOwnProperty.call(z3,f.key)&&(f.preventDefault(),c({direction:z3[f.key],factor:f.shiftKey?4:1}))};return y.jsx("div",{className:_n(["react-flow__nodesselection","react-flow__container",r]),style:{transform:s},children:y.jsx("div",{ref:u,className:"react-flow__nodesselection-rect",onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:a,height:i}})})}const nq=typeof window<"u"?window:void 0,_Ae=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function oq({children:e,onPaneClick:r,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:a,onPaneContextMenu:i,onPaneScroll:s,paneClickDistance:l,deleteKeyCode:c,selectionKeyCode:u,selectionOnDrag:d,selectionMode:h,onSelectionStart:f,onSelectionEnd:g,multiSelectionKeyCode:b,panActivationKeyCode:x,zoomActivationKeyCode:w,elementsSelectable:k,zoomOnScroll:C,zoomOnPinch:_,panOnScroll:T,panOnScrollSpeed:A,panOnScrollMode:R,zoomOnDoubleClick:D,panOnDrag:N,defaultViewport:M,translateExtent:O,minZoom:F,maxZoom:L,preventScrolling:U,onSelectionContextMenu:P,noWheelClassName:V,noPanClassName:I,disableKeyboardA11y:H,onViewportChange:q,isControlledViewport:Z}){const{nodesSelectionActive:W,userSelectionActive:G}=qt(_Ae),K=E0(u,{target:nq}),j=E0(x,{target:nq}),Y=j||N,Q=j||T,J=d&&Y!==!0,ie=K||G||J;return nAe({deleteKeyCode:c,multiSelectionKeyCode:b}),y.jsx(iAe,{onPaneContextMenu:i,elementsSelectable:k,zoomOnScroll:C,zoomOnPinch:_,panOnScroll:Q,panOnScrollSpeed:A,panOnScrollMode:R,zoomOnDoubleClick:D,panOnDrag:!K&&Y,defaultViewport:M,translateExtent:O,minZoom:F,maxZoom:L,zoomActivationKeyCode:w,preventScrolling:U,noWheelClassName:V,noPanClassName:I,onViewportChange:q,isControlledViewport:Z,paneClickDistance:l,children:y.jsxs(uAe,{onSelectionStart:f,onSelectionEnd:g,onPaneClick:r,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:a,onPaneContextMenu:i,onPaneScroll:s,panOnDrag:Y,isSelecting:!!ie,selectionMode:h,selectionKeyPressed:K,selectionOnDrag:J,children:[e,W&&y.jsx(kAe,{onSelectionContextMenu:P,noPanClassName:I,disableKeyboardA11y:H})]})})}oq.displayName="FlowRenderer";const EAe=E.memo(oq),SAe=e=>r=>e?u9(r.nodeLookup,{x:0,y:0,width:r.width,height:r.height},r.transform,!0).map(n=>n.id):Array.from(r.nodeLookup.keys());function CAe(e){return qt(E.useCallback(SAe(e),[e]),Kr)}const TAe=e=>e.updateNodeInternals;function AAe(){const e=qt(TAe),[r]=E.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const o=new Map;n.forEach(a=>{const i=a.target.getAttribute("data-id");o.set(i,{id:i,nodeElement:a.target,force:!0})}),e(o)}));return E.useEffect(()=>()=>{r?.disconnect()},[r]),r}function RAe({node:e,nodeType:r,hasDimensions:n,resizeObserver:o}){const a=Ar(),i=E.useRef(null),s=E.useRef(null),l=E.useRef(e.sourcePosition),c=E.useRef(e.targetPosition),u=E.useRef(r),d=n&&!!e.internals.handleBounds;return E.useEffect(()=>{i.current&&!e.hidden&&(!d||s.current!==i.current)&&(s.current&&o?.unobserve(s.current),o?.observe(i.current),s.current=i.current)},[d,e.hidden]),E.useEffect(()=>()=>{s.current&&(o?.unobserve(s.current),s.current=null)},[]),E.useEffect(()=>{if(i.current){const h=u.current!==r,f=l.current!==e.sourcePosition,g=c.current!==e.targetPosition;(h||f||g)&&(u.current=r,l.current=e.sourcePosition,c.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:i.current,force:!0}]])))}},[e.id,r,e.sourcePosition,e.targetPosition]),i}function NAe({id:e,onClick:r,onMouseEnter:n,onMouseMove:o,onMouseLeave:a,onContextMenu:i,onDoubleClick:s,nodesDraggable:l,elementsSelectable:c,nodesConnectable:u,nodesFocusable:d,resizeObserver:h,noDragClassName:f,noPanClassName:g,disableKeyboardA11y:b,rfId:x,nodeTypes:w,nodeClickDistance:k,onError:C}){const{node:_,internals:T,isParent:A}=qt(ne=>{const re=ne.nodeLookup.get(e),ge=ne.parentLookup.has(e);return{node:re,internals:re.internals,isParent:ge}},Kr);let R=_.type||"default",D=w?.[R]||rq[R];D===void 0&&(C?.("003",dl.error003(R)),R="default",D=w?.default||rq.default);const N=!!(_.draggable||l&&typeof _.draggable>"u"),M=!!(_.selectable||c&&typeof _.selectable>"u"),O=!!(_.connectable||u&&typeof _.connectable>"u"),F=!!(_.focusable||d&&typeof _.focusable>"u"),L=Ar(),U=WH(_),P=RAe({node:_,nodeType:R,hasDimensions:U,resizeObserver:h}),V=eq({nodeRef:P,disabled:_.hidden||!N,noDragClassName:f,handleSelector:_.dragHandle,nodeId:e,isSelectable:M,nodeClickDistance:k}),I=tq();if(_.hidden)return null;const H=ao(_),q=xAe(_),Z=M||N||r||n||o||a,W=n?ne=>n(ne,{...T.userNode}):void 0,G=o?ne=>o(ne,{...T.userNode}):void 0,K=a?ne=>a(ne,{...T.userNode}):void 0,j=i?ne=>i(ne,{...T.userNode}):void 0,Y=s?ne=>s(ne,{...T.userNode}):void 0,Q=ne=>{const{selectNodesOnDrag:re,nodeDragThreshold:ge}=L.getState();M&&(!re||!N||ge>0)&&T9({id:e,store:L,nodeRef:P}),r&&r(ne,{...T.userNode})},J=ne=>{if(!(KH(ne.nativeEvent)||b)){if(MH.includes(ne.key)&&M){const re=ne.key==="Escape";T9({id:e,store:L,unselect:re,nodeRef:P})}else if(N&&_.selected&&Object.prototype.hasOwnProperty.call(z3,ne.key)){ne.preventDefault();const{ariaLabelConfig:re}=L.getState();L.setState({ariaLiveMessage:re["node.a11yDescription.ariaLiveMessage"]({direction:ne.key.replace("Arrow","").toLowerCase(),x:~~T.positionAbsolute.x,y:~~T.positionAbsolute.y})}),I({direction:z3[ne.key],factor:ne.shiftKey?4:1})}}},ie=()=>{if(b||!P.current?.matches(":focus-visible"))return;const{transform:ne,width:re,height:ge,autoPanOnNodeFocus:De,setCenter:he}=L.getState();De&&(u9(new Map([[e,_]]),{x:0,y:0,width:re,height:ge},ne,!0).length>0||he(_.position.x+H.width/2,_.position.y+H.height/2,{zoom:ne[2]}))};return y.jsx("div",{className:_n(["react-flow__node",`react-flow__node-${R}`,{[g]:N},_.className,{selected:_.selected,selectable:M,parent:A,draggable:N,dragging:V}]),ref:P,style:{zIndex:T.z,transform:`translate(${T.positionAbsolute.x}px,${T.positionAbsolute.y}px)`,pointerEvents:Z?"all":"none",visibility:U?"visible":"hidden",..._.style,...q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:W,onMouseMove:G,onMouseLeave:K,onContextMenu:j,onClick:Q,onDoubleClick:Y,onKeyDown:F?J:void 0,tabIndex:F?0:void 0,onFocus:F?ie:void 0,role:_.ariaRole??(F?"group":void 0),"aria-roledescription":"node","aria-describedby":b?void 0:`${OV}-${x}`,"aria-label":_.ariaLabel,..._.domAttributes,children:y.jsx(pAe,{value:e,children:y.jsx(D,{id:e,data:_.data,type:R,positionAbsoluteX:T.positionAbsolute.x,positionAbsoluteY:T.positionAbsolute.y,selected:_.selected??!1,selectable:M,draggable:N,deletable:_.deletable??!0,isConnectable:O,sourcePosition:_.sourcePosition,targetPosition:_.targetPosition,dragging:V,dragHandle:_.dragHandle,zIndex:T.z,parentId:_.parentId,...H})})})}var DAe=E.memo(NAe);const $Ae=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function aq(e){const{nodesDraggable:r,nodesConnectable:n,nodesFocusable:o,elementsSelectable:a,onError:i}=qt($Ae,Kr),s=CAe(e.onlyRenderVisibleElements),l=AAe();return y.jsx("div",{className:"react-flow__nodes",style:P3,children:s.map(c=>y.jsx(DAe,{id:c,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:l,nodesDraggable:r,nodesConnectable:n,nodesFocusable:o,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:i},c))})}aq.displayName="NodeRenderer";const MAe=E.memo(aq);function PAe(e){return qt(E.useCallback(r=>{if(!e)return r.edges.map(o=>o.id);const n=[];if(r.width&&r.height)for(const o of r.edges){const a=r.nodeLookup.get(o.source),i=r.nodeLookup.get(o.target);a&&i&&PCe({sourceNode:a,targetNode:i,width:r.width,height:r.height,transform:r.transform})&&n.push(o.id)}return n},[e]),Kr)}const zAe=({color:e="none",strokeWidth:r=1})=>{const n={strokeWidth:r,...e&&{stroke:e}};return y.jsx("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},IAe=({color:e="none",strokeWidth:r=1})=>{const n={strokeWidth:r,...e&&{stroke:e,fill:e}};return y.jsx("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},iq={[x3.Arrow]:zAe,[x3.ArrowClosed]:IAe};function OAe(e){const r=Ar();return E.useMemo(()=>Object.prototype.hasOwnProperty.call(iq,e)?iq[e]:(r.getState().onError?.("009",dl.error009(e)),null),[e])}const jAe=({id:e,type:r,color:n,width:o=12.5,height:a=12.5,markerUnits:i="strokeWidth",strokeWidth:s,orient:l="auto-start-reverse"})=>{const c=OAe(r);return c?y.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${o}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0",children:y.jsx(c,{color:n,strokeWidth:s})}):null},sq=({defaultColor:e,rfId:r})=>{const n=qt(i=>i.edges),o=qt(i=>i.defaultEdgeOptions),a=E.useMemo(()=>FCe(n,{id:r,defaultColor:e,defaultMarkerStart:o?.markerStart,defaultMarkerEnd:o?.markerEnd}),[n,o,r,e]);return a.length?y.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:y.jsx("defs",{children:a.map(i=>y.jsx(jAe,{id:i.id,type:i.type,color:i.color,width:i.width,height:i.height,markerUnits:i.markerUnits,strokeWidth:i.strokeWidth,orient:i.orient},i.id))})}):null};sq.displayName="MarkerDefinitions";var LAe=E.memo(sq);function lq({x:e,y:r,label:n,labelStyle:o,labelShowBg:a=!0,labelBgStyle:i,labelBgPadding:s=[2,4],labelBgBorderRadius:l=2,children:c,className:u,...d}){const[h,f]=E.useState({x:1,y:0,width:0,height:0}),g=_n(["react-flow__edge-textwrapper",u]),b=E.useRef(null);return E.useEffect(()=>{if(b.current){const x=b.current.getBBox();f({x:x.x,y:x.y,width:x.width,height:x.height})}},[n]),n?y.jsxs("g",{transform:`translate(${e-h.width/2} ${r-h.height/2})`,className:g,visibility:h.width?"visible":"hidden",...d,children:[a&&y.jsx("rect",{width:h.width+2*s[0],x:-s[0],y:-s[1],height:h.height+2*s[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),y.jsx("text",{className:"react-flow__edge-text",y:h.height/2,dy:"0.3em",ref:b,style:o,children:n}),c]}):null}lq.displayName="EdgeText";const BAe=E.memo(lq);function I3({path:e,labelX:r,labelY:n,label:o,labelStyle:a,labelShowBg:i,labelBgStyle:s,labelBgPadding:l,labelBgBorderRadius:c,interactionWidth:u=20,...d}){return y.jsxs(y.Fragment,{children:[y.jsx("path",{...d,d:e,fill:"none",className:_n(["react-flow__edge-path",d.className])}),u?y.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:u,className:"react-flow__edge-interaction"}):null,o&&ss(r)&&ss(n)?y.jsx(BAe,{x:r,y:n,label:o,labelStyle:a,labelShowBg:i,labelBgStyle:s,labelBgPadding:l,labelBgBorderRadius:c}):null]})}function cq({pos:e,x1:r,y1:n,x2:o,y2:a}){return e===tt.Left||e===tt.Right?[.5*(r+o),n]:[r,.5*(n+a)]}function uq({sourceX:e,sourceY:r,sourcePosition:n=tt.Bottom,targetX:o,targetY:a,targetPosition:i=tt.Top}){const[s,l]=cq({pos:n,x1:e,y1:r,x2:o,y2:a}),[c,u]=cq({pos:i,x1:o,y1:a,x2:e,y2:r}),[d,h,f,g]=JH({sourceX:e,sourceY:r,targetX:o,targetY:a,sourceControlX:s,sourceControlY:l,targetControlX:c,targetControlY:u});return[`M${e},${r} C${s},${l} ${c},${u} ${o},${a}`,d,h,f,g]}function dq(e){return E.memo(({id:r,sourceX:n,sourceY:o,targetX:a,targetY:i,sourcePosition:s,targetPosition:l,label:c,labelStyle:u,labelShowBg:d,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:g,style:b,markerEnd:x,markerStart:w,interactionWidth:k})=>{const[C,_,T]=uq({sourceX:n,sourceY:o,sourcePosition:s,targetX:a,targetY:i,targetPosition:l}),A=e.isInternal?void 0:r;return y.jsx(I3,{id:A,path:C,labelX:_,labelY:T,label:c,labelStyle:u,labelShowBg:d,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:g,style:b,markerEnd:x,markerStart:w,interactionWidth:k})})}const FAe=dq({isInternal:!1}),pq=dq({isInternal:!0});FAe.displayName="SimpleBezierEdge",pq.displayName="SimpleBezierEdgeInternal";function hq(e){return E.memo(({id:r,sourceX:n,sourceY:o,targetX:a,targetY:i,label:s,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,sourcePosition:g=tt.Bottom,targetPosition:b=tt.Top,markerEnd:x,markerStart:w,pathOptions:k,interactionWidth:C})=>{const[_,T,A]=T3({sourceX:n,sourceY:o,sourcePosition:g,targetX:a,targetY:i,targetPosition:b,borderRadius:k?.borderRadius,offset:k?.offset,stepPosition:k?.stepPosition}),R=e.isInternal?void 0:r;return y.jsx(I3,{id:R,path:_,labelX:T,labelY:A,label:s,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:x,markerStart:w,interactionWidth:C})})}const fq=hq({isInternal:!1}),mq=hq({isInternal:!0});fq.displayName="SmoothStepEdge",mq.displayName="SmoothStepEdgeInternal";function gq(e){return E.memo(({id:r,...n})=>{const o=e.isInternal?void 0:r;return y.jsx(fq,{...n,id:o,pathOptions:E.useMemo(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}const HAe=gq({isInternal:!1}),yq=gq({isInternal:!0});HAe.displayName="StepEdge",yq.displayName="StepEdgeInternal";function bq(e){return E.memo(({id:r,sourceX:n,sourceY:o,targetX:a,targetY:i,label:s,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:b,interactionWidth:x})=>{const[w,k,C]=rV({sourceX:n,sourceY:o,targetX:a,targetY:i}),_=e.isInternal?void 0:r;return y.jsx(I3,{id:_,path:w,labelX:k,labelY:C,label:s,labelStyle:l,labelShowBg:c,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:b,interactionWidth:x})})}const VAe=bq({isInternal:!1}),vq=bq({isInternal:!0});VAe.displayName="StraightEdge",vq.displayName="StraightEdgeInternal";function xq(e){return E.memo(({id:r,sourceX:n,sourceY:o,targetX:a,targetY:i,sourcePosition:s=tt.Bottom,targetPosition:l=tt.Top,label:c,labelStyle:u,labelShowBg:d,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:g,style:b,markerEnd:x,markerStart:w,pathOptions:k,interactionWidth:C})=>{const[_,T,A]=C3({sourceX:n,sourceY:o,sourcePosition:s,targetX:a,targetY:i,targetPosition:l,curvature:k?.curvature}),R=e.isInternal?void 0:r;return y.jsx(I3,{id:R,path:_,labelX:T,labelY:A,label:c,labelStyle:u,labelShowBg:d,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:g,style:b,markerEnd:x,markerStart:w,interactionWidth:C})})}const qAe=xq({isInternal:!1}),wq=xq({isInternal:!0});qAe.displayName="BezierEdge",wq.displayName="BezierEdgeInternal";const kq={default:wq,straight:vq,step:yq,smoothstep:mq,simplebezier:pq},_q={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},UAe=(e,r,n)=>n===tt.Left?e-r:n===tt.Right?e+r:e,WAe=(e,r,n)=>n===tt.Top?e-r:n===tt.Bottom?e+r:e,Eq="react-flow__edgeupdater";function Sq({position:e,centerX:r,centerY:n,radius:o=10,onMouseDown:a,onMouseEnter:i,onMouseOut:s,type:l}){return y.jsx("circle",{onMouseDown:a,onMouseEnter:i,onMouseOut:s,className:_n([Eq,`${Eq}-${l}`]),cx:UAe(r,o,e),cy:WAe(n,o,e),r:o,stroke:"transparent",fill:"transparent"})}function YAe({isReconnectable:e,reconnectRadius:r,edge:n,sourceX:o,sourceY:a,targetX:i,targetY:s,sourcePosition:l,targetPosition:c,onReconnect:u,onReconnectStart:d,onReconnectEnd:h,setReconnecting:f,setUpdateHover:g}){const b=Ar(),x=(T,A)=>{if(T.button!==0)return;const{autoPanOnConnect:R,domNode:D,isValidConnection:N,connectionMode:M,connectionRadius:O,lib:F,onConnectStart:L,onConnectEnd:U,cancelConnection:P,nodeLookup:V,rfId:I,panBy:H,updateConnection:q}=b.getState(),Z=A.type==="target",W=(j,Y)=>{f(!1),h?.(j,n,A.type,Y)},G=j=>u?.(n,j),K=(j,Y)=>{f(!0),d?.(T,n,A.type),L?.(j,Y)};x9.onPointerDown(T.nativeEvent,{autoPanOnConnect:R,connectionMode:M,connectionRadius:O,domNode:D,handleId:A.id,nodeId:A.nodeId,nodeLookup:V,isTarget:Z,edgeUpdaterType:A.type,lib:F,flowId:I,cancelConnection:P,panBy:H,isValidConnection:N,onConnect:G,onConnectStart:K,onConnectEnd:U,onReconnectEnd:W,updateConnection:q,getTransform:()=>b.getState().transform,getFromHandle:()=>b.getState().connection.fromHandle,dragThreshold:b.getState().connectionDragThreshold,handleDomNode:T.currentTarget})},w=T=>x(T,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),k=T=>x(T,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),C=()=>g(!0),_=()=>g(!1);return y.jsxs(y.Fragment,{children:[(e===!0||e==="source")&&y.jsx(Sq,{position:l,centerX:o,centerY:a,radius:r,onMouseDown:w,onMouseEnter:C,onMouseOut:_,type:"source"}),(e===!0||e==="target")&&y.jsx(Sq,{position:c,centerX:i,centerY:s,radius:r,onMouseDown:k,onMouseEnter:C,onMouseOut:_,type:"target"})]})}function GAe({id:e,edgesFocusable:r,edgesReconnectable:n,elementsSelectable:o,onClick:a,onDoubleClick:i,onContextMenu:s,onMouseEnter:l,onMouseMove:c,onMouseLeave:u,reconnectRadius:d,onReconnect:h,onReconnectStart:f,onReconnectEnd:g,rfId:b,edgeTypes:x,noPanClassName:w,onError:k,disableKeyboardA11y:C}){let _=qt(he=>he.edgeLookup.get(e));const T=qt(he=>he.defaultEdgeOptions);_=T?{...T,..._}:_;let A=_.type||"default",R=x?.[A]||kq[A];R===void 0&&(k?.("011",dl.error011(A)),A="default",R=x?.default||kq.default);const D=!!(_.focusable||r&&typeof _.focusable>"u"),N=typeof h<"u"&&(_.reconnectable||n&&typeof _.reconnectable>"u"),M=!!(_.selectable||o&&typeof _.selectable>"u"),O=E.useRef(null),[F,L]=E.useState(!1),[U,P]=E.useState(!1),V=Ar(),{zIndex:I,sourceX:H,sourceY:q,targetX:Z,targetY:W,sourcePosition:G,targetPosition:K}=qt(E.useCallback(he=>{const me=he.nodeLookup.get(_.source),Te=he.nodeLookup.get(_.target);if(!me||!Te)return{zIndex:_.zIndex,..._q};const Ie=iV({id:e,sourceNode:me,targetNode:Te,sourceHandle:_.sourceHandle||null,targetHandle:_.targetHandle||null,connectionMode:he.connectionMode,onError:k});return{zIndex:MCe({selected:_.selected,zIndex:_.zIndex,sourceNode:me,targetNode:Te,elevateOnSelect:he.elevateEdgesOnSelect}),...Ie||_q}},[_.source,_.target,_.sourceHandle,_.targetHandle,_.selected,_.zIndex]),Kr),j=E.useMemo(()=>_.markerStart?`url('#${h9(_.markerStart,b)}')`:void 0,[_.markerStart,b]),Y=E.useMemo(()=>_.markerEnd?`url('#${h9(_.markerEnd,b)}')`:void 0,[_.markerEnd,b]);if(_.hidden||H===null||q===null||Z===null||W===null)return null;const Q=he=>{const{addSelectedEdges:me,unselectNodesAndEdges:Te,multiSelectionActive:Ie}=V.getState();M&&(V.setState({nodesSelectionActive:!1}),_.selected&&Ie?(Te({nodes:[],edges:[_]}),O.current?.blur()):me([e])),a&&a(he,_)},J=i?he=>{i(he,{..._})}:void 0,ie=s?he=>{s(he,{..._})}:void 0,ne=l?he=>{l(he,{..._})}:void 0,re=c?he=>{c(he,{..._})}:void 0,ge=u?he=>{u(he,{..._})}:void 0,De=he=>{if(!C&&MH.includes(he.key)&&M){const{unselectNodesAndEdges:me,addSelectedEdges:Te}=V.getState();he.key==="Escape"?(O.current?.blur(),me({edges:[_]})):Te([e])}};return y.jsx("svg",{style:{zIndex:I},children:y.jsxs("g",{className:_n(["react-flow__edge",`react-flow__edge-${A}`,_.className,w,{selected:_.selected,animated:_.animated,inactive:!M&&!a,updating:F,selectable:M}]),onClick:Q,onDoubleClick:J,onContextMenu:ie,onMouseEnter:ne,onMouseMove:re,onMouseLeave:ge,onKeyDown:D?De:void 0,tabIndex:D?0:void 0,role:_.ariaRole??(D?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":_.ariaLabel===null?void 0:_.ariaLabel||`Edge from ${_.source} to ${_.target}`,"aria-describedby":D?`${jV}-${b}`:void 0,ref:O,..._.domAttributes,children:[!U&&y.jsx(R,{id:e,source:_.source,target:_.target,type:_.type,selected:_.selected,animated:_.animated,selectable:M,deletable:_.deletable??!0,label:_.label,labelStyle:_.labelStyle,labelShowBg:_.labelShowBg,labelBgStyle:_.labelBgStyle,labelBgPadding:_.labelBgPadding,labelBgBorderRadius:_.labelBgBorderRadius,sourceX:H,sourceY:q,targetX:Z,targetY:W,sourcePosition:G,targetPosition:K,data:_.data,style:_.style,sourceHandleId:_.sourceHandle,targetHandleId:_.targetHandle,markerStart:j,markerEnd:Y,pathOptions:"pathOptions"in _?_.pathOptions:void 0,interactionWidth:_.interactionWidth}),N&&y.jsx(YAe,{edge:_,isReconnectable:N,reconnectRadius:d,onReconnect:h,onReconnectStart:f,onReconnectEnd:g,sourceX:H,sourceY:q,targetX:Z,targetY:W,sourcePosition:G,targetPosition:K,setUpdateHover:L,setReconnecting:P})]})})}var XAe=E.memo(GAe);const KAe=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function Cq({defaultMarkerColor:e,onlyRenderVisibleElements:r,rfId:n,edgeTypes:o,noPanClassName:a,onReconnect:i,onEdgeContextMenu:s,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:u,onEdgeClick:d,reconnectRadius:h,onEdgeDoubleClick:f,onReconnectStart:g,onReconnectEnd:b,disableKeyboardA11y:x}){const{edgesFocusable:w,edgesReconnectable:k,elementsSelectable:C,onError:_}=qt(KAe,Kr),T=PAe(r);return y.jsxs("div",{className:"react-flow__edges",children:[y.jsx(LAe,{defaultColor:e,rfId:n}),T.map(A=>y.jsx(XAe,{id:A,edgesFocusable:w,edgesReconnectable:k,elementsSelectable:C,noPanClassName:a,onReconnect:i,onContextMenu:s,onMouseEnter:l,onMouseMove:c,onMouseLeave:u,onClick:d,reconnectRadius:h,onDoubleClick:f,onReconnectStart:g,onReconnectEnd:b,rfId:n,onError:_,edgeTypes:o,disableKeyboardA11y:x},A))]})}Cq.displayName="EdgeRenderer";const ZAe=E.memo(Cq),QAe=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function JAe({children:e}){const r=qt(QAe);return y.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:r},children:e})}function eRe(e){const r=Bf(),n=E.useRef(!1);E.useEffect(()=>{!n.current&&r.viewportInitialized&&e&&(setTimeout(()=>e(r),1),n.current=!0)},[e,r.viewportInitialized])}const tRe=e=>e.panZoom?.syncViewport;function rRe(e){const r=qt(tRe),n=Ar();return E.useEffect(()=>{e&&(r?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,r]),null}function nRe(e){return e.connection.inProgress?{...e.connection,to:w0(e.connection.to,e.transform)}:{...e.connection}}function oRe(e){return nRe}function aRe(e){const r=oRe();return qt(r,Kr)}const iRe=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function sRe({containerStyle:e,style:r,type:n,component:o}){const{nodesConnectable:a,width:i,height:s,isValid:l,inProgress:c}=qt(iRe,Kr);return i&&a&&c?y.jsx("svg",{style:e,width:i,height:s,className:"react-flow__connectionline react-flow__container",children:y.jsx("g",{className:_n(["react-flow__connection",OH(l)]),children:y.jsx(Tq,{style:r,type:n,CustomComponent:o,isValid:l})})}):null}const Tq=({style:e,type:r=bu.Bezier,CustomComponent:n,isValid:o})=>{const{inProgress:a,from:i,fromNode:s,fromHandle:l,fromPosition:c,to:u,toNode:d,toHandle:h,toPosition:f}=aRe();if(!a)return;if(n)return y.jsx(n,{connectionLineType:r,connectionLineStyle:e,fromNode:s,fromHandle:l,fromX:i.x,fromY:i.y,toX:u.x,toY:u.y,fromPosition:c,toPosition:f,connectionStatus:OH(o),toNode:d,toHandle:h});let g="";const b={sourceX:i.x,sourceY:i.y,sourcePosition:c,targetX:u.x,targetY:u.y,targetPosition:f};switch(r){case bu.Bezier:[g]=C3(b);break;case bu.SimpleBezier:[g]=uq(b);break;case bu.Step:[g]=T3({...b,borderRadius:0});break;case bu.SmoothStep:[g]=T3(b);break;default:[g]=rV(b)}return y.jsx("path",{d:g,fill:"none",className:"react-flow__connection-path",style:e})};Tq.displayName="ConnectionLine";const lRe={};function Aq(e=lRe){E.useRef(e),Ar(),E.useEffect(()=>{},[e])}function cRe(){Ar(),E.useRef(!1),E.useEffect(()=>{},[])}function Rq({nodeTypes:e,edgeTypes:r,onInit:n,onNodeClick:o,onEdgeClick:a,onNodeDoubleClick:i,onEdgeDoubleClick:s,onNodeMouseEnter:l,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:d,onSelectionContextMenu:h,onSelectionStart:f,onSelectionEnd:g,connectionLineType:b,connectionLineStyle:x,connectionLineComponent:w,connectionLineContainerStyle:k,selectionKeyCode:C,selectionOnDrag:_,selectionMode:T,multiSelectionKeyCode:A,panActivationKeyCode:R,zoomActivationKeyCode:D,deleteKeyCode:N,onlyRenderVisibleElements:M,elementsSelectable:O,defaultViewport:F,translateExtent:L,minZoom:U,maxZoom:P,preventScrolling:V,defaultMarkerColor:I,zoomOnScroll:H,zoomOnPinch:q,panOnScroll:Z,panOnScrollSpeed:W,panOnScrollMode:G,zoomOnDoubleClick:K,panOnDrag:j,onPaneClick:Y,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:ie,onPaneScroll:ne,onPaneContextMenu:re,paneClickDistance:ge,nodeClickDistance:De,onEdgeContextMenu:he,onEdgeMouseEnter:me,onEdgeMouseMove:Te,onEdgeMouseLeave:Ie,reconnectRadius:Ze,onReconnect:rt,onReconnectStart:Rt,onReconnectEnd:Qe,noDragClassName:Pt,noWheelClassName:Ke,noPanClassName:Ge,disableKeyboardA11y:ct,nodeExtent:ut,rfId:Ir,viewport:Ee,onViewportChange:Se}){return Aq(e),Aq(r),cRe(),eRe(n),rRe(Ee),y.jsx(EAe,{onPaneClick:Y,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:ie,onPaneContextMenu:re,onPaneScroll:ne,paneClickDistance:ge,deleteKeyCode:N,selectionKeyCode:C,selectionOnDrag:_,selectionMode:T,onSelectionStart:f,onSelectionEnd:g,multiSelectionKeyCode:A,panActivationKeyCode:R,zoomActivationKeyCode:D,elementsSelectable:O,zoomOnScroll:H,zoomOnPinch:q,zoomOnDoubleClick:K,panOnScroll:Z,panOnScrollSpeed:W,panOnScrollMode:G,panOnDrag:j,defaultViewport:F,translateExtent:L,minZoom:U,maxZoom:P,onSelectionContextMenu:h,preventScrolling:V,noDragClassName:Pt,noWheelClassName:Ke,noPanClassName:Ge,disableKeyboardA11y:ct,onViewportChange:Se,isControlledViewport:!!Ee,children:y.jsxs(JAe,{children:[y.jsx(ZAe,{edgeTypes:r,onEdgeClick:a,onEdgeDoubleClick:s,onReconnect:rt,onReconnectStart:Rt,onReconnectEnd:Qe,onlyRenderVisibleElements:M,onEdgeContextMenu:he,onEdgeMouseEnter:me,onEdgeMouseMove:Te,onEdgeMouseLeave:Ie,reconnectRadius:Ze,defaultMarkerColor:I,noPanClassName:Ge,disableKeyboardA11y:ct,rfId:Ir}),y.jsx(sRe,{style:x,type:b,component:w,containerStyle:k}),y.jsx("div",{className:"react-flow__edgelabel-renderer"}),y.jsx(MAe,{nodeTypes:e,onNodeClick:o,onNodeDoubleClick:i,onNodeMouseEnter:l,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:d,nodeClickDistance:De,onlyRenderVisibleElements:M,noPanClassName:Ge,noDragClassName:Pt,disableKeyboardA11y:ct,nodeExtent:ut,rfId:Ir}),y.jsx("div",{className:"react-flow__viewport-portal"})]})})}Rq.displayName="GraphView";const uRe=E.memo(Rq),Nq=({nodes:e,edges:r,defaultNodes:n,defaultEdges:o,width:a,height:i,fitView:s,fitViewOptions:l,minZoom:c=.5,maxZoom:u=2,nodeOrigin:d,nodeExtent:h}={})=>{const f=new Map,g=new Map,b=new Map,x=new Map,w=o??r??[],k=n??e??[],C=d??[0,0],_=h??g0;pV(b,x,w);const T=g9(k,f,g,{nodeOrigin:C,nodeExtent:_,elevateNodesOnSelect:!1});let A=[0,0,1];if(s&&a&&i){const R=$f(f,{filter:O=>!!((O.width||O.initialWidth)&&(O.height||O.initialHeight))}),{x:D,y:N,zoom:M}=vu(R,a,i,c,u,l?.padding??.1);A=[D,N,M]}return{rfId:"1",width:a??0,height:i??0,transform:A,nodes:k,nodesInitialized:T,nodeLookup:f,parentLookup:g,edges:w,edgeLookup:x,connectionLookup:b,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:o!==void 0,panZoom:null,minZoom:c,maxZoom:u,translateExtent:g0,nodeExtent:_,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Df.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:C,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!1,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:s??!1,fitViewOptions:l,fitViewResolver:null,connection:{...zH},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:TCe,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:PH}},dRe=({nodes:e,edges:r,defaultNodes:n,defaultEdges:o,width:a,height:i,fitView:s,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:d,nodeExtent:h})=>RTe((f,g)=>{async function b(){const{nodeLookup:x,panZoom:w,fitViewOptions:k,fitViewResolver:C,width:_,height:T,minZoom:A,maxZoom:R}=g();w&&(await SCe({nodes:x,width:_,height:T,panZoom:w,minZoom:A,maxZoom:R},k),C?.resolve(!0),f({fitViewResolver:null}))}return{...Nq({nodes:e,edges:r,width:a,height:i,fitView:s,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:d,nodeExtent:h,defaultNodes:n,defaultEdges:o}),setNodes:x=>{const{nodeLookup:w,parentLookup:k,nodeOrigin:C,elevateNodesOnSelect:_,fitViewQueued:T}=g(),A=g9(x,w,k,{nodeOrigin:C,nodeExtent:h,elevateNodesOnSelect:_,checkEquality:!0});T&&A?(b(),f({nodes:x,nodesInitialized:A,fitViewQueued:!1,fitViewOptions:void 0})):f({nodes:x,nodesInitialized:A})},setEdges:x=>{const{connectionLookup:w,edgeLookup:k}=g();pV(w,k,x),f({edges:x})},setDefaultNodesAndEdges:(x,w)=>{if(x){const{setNodes:k}=g();k(x),f({hasDefaultNodes:!0})}if(w){const{setEdges:k}=g();k(w),f({hasDefaultEdges:!0})}},updateNodeInternals:x=>{const{triggerNodeChanges:w,nodeLookup:k,parentLookup:C,domNode:_,nodeOrigin:T,nodeExtent:A,debug:R,fitViewQueued:D}=g(),{changes:N,updatedInternals:M}=XCe(x,k,C,_,T,A);M&&(UCe(k,C,{nodeOrigin:T,nodeExtent:A}),D?(b(),f({fitViewQueued:!1,fitViewOptions:void 0})):f({}),N?.length>0&&(R&&console.log("React Flow: trigger node changes",N),w?.(N)))},updateNodePositions:(x,w=!1)=>{const k=[],C=[],{nodeLookup:_,triggerNodeChanges:T}=g();for(const[A,R]of x){const D=_.get(A),N=!!(D?.expandParent&&D?.parentId&&R?.position),M={id:A,type:"position",position:N?{x:Math.max(0,R.position.x),y:Math.max(0,R.position.y)}:R.position,dragging:w};N&&D.parentId&&k.push({id:A,parentId:D.parentId,rect:{...R.internals.positionAbsolute,width:R.measured.width??0,height:R.measured.height??0}}),C.push(M)}if(k.length>0){const{parentLookup:A,nodeOrigin:R}=g(),D=b9(k,_,A,R);C.push(...D)}T(C)},triggerNodeChanges:x=>{const{onNodesChange:w,setNodes:k,nodes:C,hasDefaultNodes:_,debug:T}=g();if(x?.length){if(_){const A=$3(x,C);k(A)}T&&console.log("React Flow: trigger node changes",x),w?.(x)}},triggerEdgeChanges:x=>{const{onEdgesChange:w,setEdges:k,edges:C,hasDefaultEdges:_,debug:T}=g();if(x?.length){if(_){const A=M3(x,C);k(A)}T&&console.log("React Flow: trigger edge changes",x),w?.(x)}},addSelectedNodes:x=>{const{multiSelectionActive:w,edgeLookup:k,nodeLookup:C,triggerNodeChanges:_,triggerEdgeChanges:T}=g();if(w){const A=x.map(R=>pp(R,!0));_(A);return}_(Lf(C,new Set([...x]),!0)),T(Lf(k))},addSelectedEdges:x=>{const{multiSelectionActive:w,edgeLookup:k,nodeLookup:C,triggerNodeChanges:_,triggerEdgeChanges:T}=g();if(w){const A=x.map(R=>pp(R,!0));T(A);return}T(Lf(k,new Set([...x]))),_(Lf(C,new Set,!0))},unselectNodesAndEdges:({nodes:x,edges:w}={})=>{const{edges:k,nodes:C,nodeLookup:_,triggerNodeChanges:T,triggerEdgeChanges:A}=g(),R=x||C,D=w||k,N=R.map(O=>{const F=_.get(O.id);return F&&(F.selected=!1),pp(O.id,!1)}),M=D.map(O=>pp(O.id,!1));T(N),A(M)},setMinZoom:x=>{const{panZoom:w,maxZoom:k}=g();w?.setScaleExtent([x,k]),f({minZoom:x})},setMaxZoom:x=>{const{panZoom:w,minZoom:k}=g();w?.setScaleExtent([k,x]),f({maxZoom:x})},setTranslateExtent:x=>{g().panZoom?.setTranslateExtent(x),f({translateExtent:x})},setPaneClickDistance:x=>{g().panZoom?.setClickDistance(x)},resetSelectedElements:()=>{const{edges:x,nodes:w,triggerNodeChanges:k,triggerEdgeChanges:C,elementsSelectable:_}=g();if(!_)return;const T=w.reduce((R,D)=>D.selected?[...R,pp(D.id,!1)]:R,[]),A=x.reduce((R,D)=>D.selected?[...R,pp(D.id,!1)]:R,[]);k(T),C(A)},setNodeExtent:x=>{const{nodes:w,nodeLookup:k,parentLookup:C,nodeOrigin:_,elevateNodesOnSelect:T,nodeExtent:A}=g();x[0][0]===A[0][0]&&x[0][1]===A[0][1]&&x[1][0]===A[1][0]&&x[1][1]===A[1][1]||(g9(w,k,C,{nodeOrigin:_,nodeExtent:x,elevateNodesOnSelect:T,checkEquality:!1}),f({nodeExtent:x}))},panBy:x=>{const{transform:w,width:k,height:C,panZoom:_,translateExtent:T}=g();return KCe({delta:x,panZoom:_,transform:w,translateExtent:T,width:k,height:C})},setCenter:async(x,w,k)=>{const{width:C,height:_,maxZoom:T,panZoom:A}=g();if(!A)return Promise.resolve(!1);const R=typeof k?.zoom<"u"?k.zoom:T;return await A.setViewport({x:C/2-x*R,y:_/2-w*R,zoom:R},{duration:k?.duration,ease:k?.ease,interpolate:k?.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{f({connection:{...zH}})},updateConnection:x=>{f({connection:x})},reset:()=>f({...Nq()})}},Object.is);function O3({initialNodes:e,initialEdges:r,defaultNodes:n,defaultEdges:o,initialWidth:a,initialHeight:i,initialMinZoom:s,initialMaxZoom:l,initialFitViewOptions:c,fitView:u,nodeOrigin:d,nodeExtent:h,children:f}){const[g]=E.useState(()=>dRe({nodes:e,edges:r,defaultNodes:n,defaultEdges:o,width:a,height:i,fitView:u,minZoom:s,maxZoom:l,fitViewOptions:c,nodeOrigin:d,nodeExtent:h}));return y.jsx(NTe,{value:g,children:y.jsx(JTe,{children:f})})}function pRe({children:e,nodes:r,edges:n,defaultNodes:o,defaultEdges:a,width:i,height:s,fitView:l,fitViewOptions:c,minZoom:u,maxZoom:d,nodeOrigin:h,nodeExtent:f}){return E.useContext(N3)?y.jsx(y.Fragment,{children:e}):y.jsx(O3,{initialNodes:r,initialEdges:n,defaultNodes:o,defaultEdges:a,initialWidth:i,initialHeight:s,fitView:l,initialFitViewOptions:c,initialMinZoom:u,initialMaxZoom:d,nodeOrigin:h,nodeExtent:f,children:e})}const hRe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function fRe({nodes:e,edges:r,defaultNodes:n,defaultEdges:o,className:a,nodeTypes:i,edgeTypes:s,onNodeClick:l,onEdgeClick:c,onInit:u,onMove:d,onMoveStart:h,onMoveEnd:f,onConnect:g,onConnectStart:b,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:k,onNodeMouseEnter:C,onNodeMouseMove:_,onNodeMouseLeave:T,onNodeContextMenu:A,onNodeDoubleClick:R,onNodeDragStart:D,onNodeDrag:N,onNodeDragStop:M,onNodesDelete:O,onEdgesDelete:F,onDelete:L,onSelectionChange:U,onSelectionDragStart:P,onSelectionDrag:V,onSelectionDragStop:I,onSelectionContextMenu:H,onSelectionStart:q,onSelectionEnd:Z,onBeforeDelete:W,connectionMode:G,connectionLineType:K=bu.Bezier,connectionLineStyle:j,connectionLineComponent:Y,connectionLineContainerStyle:Q,deleteKeyCode:J="Backspace",selectionKeyCode:ie="Shift",selectionOnDrag:ne=!1,selectionMode:re=y0.Full,panActivationKeyCode:ge="Space",multiSelectionKeyCode:De=zf()?"Meta":"Control",zoomActivationKeyCode:he=zf()?"Meta":"Control",snapToGrid:me,snapGrid:Te,onlyRenderVisibleElements:Ie=!1,selectNodesOnDrag:Ze,nodesDraggable:rt,autoPanOnNodeFocus:Rt,nodesConnectable:Qe,nodesFocusable:Pt,nodeOrigin:Ke=LV,edgesFocusable:Ge,edgesReconnectable:ct,elementsSelectable:ut=!0,defaultViewport:Ir=VTe,minZoom:Ee=.5,maxZoom:Se=2,translateExtent:it=g0,preventScrolling:xt=!0,nodeExtent:zt,defaultMarkerColor:Fr="#b1b1b7",zoomOnScroll:It=!0,zoomOnPinch:vr=!0,panOnScroll:fr=!1,panOnScrollSpeed:un=.5,panOnScrollMode:ir=cp.Free,zoomOnDoubleClick:vn=!0,panOnDrag:xr=!0,onPaneClick:ea,onPaneMouseEnter:xa,onPaneMouseMove:Gs,onPaneMouseLeave:Vo,onPaneScroll:wa,onPaneContextMenu:Xs,paneClickDistance:fo=0,nodeClickDistance:Ol=0,children:jl,onReconnect:Bc,onReconnectStart:Ks,onReconnectEnd:Rh,onEdgeContextMenu:Ll,onEdgeDoubleClick:id,onEdgeMouseEnter:ta,onEdgeMouseMove:Fc,onEdgeMouseLeave:Bl,reconnectRadius:sd=10,onNodesChange:Fl,onEdgesChange:ra,noDragClassName:Wr="nodrag",noWheelClassName:Vn="nowheel",noPanClassName:qo="nopan",fitView:Zs,fitViewOptions:Hc,connectOnClick:Nh,attributionPosition:Za,proOptions:Oi,defaultEdgeOptions:Qs,elevateNodesOnSelect:ji,elevateEdgesOnSelect:Li,disableKeyboardA11y:ka=!1,autoPanOnConnect:So,autoPanOnNodeDrag:rn,autoPanSpeed:Vc,connectionRadius:qc,isValidConnection:Qa,onError:Bi,style:ld,id:Hl,nodeDragThreshold:cd,connectionDragThreshold:Dh,viewport:Vl,onViewportChange:ql,width:Uo,height:nn,colorMode:ud="light",debug:$h,onScroll:Fi,ariaLabelConfig:dd,...Ul},pd){const ee=Hl||"1",te=YTe(ud),ae=E.useCallback(le=>{le.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),Fi?.(le)},[Fi]);return y.jsx("div",{"data-testid":"rf__wrapper",...Ul,onScroll:ae,style:{...ld,...hRe},ref:pd,className:_n(["react-flow",a,te]),id:Hl,role:"application",children:y.jsxs(pRe,{nodes:e,edges:r,width:Uo,height:nn,fitView:Zs,fitViewOptions:Hc,minZoom:Ee,maxZoom:Se,nodeOrigin:Ke,nodeExtent:zt,children:[y.jsx(uRe,{onInit:u,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:C,onNodeMouseMove:_,onNodeMouseLeave:T,onNodeContextMenu:A,onNodeDoubleClick:R,nodeTypes:i,edgeTypes:s,connectionLineType:K,connectionLineStyle:j,connectionLineComponent:Y,connectionLineContainerStyle:Q,selectionKeyCode:ie,selectionOnDrag:ne,selectionMode:re,deleteKeyCode:J,multiSelectionKeyCode:De,panActivationKeyCode:ge,zoomActivationKeyCode:he,onlyRenderVisibleElements:Ie,defaultViewport:Ir,translateExtent:it,minZoom:Ee,maxZoom:Se,preventScrolling:xt,zoomOnScroll:It,zoomOnPinch:vr,zoomOnDoubleClick:vn,panOnScroll:fr,panOnScrollSpeed:un,panOnScrollMode:ir,panOnDrag:xr,onPaneClick:ea,onPaneMouseEnter:xa,onPaneMouseMove:Gs,onPaneMouseLeave:Vo,onPaneScroll:wa,onPaneContextMenu:Xs,paneClickDistance:fo,nodeClickDistance:Ol,onSelectionContextMenu:H,onSelectionStart:q,onSelectionEnd:Z,onReconnect:Bc,onReconnectStart:Ks,onReconnectEnd:Rh,onEdgeContextMenu:Ll,onEdgeDoubleClick:id,onEdgeMouseEnter:ta,onEdgeMouseMove:Fc,onEdgeMouseLeave:Bl,reconnectRadius:sd,defaultMarkerColor:Fr,noDragClassName:Wr,noWheelClassName:Vn,noPanClassName:qo,rfId:ee,disableKeyboardA11y:ka,nodeExtent:zt,viewport:Vl,onViewportChange:ql}),y.jsx(WTe,{nodes:e,edges:r,defaultNodes:n,defaultEdges:o,onConnect:g,onConnectStart:b,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:k,nodesDraggable:rt,autoPanOnNodeFocus:Rt,nodesConnectable:Qe,nodesFocusable:Pt,edgesFocusable:Ge,edgesReconnectable:ct,elementsSelectable:ut,elevateNodesOnSelect:ji,elevateEdgesOnSelect:Li,minZoom:Ee,maxZoom:Se,nodeExtent:zt,onNodesChange:Fl,onEdgesChange:ra,snapToGrid:me,snapGrid:Te,connectionMode:G,translateExtent:it,connectOnClick:Nh,defaultEdgeOptions:Qs,fitView:Zs,fitViewOptions:Hc,onNodesDelete:O,onEdgesDelete:F,onDelete:L,onNodeDragStart:D,onNodeDrag:N,onNodeDragStop:M,onSelectionDrag:V,onSelectionDragStart:P,onSelectionDragStop:I,onMove:d,onMoveStart:h,onMoveEnd:f,noPanClassName:qo,nodeOrigin:Ke,rfId:ee,autoPanOnConnect:So,autoPanOnNodeDrag:rn,autoPanSpeed:Vc,onError:Bi,connectionRadius:qc,isValidConnection:Qa,selectNodesOnDrag:Ze,nodeDragThreshold:cd,connectionDragThreshold:Dh,onBeforeDelete:W,paneClickDistance:fo,debug:$h,ariaLabelConfig:dd}),y.jsx(HTe,{onSelectionChange:U}),jl,y.jsx(OTe,{proOptions:Oi,position:Za}),y.jsx(ITe,{rfId:ee,disableKeyboardA11y:ka})]})})}var mRe=KV(fRe);const gRe=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");function Dq({children:e}){const r=qt(gRe);return r?Ki.createPortal(e,r):null}function yRe({dimensions:e,lineWidth:r,variant:n,className:o}){return y.jsx("path",{strokeWidth:r,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:_n(["react-flow__background-pattern",n,o])})}function bRe({radius:e,className:r}){return y.jsx("circle",{cx:e,cy:e,r:e,className:_n(["react-flow__background-pattern","dots",r])})}var cs;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(cs||(cs={}));const vRe={[cs.Dots]:1,[cs.Lines]:1,[cs.Cross]:6},xRe=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function $q({id:e,variant:r=cs.Dots,gap:n=20,size:o,lineWidth:a=1,offset:i=0,color:s,bgColor:l,style:c,className:u,patternClassName:d}){const h=E.useRef(null),{transform:f,patternId:g}=qt(xRe,Kr),b=o||vRe[r],x=r===cs.Dots,w=r===cs.Cross,k=Array.isArray(n)?n:[n,n],C=[k[0]*f[2]||1,k[1]*f[2]||1],_=b*f[2],T=Array.isArray(i)?i:[i,i],A=w?[_,_]:C,R=[T[0]*f[2]||1+A[0]/2,T[1]*f[2]||1+A[1]/2],D=`${g}${e||""}`;return y.jsxs("svg",{className:_n(["react-flow__background",u]),style:{...c,...P3,"--xy-background-color-props":l,"--xy-background-pattern-color-props":s},ref:h,"data-testid":"rf__background",children:[y.jsx("pattern",{id:D,x:f[0]%C[0],y:f[1]%C[1],width:C[0],height:C[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${R[0]},-${R[1]})`,children:x?y.jsx(bRe,{radius:_/2,className:d}):y.jsx(yRe,{dimensions:A,lineWidth:a,variant:r,className:d})}),y.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${D})`})]})}$q.displayName="Background";const Mq=E.memo($q);function wRe(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:y.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function kRe(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:y.jsx("path",{d:"M0 0h32v4.2H0z"})})}function _Re(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:y.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function ERe(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:y.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function SRe(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:y.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function j3({children:e,className:r,...n}){return y.jsx("button",{type:"button",className:_n(["react-flow__controls-button",r]),...n,children:e})}const CRe=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function Pq({style:e,showZoom:r=!0,showFitView:n=!0,showInteractive:o=!0,fitViewOptions:a,onZoomIn:i,onZoomOut:s,onFitView:l,onInteractiveChange:c,className:u,children:d,position:h="bottom-left",orientation:f="vertical","aria-label":g}){const b=Ar(),{isInteractive:x,minZoomReached:w,maxZoomReached:k,ariaLabelConfig:C}=qt(CRe,Kr),{zoomIn:_,zoomOut:T,fitView:A}=Bf(),R=()=>{_(),i?.()},D=()=>{T(),s?.()},N=()=>{A(a),l?.()},M=()=>{b.setState({nodesDraggable:!x,nodesConnectable:!x,elementsSelectable:!x}),c?.(!x)};return y.jsxs(ku,{className:_n(["react-flow__controls",f==="horizontal"?"horizontal":"vertical",u]),position:h,style:e,"data-testid":"rf__controls","aria-label":g??C["controls.ariaLabel"],children:[r&&y.jsxs(y.Fragment,{children:[y.jsx(j3,{onClick:R,className:"react-flow__controls-zoomin",title:C["controls.zoomIn.ariaLabel"],"aria-label":C["controls.zoomIn.ariaLabel"],disabled:k,children:y.jsx(wRe,{})}),y.jsx(j3,{onClick:D,className:"react-flow__controls-zoomout",title:C["controls.zoomOut.ariaLabel"],"aria-label":C["controls.zoomOut.ariaLabel"],disabled:w,children:y.jsx(kRe,{})})]}),n&&y.jsx(j3,{className:"react-flow__controls-fitview",onClick:N,title:C["controls.fitView.ariaLabel"],"aria-label":C["controls.fitView.ariaLabel"],children:y.jsx(_Re,{})}),o&&y.jsx(j3,{className:"react-flow__controls-interactive",onClick:M,title:C["controls.interactive.ariaLabel"],"aria-label":C["controls.interactive.ariaLabel"],children:x?y.jsx(SRe,{}):y.jsx(ERe,{})}),d]})}Pq.displayName="Controls",E.memo(Pq);function TRe({id:e,x:r,y:n,width:o,height:a,style:i,color:s,strokeColor:l,strokeWidth:c,className:u,borderRadius:d,shapeRendering:h,selected:f,onClick:g}){const{background:b,backgroundColor:x}=i||{},w=s||b||x;return y.jsx("rect",{className:_n(["react-flow__minimap-node",{selected:f},u]),x:r,y:n,rx:d,ry:d,width:o,height:a,style:{fill:w,stroke:l,strokeWidth:c},shapeRendering:h,onClick:g?k=>g(k,e):void 0})}const ARe=E.memo(TRe),RRe=e=>e.nodes.map(r=>r.id),N9=e=>e instanceof Function?e:()=>e;function NRe({nodeStrokeColor:e,nodeColor:r,nodeClassName:n="",nodeBorderRadius:o=5,nodeStrokeWidth:a,nodeComponent:i=ARe,onClick:s}){const l=qt(RRe,Kr),c=N9(r),u=N9(e),d=N9(n),h=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return y.jsx(y.Fragment,{children:l.map(f=>y.jsx($Re,{id:f,nodeColorFunc:c,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:o,nodeStrokeWidth:a,NodeComponent:i,onClick:s,shapeRendering:h},f))})}function DRe({id:e,nodeColorFunc:r,nodeStrokeColorFunc:n,nodeClassNameFunc:o,nodeBorderRadius:a,nodeStrokeWidth:i,shapeRendering:s,NodeComponent:l,onClick:c}){const{node:u,x:d,y:h,width:f,height:g}=qt(b=>{const{internals:x}=b.nodeLookup.get(e),w=x.userNode,{x:k,y:C}=x.positionAbsolute,{width:_,height:T}=ao(w);return{node:w,x:k,y:C,width:_,height:T}},Kr);return!u||u.hidden||!WH(u)?null:y.jsx(l,{x:d,y:h,width:f,height:g,style:u.style,selected:!!u.selected,className:o(u),color:r(u),borderRadius:a,strokeColor:n(u),strokeWidth:i,shapeRendering:s,onClick:c,id:u.id})}const $Re=E.memo(DRe);var MRe=E.memo(NRe);const PRe=200,zRe=150,IRe=e=>!e.hidden,ORe=e=>{const r={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:r,boundingRect:e.nodeLookup.size>0?qH($f(e.nodeLookup,{filter:IRe}),r):r,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},jRe="react-flow__minimap-desc";function zq({style:e,className:r,nodeStrokeColor:n,nodeColor:o,nodeClassName:a="",nodeBorderRadius:i=5,nodeStrokeWidth:s,nodeComponent:l,bgColor:c,maskColor:u,maskStrokeColor:d,maskStrokeWidth:h,position:f="bottom-right",onClick:g,onNodeClick:b,pannable:x=!1,zoomable:w=!1,ariaLabel:k,inversePan:C,zoomStep:_=1,offsetScale:T=5}){const A=Ar(),R=E.useRef(null),{boundingRect:D,viewBB:N,rfId:M,panZoom:O,translateExtent:F,flowWidth:L,flowHeight:U,ariaLabelConfig:P}=qt(ORe,Kr),V=e?.width??PRe,I=e?.height??zRe,H=D.width/V,q=D.height/I,Z=Math.max(H,q),W=Z*V,G=Z*I,K=T*Z,j=D.x-(W-D.width)/2-K,Y=D.y-(G-D.height)/2-K,Q=W+K*2,J=G+K*2,ie=`${jRe}-${M}`,ne=E.useRef(0),re=E.useRef();ne.current=Z,E.useEffect(()=>{if(R.current&&O)return re.current=aTe({domNode:R.current,panZoom:O,getTransform:()=>A.getState().transform,getViewScale:()=>ne.current}),()=>{re.current?.destroy()}},[O]),E.useEffect(()=>{re.current?.update({translateExtent:F,width:L,height:U,inversePan:C,pannable:x,zoomStep:_,zoomable:w})},[x,w,C,_,F,L,U]);const ge=g?me=>{const[Te,Ie]=re.current?.pointer(me)||[0,0];g(me,{x:Te,y:Ie})}:void 0,De=b?E.useCallback((me,Te)=>{const Ie=A.getState().nodeLookup.get(Te).internals.userNode;b(me,Ie)},[]):void 0,he=k??P["minimap.ariaLabel"];return y.jsx(ku,{position:f,style:{...e,"--xy-minimap-background-color-props":typeof c=="string"?c:void 0,"--xy-minimap-mask-background-color-props":typeof u=="string"?u:void 0,"--xy-minimap-mask-stroke-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-stroke-width-props":typeof h=="number"?h*Z:void 0,"--xy-minimap-node-background-color-props":typeof o=="string"?o:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof s=="number"?s:void 0},className:_n(["react-flow__minimap",r]),"data-testid":"rf__minimap",children:y.jsxs("svg",{width:V,height:I,viewBox:`${j} ${Y} ${Q} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ie,ref:R,onClick:ge,children:[he&&y.jsx("title",{id:ie,children:he}),y.jsx(MRe,{onClick:De,nodeColor:o,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:a,nodeStrokeWidth:s,nodeComponent:l}),y.jsx("path",{className:"react-flow__minimap-mask",d:`M${j-K},${Y-K}h${Q+K*2}v${J+K*2}h${-Q-K*2}z + M${N.x},${N.y}h${N.width}v${N.height}h${-N.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}zq.displayName="MiniMap",E.memo(zq);const LRe=e=>r=>e?`${Math.max(1/r.transform[2],1)}`:void 0,BRe={[jf.Line]:"right",[jf.Handle]:"bottom-right"};function FRe({nodeId:e,position:r,variant:n=jf.Handle,className:o,style:a=void 0,children:i,color:s,minWidth:l=10,minHeight:c=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:h=!1,resizeDirection:f,autoScale:g=!0,shouldResize:b,onResizeStart:x,onResize:w,onResizeEnd:k}){const C=R9(),_=typeof e=="string"?e:C,T=Ar(),A=E.useRef(null),R=n===jf.Handle,D=qt(E.useCallback(LRe(R&&g),[R,g]),Kr),N=E.useRef(null),M=r??BRe[n];E.useEffect(()=>{if(!(!A.current||!_))return N.current||(N.current=vTe({domNode:A.current,nodeId:_,getStoreItems:()=>{const{nodeLookup:F,transform:L,snapGrid:U,snapToGrid:P,nodeOrigin:V,domNode:I}=T.getState();return{nodeLookup:F,transform:L,snapGrid:U,snapToGrid:P,nodeOrigin:V,paneDomNode:I}},onChange:(F,L)=>{const{triggerNodeChanges:U,nodeLookup:P,parentLookup:V,nodeOrigin:I}=T.getState(),H=[],q={x:F.x,y:F.y},Z=P.get(_);if(Z&&Z.expandParent&&Z.parentId){const W=Z.origin??I,G=F.width??Z.measured.width??0,K=F.height??Z.measured.height??0,j={id:Z.id,parentId:Z.parentId,rect:{width:G,height:K,...YH({x:F.x??Z.position.x,y:F.y??Z.position.y},{width:G,height:K},Z.parentId,P,W)}},Y=b9([j],P,V,I);H.push(...Y),q.x=F.x?Math.max(W[0]*G,F.x):void 0,q.y=F.y?Math.max(W[1]*K,F.y):void 0}if(q.x!==void 0&&q.y!==void 0){const W={id:_,type:"position",position:{...q}};H.push(W)}if(F.width!==void 0&&F.height!==void 0){const W={id:_,type:"dimensions",resizing:!0,setAttributes:f?f==="horizontal"?"width":"height":!0,dimensions:{width:F.width,height:F.height}};H.push(W)}for(const W of L){const G={...W,type:"position"};H.push(G)}U(H)},onEnd:({width:F,height:L})=>{const U={id:_,type:"dimensions",resizing:!1,dimensions:{width:F,height:L}};T.getState().triggerNodeChanges([U])}})),N.current.update({controlPosition:M,boundaries:{minWidth:l,minHeight:c,maxWidth:u,maxHeight:d},keepAspectRatio:h,resizeDirection:f,onResizeStart:x,onResize:w,onResizeEnd:k,shouldResize:b}),()=>{N.current?.destroy()}},[M,l,c,u,d,h,x,w,k,b]);const O=M.split("-");return y.jsx("div",{className:_n(["react-flow__resize-control","nodrag",...O,n,o]),ref:A,style:{...a,scale:D,...s&&{[R?"backgroundColor":"borderColor"]:s}},children:i})}E.memo(FRe);const HRe=e=>e.domNode?.querySelector(".react-flow__renderer");function VRe({children:e}){const r=qt(HRe);return r?Ki.createPortal(e,r):null}const qRe=(e,r)=>e?.internals.positionAbsolute.x!==r?.internals.positionAbsolute.x||e?.internals.positionAbsolute.y!==r?.internals.positionAbsolute.y||e?.measured.width!==r?.measured.width||e?.measured.height!==r?.measured.height||e?.selected!==r?.selected||e?.internals.z!==r?.internals.z,URe=(e,r)=>{if(e.size!==r.size)return!1;for(const[n,o]of e)if(qRe(o,r.get(n)))return!1;return!0},WRe=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2],selectedNodesCount:e.nodes.filter(r=>r.selected).length});function D9({nodeId:e,children:r,className:n,style:o,isVisible:a,position:i=tt.Top,offset:s=10,align:l="center",...c}){const u=R9(),d=E.useCallback(T=>(Array.isArray(e)?e:[e||u||""]).reduce((A,R)=>{const D=T.nodeLookup.get(R);return D&&A.set(D.id,D),A},new Map),[e,u]),h=qt(d,URe),{x:f,y:g,zoom:b,selectedNodesCount:x}=qt(WRe,Kr);if(!(typeof a=="boolean"?a:h.size===1&&h.values().next().value?.selected&&x===1)||!h.size)return null;const w=$f(h),k=Array.from(h.values()),C=Math.max(...k.map(T=>T.internals.z+1)),_={position:"absolute",transform:HCe(w,{x:f,y:g,zoom:b},i,s,l),zIndex:C,...o};return y.jsx(VRe,{children:y.jsx("div",{style:_,className:_n(["react-flow__node-toolbar",n]),...c,"data-id":k.reduce((T,A)=>`${T}${A.id} `,"").trim(),children:r})})}function YRe(e,r,n){let o=a=>e(a,...r);return n===void 0?o:Object.assign(o,{lazy:n,lazyArgs:r})}function hr(e,r,n){let o=e.length-r.length;if(o===0)return e(...r);if(o===1)return YRe(e,r,n);throw Error("Wrong number of arguments")}const GRe=e=>(r,n)=>{if(n===0)return e(r);if(!Number.isInteger(n))throw TypeError(`precision must be an integer: ${n.toString()}`);if(n>15||n<-15)throw RangeError("precision must be between -15 and 15");if(Number.isNaN(r)||!Number.isFinite(r))return e(r);let o=Iq(r,n),a=e(o);return Iq(a,-n)};function Iq(e,r){let[n,o]=e.toString().split("e"),a=(o===void 0?0:Number.parseInt(o,10))+r,i=`${n}e${a.toString()}`;return Number.parseFloat(i)}function XRe(...e){return hr(GRe(Math.ceil),e)}function us(...e){return hr(KRe,e)}const KRe=(e,{min:r,max:n})=>r!==void 0&&en?n:e;function ZRe(...e){return hr(QRe,e)}const QRe=(e,r)=>[...e,...r],L3={done:!1,hasNext:!1};function En(e,...r){let n=e,o=r.map(i=>"lazy"in i?JRe(i):void 0),a=0;for(;aEn(a,o),o)}throw Error("Wrong number of arguments")}function bo(...e){return hr(rNe,e)}const rNe=(e,r)=>e.length>=r,jq={asc:(e,r)=>e>r,desc:(e,r)=>ee(i,a)}function $9(e,r,...n){let o=typeof e=="function"?e:e[0],a=typeof e=="function"?"asc":e[1],{[a]:i}=jq,s=r===void 0?void 0:$9(r,...n);return(l,c)=>{let u=o(l),d=o(c);return i(u,d)?1:i(d,u)?-1:s?.(l,c)??0}}function oNe(e){if(Lq(e))return!0;if(typeof e!="object"||!Array.isArray(e))return!1;let[r,n,...o]=e;return Lq(r)&&typeof n=="string"&&n in jq&&o.length===0}const Lq=e=>typeof e=="function"&&e.length===1;function M9(...e){return hr(Object.entries,e)}function hp(...e){return hr(aNe,e,iNe)}const aNe=(e,r)=>e.filter(r),iNe=e=>(r,n,o)=>e(r,n,o)?{done:!1,hasNext:!0,next:r}:L3,Bq=e=>Object.assign(e,{single:!0});function B3(...e){return hr(sNe,e,Bq(lNe))}const sNe=(e,r)=>e.find(r),lNe=e=>(r,n,o)=>e(r,n,o)?{done:!0,hasNext:!0,next:r}:L3;function Ff(...e){return hr(cNe,e,Bq(uNe))}const cNe=([e])=>e,uNe=()=>dNe,dNe=e=>({hasNext:!0,next:e,done:!0});function pNe(...e){return hr(hNe,e,fNe)}const hNe=(e,r)=>e.flatMap(r),fNe=e=>(r,n,o)=>{let a=e(r,n,o);return Array.isArray(a)?{done:!1,hasNext:!0,hasMany:!0,next:a}:{done:!1,hasNext:!0,next:a}};function mNe(...e){return hr(gNe,e,yNe)}function gNe(e,r){return e.forEach(r),e}const yNe=e=>(r,n,o)=>(e(r,n,o),{done:!1,hasNext:!0,next:r});function bNe(...e){return hr(vNe,e)}function vNe(e,r){for(let[n,o]of Object.entries(e))r(o,n,e);return e}function xNe(...e){return hr(wNe,e)}const wNe=(e,r)=>{let n=Object.create(null);for(let o=0;otypeof e=="function";function RNe(e){return e!==null}function Vq(e){return e!=null}function z9(e){return e==null}function _u(e){return typeof e=="number"&&!Number.isNaN(e)}function T0(e){if(typeof e!="object"||!e)return!1;let r=Object.getPrototypeOf(e);return r===null||r===Object.prototype}function H3(e){return typeof e=="string"}function ua(e){return!!e}function qq(...e){return hr(NNe,e)}const NNe=(e,r)=>e.join(r);function I9(...e){return hr(Object.keys,e)}function lc(...e){return hr(DNe,e)}const DNe=e=>e.at(-1);function Sn(...e){return hr($Ne,e,MNe)}const $Ne=(e,r)=>e.map(r),MNe=e=>(r,n,o)=>({done:!1,hasNext:!0,next:e(r,n,o)});function V3(...e){return hr(PNe,e)}function PNe(e,r){let n={};for(let[o,a]of e.entries()){let[i,s]=r(a,o,e);n[i]=s}return n}function zNe(...e){return hr(INe,e)}function INe(e,r){let n={};for(let[o,a]of Object.entries(e))n[o]=r(a,o,e);return n}function Uq(...e){return hr(Wq,e)}function Wq(e,r){let n={...e,...r};for(let o in r){if(!(o in e))continue;let{[o]:a}=e;if(!T0(a))continue;let{[o]:i}=r;T0(i)&&(n[o]=Wq(a,i))}return n}function Eu(...e){return hr(ONe,e)}function ONe(e,r){if(!bo(r,1))return{...e};if(!bo(r,2)){let{[r[0]]:o,...a}=e;return a}let n={...e};for(let o of r)delete n[o];return n}function q3(...e){return hr(jNe,e)}const jNe=e=>e.length===1?e[0]:void 0;function Yq(...e){return hr(LNe,e)}const LNe=(e,r)=>{let n=[[],[]];for(let[o,a]of e.entries())r(a,o,e)?n[0].push(a):n[1].push(a);return n};function Gq(...e){return hr(BNe,e)}function BNe(e,r){let n={};for(let o of r)o in e&&(n[o]=e[o]);return n}function FNe(...e){return hr(HNe,e)}function HNe(e,r){let n={};for(let[o,a]of Object.entries(e))r(a,o,e)&&(n[o]=a);return n}function mp(e,...r){return typeof e=="string"||typeof e=="number"||typeof e=="symbol"?n=>Xq(n,e,...r):Xq(e,...r)}function Xq(e,...r){let n=e;for(let o of r){if(n==null)return;n=n[o]}return n}function VNe(...e){return hr(qNe,e)}function qNe(e,r){let n=[];for(let o=e;oe.reduce(r,n);function WNe(...e){return hr(YNe,e)}function YNe(e){return[...e].reverse()}function GNe(...e){return hr(XNe,e)}function XNe(e,r){let n=[...e];return n.sort(r),n}function W3(...e){return nNe(KNe,e)}const KNe=(e,r)=>[...e].sort(r);function Kq(...e){return hr(ZNe,e)}function ZNe(e,r){return r(e),e}function O9(...e){return tNe(QNe,e)}function QNe(){let e=new Set;return r=>e.has(r)?L3:(e.add(r),{done:!1,hasNext:!0,next:r})}let ds=[],Su=0;const Y3=4;let JNe=e=>{let r=[],n={get(){return n.lc||n.listen(()=>{})(),n.value},lc:0,listen(o){return n.lc=r.push(o),()=>{for(let i=Su+Y3;i"u")return gDe;var r=yDe(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:r[0],top:r[1],right:r[2],gap:Math.max(0,o-n+r[2]-r[0])}},vDe=tU(),Hf="data-scroll-locked",xDe=function(e,r,n,o){var a=e.left,i=e.top,s=e.right,l=e.gap;return n===void 0&&(n="margin"),` + .`.concat(tDe,` { + overflow: hidden `).concat(o,`; + padding-right: `).concat(l,"px ").concat(o,`; + } + body[`).concat(Hf,`] { + overflow: hidden `).concat(o,`; + overscroll-behavior: contain; + `).concat([r&&"position: relative ".concat(o,";"),n==="margin"&&` + padding-left: `.concat(a,`px; + padding-top: `).concat(i,`px; + padding-right: `).concat(s,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(l,"px ").concat(o,`; + `),n==="padding"&&"padding-right: ".concat(l,"px ").concat(o,";")].filter(Boolean).join(""),` + } + + .`).concat(G3,` { + right: `).concat(l,"px ").concat(o,`; + } + + .`).concat(X3,` { + margin-right: `).concat(l,"px ").concat(o,`; + } + + .`).concat(G3," .").concat(G3,` { + right: 0 `).concat(o,`; + } + + .`).concat(X3," .").concat(X3,` { + margin-right: 0 `).concat(o,`; + } + + body[`).concat(Hf,`] { + `).concat(rDe,": ").concat(l,`px; + } +`)},rU=function(){var e=parseInt(document.body.getAttribute(Hf)||"0",10);return isFinite(e)?e:0},wDe=function(){E.useEffect(function(){return document.body.setAttribute(Hf,(rU()+1).toString()),function(){var e=rU()-1;e<=0?document.body.removeAttribute(Hf):document.body.setAttribute(Hf,e.toString())}},[])},kDe=function(e){var r=e.noRelative,n=e.noImportant,o=e.gapMode,a=o===void 0?"margin":o;wDe();var i=E.useMemo(function(){return bDe(a)},[a]);return E.createElement(vDe,{styles:xDe(i,!r,a,n?"":"!important")})},F9=!1;if(typeof window<"u")try{var Z3=Object.defineProperty({},"passive",{get:function(){return F9=!0,!0}});window.addEventListener("test",Z3,Z3),window.removeEventListener("test",Z3,Z3)}catch{F9=!1}var Vf=F9?{passive:!1}:!1,_De=function(e){return e.tagName==="TEXTAREA"},nU=function(e,r){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[r]!=="hidden"&&!(n.overflowY===n.overflowX&&!_De(e)&&n[r]==="visible")},EDe=function(e){return nU(e,"overflowY")},SDe=function(e){return nU(e,"overflowX")},oU=function(e,r){var n=r.ownerDocument,o=r;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var a=aU(e,o);if(a){var i=iU(e,o),s=i[1],l=i[2];if(s>l)return!0}o=o.parentNode}while(o&&o!==n.body);return!1},CDe=function(e){var r=e.scrollTop,n=e.scrollHeight,o=e.clientHeight;return[r,n,o]},TDe=function(e){var r=e.scrollLeft,n=e.scrollWidth,o=e.clientWidth;return[r,n,o]},aU=function(e,r){return e==="v"?EDe(r):SDe(r)},iU=function(e,r){return e==="v"?CDe(r):TDe(r)},ADe=function(e,r){return e==="h"&&r==="rtl"?-1:1},RDe=function(e,r,n,o,a){var i=ADe(e,window.getComputedStyle(r).direction),s=i*o,l=n.target,c=r.contains(l),u=!1,d=s>0,h=0,f=0;do{if(!l)break;var g=iU(e,l),b=g[0],x=g[1],w=g[2],k=x-w-i*b;(b||k)&&aU(e,l)&&(h+=k,f+=b);var C=l.parentNode;l=C&&C.nodeType===Node.DOCUMENT_FRAGMENT_NODE?C.host:C}while(!c&&l!==document.body||c&&(r.contains(l)||r===l));return(d&&Math.abs(h)<1||!d&&Math.abs(f)<1)&&(u=!0),u},Q3=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},sU=function(e){return[e.deltaX,e.deltaY]},lU=function(e){return e&&"current"in e?e.current:e},NDe=function(e,r){return e[0]===r[0]&&e[1]===r[1]},DDe=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},$De=0,qf=[];function MDe(e){var r=E.useRef([]),n=E.useRef([0,0]),o=E.useRef(),a=E.useState($De++)[0],i=E.useState(tU)[0],s=E.useRef(e);E.useEffect(function(){s.current=e},[e]),E.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var x=eDe([e.lockRef.current],(e.shards||[]).map(lU)).filter(Boolean);return x.forEach(function(w){return w.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),x.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var l=E.useCallback(function(x,w){if("touches"in x&&x.touches.length===2||x.type==="wheel"&&x.ctrlKey)return!s.current.allowPinchZoom;var k=Q3(x),C=n.current,_="deltaX"in x?x.deltaX:C[0]-k[0],T="deltaY"in x?x.deltaY:C[1]-k[1],A,R=x.target,D=Math.abs(_)>Math.abs(T)?"h":"v";if("touches"in x&&D==="h"&&R.type==="range")return!1;var N=oU(D,R);if(!N)return!0;if(N?A=D:(A=D==="v"?"h":"v",N=oU(D,R)),!N)return!1;if(!o.current&&"changedTouches"in x&&(_||T)&&(o.current=A),!A)return!0;var M=o.current||A;return RDe(M,w,x,M==="h"?_:T)},[]),c=E.useCallback(function(x){var w=x;if(!(!qf.length||qf[qf.length-1]!==i)){var k="deltaY"in w?sU(w):Q3(w),C=r.current.filter(function(A){return A.name===w.type&&(A.target===w.target||w.target===A.shadowParent)&&NDe(A.delta,k)})[0];if(C&&C.should){w.cancelable&&w.preventDefault();return}if(!C){var _=(s.current.shards||[]).map(lU).filter(Boolean).filter(function(A){return A.contains(w.target)}),T=_.length>0?l(w,_[0]):!s.current.noIsolation;T&&w.cancelable&&w.preventDefault()}}},[]),u=E.useCallback(function(x,w,k,C){var _={name:x,delta:w,target:k,should:C,shadowParent:PDe(k)};r.current.push(_),setTimeout(function(){r.current=r.current.filter(function(T){return T!==_})},1)},[]),d=E.useCallback(function(x){n.current=Q3(x),o.current=void 0},[]),h=E.useCallback(function(x){u(x.type,sU(x),x.target,l(x,e.lockRef.current))},[]),f=E.useCallback(function(x){u(x.type,Q3(x),x.target,l(x,e.lockRef.current))},[]);E.useEffect(function(){return qf.push(i),e.setCallbacks({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:f}),document.addEventListener("wheel",c,Vf),document.addEventListener("touchmove",c,Vf),document.addEventListener("touchstart",d,Vf),function(){qf=qf.filter(function(x){return x!==i}),document.removeEventListener("wheel",c,Vf),document.removeEventListener("touchmove",c,Vf),document.removeEventListener("touchstart",d,Vf)}},[]);var g=e.removeScrollBar,b=e.inert;return E.createElement(E.Fragment,null,b?E.createElement(i,{styles:DDe(a)}):null,g?E.createElement(kDe,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function PDe(e){for(var r=null;e!==null;)e instanceof ShadowRoot&&(r=e.host,e=e.host),e=e.parentNode;return r}const zDe=cDe(eU,MDe);var A0=E.forwardRef(function(e,r){return E.createElement(K3,pl({},e,{ref:r,sideCar:zDe}))});A0.classNames=K3.classNames;function zo(e){return Object.keys(e)}function H9(e){return e&&typeof e=="object"&&!Array.isArray(e)}function V9(e,r){const n={...e},o=r;return H9(e)&&H9(r)&&Object.keys(r).forEach(a=>{H9(o[a])&&a in e?n[a]=V9(n[a],o[a]):n[a]=o[a]}),n}function IDe(e){return e.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`)}function ODe(e){return typeof e!="string"||!e.includes("var(--mantine-scale)")?e:e.match(/^calc\((.*?)\)$/)?.[1].split("*")[0].trim()}function q9(e){const r=ODe(e);return typeof r=="number"?r:typeof r=="string"?r.includes("calc")||r.includes("var")?r:r.includes("px")?Number(r.replace("px","")):r.includes("rem")?Number(r.replace("rem",""))*16:r.includes("em")?Number(r.replace("em",""))*16:Number(r):NaN}function cU(e){return e==="0rem"?"0rem":`calc(${e} * var(--mantine-scale))`}function uU(e,{shouldScale:r=!1}={}){function n(o){if(o===0||o==="0")return`0${e}`;if(typeof o=="number"){const a=`${o/16}${e}`;return r?cU(a):a}if(typeof o=="string"){if(o===""||o.startsWith("calc(")||o.startsWith("clamp(")||o.includes("rgba("))return o;if(o.includes(","))return o.split(",").map(i=>n(i)).join(",");if(o.includes(" "))return o.split(" ").map(i=>n(i)).join(" ");const a=o.replace("px","");if(!Number.isNaN(Number(a))){const i=`${Number(a)/16}${e}`;return r?cU(i):i}}return o}return n}const Me=uU("rem",{shouldScale:!0}),dU=uU("em");function Uf(e){return Object.keys(e).reduce((r,n)=>(e[n]!==void 0&&(r[n]=e[n]),r),{})}function pU(e){if(typeof e=="number")return!0;if(typeof e=="string"){if(e.startsWith("calc(")||e.startsWith("var(")||e.includes(" ")&&e.trim()!=="")return!0;const r=/^[+-]?[0-9]+(\.[0-9]+)?(px|em|rem|ex|ch|lh|rlh|vw|vh|vmin|vmax|vb|vi|svw|svh|lvw|lvh|dvw|dvh|cm|mm|in|pt|pc|q|cqw|cqh|cqi|cqb|cqmin|cqmax|%)?$/;return e.trim().split(/\s+/).every(n=>r.test(n))}return!1}function ps(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==E.Fragment:!1}function hi(e){const r=E.createContext(null);return[({children:n,value:o})=>y.jsx(r.Provider,{value:o,children:n}),()=>{const n=E.useContext(r);if(n===null)throw new Error(e);return n}]}function R0(e=null){const r=E.createContext(e);return[({children:n,value:o})=>y.jsx(r.Provider,{value:o,children:n}),()=>E.useContext(r)]}function hU(e,r){return n=>{if(typeof n!="string"||n.trim().length===0)throw new Error(r);return`${e}-${n}`}}function Wf(e,r){let n=e;for(;(n=n.parentElement)&&!n.matches(r););return n}function jDe(e,r,n){for(let o=e-1;o>=0;o-=1)if(!r[o].disabled)return o;if(n){for(let o=r.length-1;o>-1;o-=1)if(!r[o].disabled)return o}return e}function LDe(e,r,n){for(let o=e+1;o{n?.(l);const c=Array.from(Wf(l.currentTarget,e)?.querySelectorAll(r)||[]).filter(b=>BDe(l.currentTarget,b,e)),u=c.findIndex(b=>l.currentTarget===b),d=LDe(u,c,o),h=jDe(u,c,o),f=i==="rtl"?h:d,g=i==="rtl"?d:h;switch(l.key){case"ArrowRight":{s==="horizontal"&&(l.stopPropagation(),l.preventDefault(),c[f].focus(),a&&c[f].click());break}case"ArrowLeft":{s==="horizontal"&&(l.stopPropagation(),l.preventDefault(),c[g].focus(),a&&c[g].click());break}case"ArrowUp":{s==="vertical"&&(l.stopPropagation(),l.preventDefault(),c[h].focus(),a&&c[h].click());break}case"ArrowDown":{s==="vertical"&&(l.stopPropagation(),l.preventDefault(),c[d].focus(),a&&c[d].click());break}case"Home":{l.stopPropagation(),l.preventDefault(),!c[0].disabled&&c[0].focus();break}case"End":{l.stopPropagation(),l.preventDefault();const b=c.length-1;!c[b].disabled&&c[b].focus();break}}}}const FDe={app:100,modal:200,popover:300,overlay:400,max:9999};function J3(e){return FDe[e]}const fU=()=>{};function HDe(e,r={active:!0}){return typeof e!="function"||!r.active?r.onKeyDown||fU:n=>{n.key==="Escape"&&(e(n),r.onTrigger?.())}}function kr(e,r="size",n=!0){if(e!==void 0)return pU(e)?n?Me(e):e:`var(--${r}-${e})`}function cc(e){return kr(e,"mantine-spacing")}function Pn(e){return e===void 0?"var(--mantine-radius-default)":kr(e,"mantine-radius")}function Io(e){return kr(e,"mantine-font-size")}function VDe(e){return kr(e,"mantine-line-height",!1)}function mU(e){if(e)return kr(e,"mantine-shadow",!1)}function zn(e,r){return n=>{e?.(n),r?.(n)}}function qDe(e,r){return e in r?q9(r[e]):q9(e)}function gU(e,r){const n=e.map(o=>({value:o,px:qDe(o,r)}));return n.sort((o,a)=>o.px-a.px),n}function D0(e){return typeof e=="object"&&e!==null?"base"in e?e.base:void 0:e}function UDe(e,r,n){return n?Array.from(Wf(n,r)?.querySelectorAll(e)||[]).findIndex(o=>o===n):null}function Cu(e,r,n){return r===void 0&&n===void 0?e:r!==void 0&&n===void 0?Math.max(e,r):Math.min(r===void 0&&n!==void 0?e:Math.max(e,r),n)}function U9(e="mantine-"){return`${e}${Math.random().toString(36).slice(2,11)}`}function WDe(e,r){if(e===r||Number.isNaN(e)&&Number.isNaN(r))return!0;if(!(e instanceof Object)||!(r instanceof Object))return!1;const n=Object.keys(e),{length:o}=n;if(o!==Object.keys(r).length)return!1;for(let a=0;a{r.current=e}),E.useMemo(()=>((...n)=>r.current?.(...n)),[])}function Yf(e,r){const{delay:n,flushOnUnmount:o,leading:a}=typeof r=="number"?{delay:r,flushOnUnmount:!1,leading:!1}:r,i=io(e),s=E.useRef(0),l=E.useMemo(()=>{const c=Object.assign((...u)=>{window.clearTimeout(s.current);const d=c._isFirstCall;c._isFirstCall=!1;function h(){window.clearTimeout(s.current),s.current=0,c._isFirstCall=!0}if(a&&d){i(...u);const b=()=>{h()},x=()=>{s.current!==0&&(h(),i(...u))},w=()=>{h()};c.flush=x,c.cancel=w,s.current=window.setTimeout(b,n);return}if(a&&!d){const b=()=>{s.current!==0&&(h(),i(...u))},x=()=>{h()};c.flush=b,c.cancel=x;const w=()=>{h()};s.current=window.setTimeout(w,n);return}const f=()=>{s.current!==0&&(h(),i(...u))},g=()=>{h()};c.flush=f,c.cancel=g,s.current=window.setTimeout(f,n)},{flush:()=>{},cancel:()=>{},_isFirstCall:!0});return c},[i,n,a]);return E.useEffect(()=>()=>{o?l.flush():l.cancel()},[l,o]),l}const YDe=["mousedown","touchstart"];function yU(e,r,n){const o=E.useRef(null),a=r||YDe;return E.useEffect(()=>{const i=s=>{const{target:l}=s??{};if(Array.isArray(n)){const c=!document.body.contains(l)&&l?.tagName!=="HTML";n.every(u=>!!u&&!s.composedPath().includes(u))&&!c&&e(s)}else o.current&&!o.current.contains(l)&&e(s)};return a.forEach(s=>document.addEventListener(s,i)),()=>{a.forEach(s=>document.removeEventListener(s,i))}},[o,e,n]),o}function GDe(e={timeout:2e3}){const[r,n]=E.useState(null),[o,a]=E.useState(!1),[i,s]=E.useState(null),l=c=>{window.clearTimeout(i),s(window.setTimeout(()=>a(!1),e.timeout)),a(c)};return{copy:c=>{"clipboard"in navigator?navigator.clipboard.writeText(c).then(()=>l(!0)).catch(u=>n(u)):n(new Error("useClipboard: navigator.clipboard is not supported"))},reset:()=>{a(!1),n(null),window.clearTimeout(i)},error:r,copied:o}}function XDe(e,r){try{return e.addEventListener("change",r),()=>e.removeEventListener("change",r)}catch{return e.addListener(r),()=>e.removeListener(r)}}function KDe(e,r){return typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function bU(e,r,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[o,a]=E.useState(n?r:KDe(e));return E.useEffect(()=>{try{const i=window.matchMedia(e);return a(i.matches),XDe(i,s=>a(s.matches))}catch{return}},[e]),o||!1}function vU(e,r){return bU("(prefers-color-scheme: dark)",e==="dark",r)?"dark":"light"}function ZDe(e,r,n={leading:!1}){const[o,a]=E.useState(e),i=E.useRef(null),s=E.useRef(!0),l=()=>window.clearTimeout(i.current);E.useEffect(()=>l,[]);const c=E.useCallback(u=>{l(),s.current&&n.leading?a(u):i.current=window.setTimeout(()=>{s.current=!0,a(u)},r),s.current=!1},[n.leading]);return[o,c]}function W9(e,r,n={leading:!1}){const[o,a]=E.useState(e),i=E.useRef(!1),s=E.useRef(null),l=E.useRef(!1),c=E.useCallback(()=>window.clearTimeout(s.current),[]);return E.useEffect(()=>{i.current&&(!l.current&&n.leading?(l.current=!0,a(e)):(c(),s.current=window.setTimeout(()=>{l.current=!1,a(e)},r)))},[e,n.leading,r]),E.useEffect(()=>(i.current=!0,c),[]),[o,c]}const $0=typeof document<"u"?E.useLayoutEffect:E.useEffect;function gp(e,r){const n=E.useRef(!1);E.useEffect(()=>()=>{n.current=!1},[]),E.useEffect(()=>{if(n.current)return e();n.current=!0},r)}function QDe({opened:e,shouldReturnFocus:r=!0}){const n=E.useRef(null),o=()=>{n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&n.current?.focus({preventScroll:!0})};return gp(()=>{let a=-1;const i=s=>{s.key==="Tab"&&window.clearTimeout(a)};return document.addEventListener("keydown",i),e?n.current=document.activeElement:r&&(a=window.setTimeout(o,10)),()=>{window.clearTimeout(a),document.removeEventListener("keydown",i)}},[e,r]),o}const JDe=/input|select|textarea|button|object/,xU="a, input, select, textarea, button, object, [tabindex]";function e$e(e){return e.style.display==="none"}function t$e(e){if(e.getAttribute("aria-hidden")||e.getAttribute("hidden")||e.getAttribute("type")==="hidden")return!1;let r=e;for(;r&&!(r===document.body||r.nodeType===11);){if(e$e(r))return!1;r=r.parentNode}return!0}function wU(e){let r=e.getAttribute("tabindex");return r===null&&(r=void 0),parseInt(r,10)}function Y9(e){const r=e.nodeName.toLowerCase(),n=!Number.isNaN(wU(e));return(JDe.test(r)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&t$e(e)}function kU(e){const r=wU(e);return(Number.isNaN(r)||r>=0)&&Y9(e)}function r$e(e){return Array.from(e.querySelectorAll(xU)).filter(kU)}function n$e(e,r){const n=r$e(e);if(!n.length){r.preventDefault();return}const o=n[r.shiftKey?0:n.length-1],a=e.getRootNode();let i=o===a.activeElement||e===a.activeElement;const s=a.activeElement;if(s.tagName==="INPUT"&&s.getAttribute("type")==="radio"&&(i=n.filter(c=>c.getAttribute("type")==="radio"&&c.getAttribute("name")===s.getAttribute("name")).includes(o)),!i)return;r.preventDefault();const l=n[r.shiftKey?n.length-1:0];l&&l.focus()}function _U(e=!0){const r=E.useRef(null),n=a=>{let i=a.querySelector("[data-autofocus]");if(!i){const s=Array.from(a.querySelectorAll(xU));i=s.find(kU)||s.find(Y9)||null,!i&&Y9(a)&&(i=a)}i&&i.focus({preventScroll:!0})},o=E.useCallback(a=>{e&&a!==null&&r.current!==a&&(a?(setTimeout(()=>{a.getRootNode()&&n(a)}),r.current=a):r.current=null)},[e]);return E.useEffect(()=>{if(!e)return;r.current&&setTimeout(()=>n(r.current));const a=i=>{i.key==="Tab"&&r.current&&n$e(r.current,i)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[e]),o}const o$e=dn.useId||(()=>{});function a$e(){const e=o$e();return e?`mantine-${e.replace(/:/g,"")}`:""}function fi(e){const r=a$e(),[n,o]=E.useState(r);return $0(()=>{o(U9())},[]),typeof e=="string"?e:typeof window>"u"?r:n}function Gf(e,r,n){E.useEffect(()=>(window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)),[e,r])}function i$e(e,r="use-local-storage"){try{return JSON.stringify(e)}catch{throw new Error(`@mantine/hooks ${r}: Failed to serialize the value`)}}function s$e(e){try{return e&&JSON.parse(e)}catch{return e}}function l$e(e){return{getItem:r=>{try{return window[e].getItem(r)}catch{return console.warn("use-local-storage: Failed to get value from storage, localStorage is blocked"),null}},setItem:(r,n)=>{try{window[e].setItem(r,n)}catch{console.warn("use-local-storage: Failed to set value to storage, localStorage is blocked")}},removeItem:r=>{try{window[e].removeItem(r)}catch{console.warn("use-local-storage: Failed to remove value from storage, localStorage is blocked")}}}}function EU(e,r){const n=e==="localStorage"?"mantine-local-storage":"mantine-session-storage",{getItem:o,setItem:a,removeItem:i}=l$e(e);return function({key:s,defaultValue:l,getInitialValueInEffect:c=!0,sync:u=!0,deserialize:d=s$e,serialize:h=f=>i$e(f,r)}){const f=E.useCallback(k=>{let C;try{C=typeof window>"u"||!(e in window)||window[e]===null||!!k}catch{C=!0}if(C)return l;const _=o(s);return _!==null?d(_):l},[s,l]),[g,b]=E.useState(f(c)),x=E.useCallback(k=>{k instanceof Function?b(C=>{const _=k(C);return a(s,h(_)),queueMicrotask(()=>{window.dispatchEvent(new CustomEvent(n,{detail:{key:s,value:k(C)}}))}),_}):(a(s,h(k)),window.dispatchEvent(new CustomEvent(n,{detail:{key:s,value:k}})),b(k))},[s]),w=E.useCallback(()=>{i(s),b(l),window.dispatchEvent(new CustomEvent(n,{detail:{key:s,value:l}}))},[s,l]);return Gf("storage",k=>{u&&k.storageArea===window[e]&&k.key===s&&b(d(k.newValue??void 0))}),Gf(n,k=>{u&&k.detail.key===s&&b(k.detail.value)}),E.useEffect(()=>{l!==void 0&&g===void 0&&x(l)},[l,g,x]),E.useEffect(()=>{const k=f();k!==void 0&&x(k)},[s]),[g===void 0?l:g,x,w]}}function c$e(e){return EU("localStorage","use-local-storage")(e)}function u$e(e){return EU("sessionStorage","use-session-storage")(e)}function G9(e,r){if(typeof e=="function")return e(r);typeof e=="object"&&e!==null&&"current"in e&&(e.current=r)}function SU(...e){const r=new Map;return n=>{if(e.forEach(o=>{const a=G9(o,n);a&&r.set(o,a)}),r.size>0)return()=>{e.forEach(o=>{const a=r.get(o);a&&typeof a=="function"?a():G9(o,null)}),r.clear()}}}function Hr(...e){return E.useCallback(SU(...e),e)}function d$e(e){return{x:Cu(e.x,0,1),y:Cu(e.y,0,1)}}function CU(e,r,n="ltr"){const o=E.useRef(!1),a=E.useRef(!1),i=E.useRef(0),[s,l]=E.useState(!1),c=E.useRef(null);return E.useEffect(()=>{o.current=!0},[]),{ref:E.useCallback(u=>{if(c.current&&(c.current(),c.current=null),!u)return;const d=({x:_,y:T})=>{cancelAnimationFrame(i.current),i.current=requestAnimationFrame(()=>{if(o.current&&u){u.style.userSelect="none";const A=u.getBoundingClientRect();if(A.width&&A.height){const R=Cu((_-A.left)/A.width,0,1);e({x:n==="ltr"?R:1-R,y:Cu((T-A.top)/A.height,0,1)})}}})},h=()=>{document.addEventListener("mousemove",w),document.addEventListener("mouseup",b),document.addEventListener("touchmove",C,{passive:!1}),document.addEventListener("touchend",b)},f=()=>{document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",b),document.removeEventListener("touchmove",C),document.removeEventListener("touchend",b)},g=()=>{!a.current&&o.current&&(a.current=!0,typeof r?.onScrubStart=="function"&&r.onScrubStart(),l(!0),h())},b=()=>{a.current&&o.current&&(a.current=!1,l(!1),f(),setTimeout(()=>{typeof r?.onScrubEnd=="function"&&r.onScrubEnd()},0))},x=_=>{g(),_.preventDefault(),w(_)},w=_=>d({x:_.clientX,y:_.clientY}),k=_=>{_.cancelable&&_.preventDefault(),g(),C(_)},C=_=>{_.cancelable&&_.preventDefault(),d({x:_.changedTouches[0].clientX,y:_.changedTouches[0].clientY})};u.addEventListener("mousedown",x),u.addEventListener("touchstart",k,{passive:!1}),c.current=()=>{u.removeEventListener("mousedown",x),u.removeEventListener("touchstart",k)}},[n,e]),active:s}}function uc({value:e,defaultValue:r,finalValue:n,onChange:o=()=>{}}){const[a,i]=E.useState(r!==void 0?r:n);return e!==void 0?[e,o,!0]:[a,(l,...c)=>{i(l),o?.(l,...c)},!1]}function TU(e,r){return bU("(prefers-reduced-motion: reduce)",e,r)}function p$e(e,r){if(!e||!r)return!1;if(e===r)return!0;if(e.length!==r.length)return!1;for(let n=0;n{r({width:window.innerWidth||0,height:window.innerHeight||0})},[]);return Gf("resize",n,AU),Gf("orientationchange",n,AU),E.useEffect(n,[]),e}const g$e={" ":"space",ArrowLeft:"arrowleft",ArrowRight:"arrowright",ArrowUp:"arrowup",ArrowDown:"arrowdown",Escape:"escape",Esc:"escape",esc:"escape",Enter:"enter",Tab:"tab",Backspace:"backspace",Delete:"delete",Insert:"insert",Home:"home",End:"end",PageUp:"pageup",PageDown:"pagedown","+":"plus","-":"minus","*":"asterisk","/":"slash"};function e2(e){const r=e.replace("Key","").toLowerCase();return g$e[e]||r}function y$e(e){const r=e.toLowerCase().split("+").map(i=>i.trim()),n={alt:r.includes("alt"),ctrl:r.includes("ctrl"),meta:r.includes("meta"),mod:r.includes("mod"),shift:r.includes("shift"),plus:r.includes("[plus]")},o=["alt","ctrl","meta","shift","mod"],a=r.find(i=>!o.includes(i));return{...n,key:a==="[plus]"?"+":a}}function b$e(e,r,n){const{alt:o,ctrl:a,meta:i,mod:s,shift:l,key:c}=e,{altKey:u,ctrlKey:d,metaKey:h,shiftKey:f,key:g,code:b}=r;if(o!==u)return!1;if(s){if(!d&&!h)return!1}else if(a!==d||i!==h)return!1;return l!==f?!1:!!(c&&(n?e2(b)===e2(c):e2(g??b)===e2(c)))}function RU(e,r){return n=>b$e(y$e(e),n,r)}function t2(e){return r=>{const n="nativeEvent"in r?r.nativeEvent:r;e.forEach(([o,a,i={preventDefault:!0,usePhysicalKeys:!1}])=>{RU(o,i.usePhysicalKeys)(n)&&(i.preventDefault&&r.preventDefault(),a(n))})}}function v$e(e,r,n=!1){return e.target instanceof HTMLElement?(n||!e.target.isContentEditable)&&!r.includes(e.target.tagName):!0}function x$e(e,r=["INPUT","TEXTAREA","SELECT"],n=!1){E.useEffect(()=>{const o=a=>{e.forEach(([i,s,l={preventDefault:!0,usePhysicalKeys:!1}])=>{RU(i,l.usePhysicalKeys)(a)&&v$e(a,r,n)&&(l.preventDefault&&a.preventDefault(),s(a))})};return document.documentElement.addEventListener("keydown",o),()=>document.documentElement.removeEventListener("keydown",o)},[e])}function X9(){const[e,r]=E.useState(!1),n=E.useRef(null),o=E.useCallback(()=>{r(!0)},[]),a=E.useCallback(()=>{r(!1)},[]);return{ref:E.useCallback(i=>{n.current&&(n.current.removeEventListener("mouseenter",o),n.current.removeEventListener("mouseleave",a)),i&&(i.addEventListener("mouseenter",o),i.addEventListener("mouseleave",a)),n.current=i},[o,a]),hovered:e}}function w$e(e=!1,r={}){const[n,o]=E.useState(e),a=E.useCallback(()=>{o(l=>l||(r.onOpen?.(),!0))},[r.onOpen]),i=E.useCallback(()=>{o(l=>l&&(r.onClose?.(),!1))},[r.onClose]),s=E.useCallback(()=>{n?i():a()},[i,a,n]);return[n,{open:a,close:i,toggle:s}]}function k$e(e){return e.currentTarget instanceof HTMLElement&&e.relatedTarget instanceof HTMLElement?e.currentTarget.contains(e.relatedTarget):!1}function _$e({onBlur:e,onFocus:r}={}){const[n,o]=E.useState(!1),a=E.useRef(!1),i=E.useRef(null),s=E.useCallback(d=>{o(d),a.current=d},[]),l=E.useCallback(d=>{a.current||(s(!0),r?.(d))},[r]),c=E.useCallback(d=>{a.current&&!k$e(d)&&(s(!1),e?.(d))},[e]),u=E.useCallback(d=>{d&&(i.current&&(i.current.removeEventListener("focusin",l),i.current.removeEventListener("focusout",c)),d.addEventListener("focusin",l),d.addEventListener("focusout",c))},[l,c]);return E.useEffect(()=>()=>{i.current&&(i.current.removeEventListener("focusin",l),i.current.removeEventListener("focusout",c))},[]),{ref:u,focused:n}}function NU(e,r,n={autoInvoke:!1}){const o=E.useRef(null),a=E.useCallback((...s)=>{o.current||(o.current=window.setTimeout(()=>{e(s),o.current=null},r))},[r]),i=E.useCallback(()=>{o.current&&(window.clearTimeout(o.current),o.current=null)},[]);return E.useEffect(()=>(n.autoInvoke&&a(),i),[i,a]),{start:a,clear:i}}function DU(e,r,n){const o=E.useRef(null),a=E.useRef(null);return E.useEffect(()=>{const i=typeof n=="function"?n():n;return(i||a.current)&&(o.current=new MutationObserver(e),o.current.observe(i||a.current,r)),()=>{o.current?.disconnect()}},[e,r]),a}function E$e(){const[e,r]=E.useState(!1);return E.useEffect(()=>r(!0),[]),e}function $U(e){const[r,n]=E.useState({history:[e],current:0}),o=E.useCallback(c=>n(u=>{const d=[...u.history.slice(0,u.current+1),c];return{history:d,current:d.length-1}}),[]),a=E.useCallback((c=1)=>n(u=>({history:u.history,current:Math.max(0,u.current-c)})),[]),i=E.useCallback((c=1)=>n(u=>({history:u.history,current:Math.min(u.history.length-1,u.current+c)})),[]),s=E.useCallback(()=>{n({history:[e],current:0})},[e]),l=E.useMemo(()=>({back:a,forward:i,reset:s,set:o}),[a,i,s,o]);return[r.history[r.current],l,r]}function S$e(e,r){const n=io(e),o=E.useRef(null),a=E.useRef(null),i=E.useRef(!0),s=E.useRef(r),l=E.useRef(-1),c=()=>window.clearTimeout(l.current),u=E.useCallback((...f)=>{n(...f),o.current=f,a.current=f,i.current=!1},[n]),d=E.useCallback(()=>{o.current&&o.current!==a.current?(u(...o.current),l.current=window.setTimeout(d,s.current)):i.current=!0},[u]),h=E.useCallback((...f)=>{i.current?(u(...f),l.current=window.setTimeout(d,s.current)):o.current=f},[u,d]);return E.useEffect(()=>{s.current=r},[r]),[h,c]}function C$e(e,r){return S$e(e,r)[0]}function T$e(){return typeof process<"u"&&process.env?"production":"development"}function MU(e){const r=new Map;return(...n)=>{const o=JSON.stringify(n);if(r.has(o))return r.get(o);const a=e(...n);return r.set(o,a),a}}function PU(e,r){return r.length===0?e:r.reduce((n,o)=>Math.abs(o-e){Object.entries(n).forEach(([o,a])=>{r[o]?r[o]=hs(r[o],a):r[o]=a})}),r}function n2({theme:e,classNames:r,props:n,stylesCtx:o}){const a=(Array.isArray(r)?r:[r]).map(i=>typeof i=="function"?i(e,n,o):i||A$e);return R$e(a)}function o2({theme:e,styles:r,props:n,stylesCtx:o}){return(Array.isArray(r)?r:[r]).reduce((a,i)=>typeof i=="function"?{...a,...i(e,n,o)}:{...a,...i},{})}const a2=E.createContext(null);function Tu(){const e=E.useContext(a2);if(!e)throw new Error("[@mantine/core] MantineProvider was not found in tree");return e}function N$e(){return Tu().cssVariablesResolver}function D$e(){return Tu().classNamesPrefix}function yp(){return Tu().getStyleNonce}function $$e(){return Tu().withStaticClasses}function M$e(){return Tu().headless}function P$e(){return Tu().stylesTransform?.sx}function z$e(){return Tu().stylesTransform?.styles}function i2(){return Tu().env||"default"}function I$e(e){return/^#?([0-9A-F]{3}){1,2}([0-9A-F]{2})?$/i.test(e)}function O$e(e){let r=e.replace("#","");if(r.length===3){const s=r.split("");r=[s[0],s[0],s[1],s[1],s[2],s[2]].join("")}if(r.length===8){const s=parseInt(r.slice(6,8),16)/255;return{r:parseInt(r.slice(0,2),16),g:parseInt(r.slice(2,4),16),b:parseInt(r.slice(4,6),16),a:s}}const n=parseInt(r,16),o=n>>16&255,a=n>>8&255,i=n&255;return{r:o,g:a,b:i,a:1}}function j$e(e){const[r,n,o,a]=e.replace(/[^0-9,./]/g,"").split(/[/,]/).map(Number);return{r,g:n,b:o,a:a===void 0?1:a}}function L$e(e){const r=/^hsla?\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*(,\s*(0?\.\d+|\d+(\.\d+)?))?\s*\)$/i,n=e.match(r);if(!n)return{r:0,g:0,b:0,a:1};const o=parseInt(n[1],10),a=parseInt(n[2],10)/100,i=parseInt(n[3],10)/100,s=n[5]?parseFloat(n[5]):void 0,l=(1-Math.abs(2*i-1))*a,c=o/60,u=l*(1-Math.abs(c%2-1)),d=i-l/2;let h,f,g;return c>=0&&c<1?(h=l,f=u,g=0):c>=1&&c<2?(h=u,f=l,g=0):c>=2&&c<3?(h=0,f=l,g=u):c>=3&&c<4?(h=0,f=u,g=l):c>=4&&c<5?(h=u,f=0,g=l):(h=l,f=0,g=u),{r:Math.round((h+d)*255),g:Math.round((f+d)*255),b:Math.round((g+d)*255),a:s||1}}function K9(e){return I$e(e)?O$e(e):e.startsWith("rgb")?j$e(e):e.startsWith("hsl")?L$e(e):{r:0,g:0,b:0,a:1}}function s2(e,r){if(e.startsWith("var("))return`color-mix(in srgb, ${e}, black ${r*100}%)`;const{r:n,g:o,b:a,a:i}=K9(e),s=1-r,l=c=>Math.round(c*s);return`rgba(${l(n)}, ${l(o)}, ${l(a)}, ${i})`}function M0(e,r){return typeof e.primaryShade=="number"?e.primaryShade:r==="dark"?e.primaryShade.dark:e.primaryShade.light}function Z9(e){return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function B$e(e){const r=e.match(/oklch\((.*?)%\s/);return r?parseFloat(r[1]):null}function F$e(e){if(e.startsWith("oklch("))return(B$e(e)||0)/100;const{r,g:n,b:o}=K9(e),a=r/255,i=n/255,s=o/255,l=Z9(a),c=Z9(i),u=Z9(s);return .2126*l+.7152*c+.0722*u}function P0(e,r=.179){return e.startsWith("var(")?!1:F$e(e)>r}function Au({color:e,theme:r,colorScheme:n}){if(typeof e!="string")throw new Error(`[@mantine/core] Failed to parse color. Expected color to be a string, instead got ${typeof e}`);if(e==="bright")return{color:e,value:n==="dark"?r.white:r.black,shade:void 0,isThemeColor:!1,isLight:P0(n==="dark"?r.white:r.black,r.luminanceThreshold),variable:"--mantine-color-bright"};if(e==="dimmed")return{color:e,value:n==="dark"?r.colors.dark[2]:r.colors.gray[7],shade:void 0,isThemeColor:!1,isLight:P0(n==="dark"?r.colors.dark[2]:r.colors.gray[6],r.luminanceThreshold),variable:"--mantine-color-dimmed"};if(e==="white"||e==="black")return{color:e,value:e==="white"?r.white:r.black,shade:void 0,isThemeColor:!1,isLight:P0(e==="white"?r.white:r.black,r.luminanceThreshold),variable:`--mantine-color-${e}`};const[o,a]=e.split("."),i=a?Number(a):void 0,s=o in r.colors;if(s){const l=i!==void 0?r.colors[o][i]:r.colors[o][M0(r,n||"light")];return{color:o,value:l,shade:i,isThemeColor:s,isLight:P0(l,r.luminanceThreshold),variable:a?`--mantine-color-${o}-${i}`:`--mantine-color-${o}-filled`}}return{color:e,value:e,isThemeColor:s,isLight:P0(e,r.luminanceThreshold),shade:i,variable:void 0}}function Ia(e,r){const n=Au({color:e||r.primaryColor,theme:r});return n.variable?`var(${n.variable})`:e}function Q9(e,r){const n={from:e?.from||r.defaultGradient.from,to:e?.to||r.defaultGradient.to,deg:e?.deg??r.defaultGradient.deg??0},o=Ia(n.from,r),a=Ia(n.to,r);return`linear-gradient(${n.deg}deg, ${o} 0%, ${a} 100%)`}function hl(e,r){if(typeof e!="string"||r>1||r<0)return"rgba(0, 0, 0, 1)";if(e.startsWith("var(")){const i=(1-r)*100;return`color-mix(in srgb, ${e}, transparent ${i}%)`}if(e.startsWith("oklch"))return e.includes("/")?e.replace(/\/\s*[\d.]+\s*\)/,`/ ${r})`):e.replace(")",` / ${r})`);const{r:n,g:o,b:a}=K9(e);return`rgba(${n}, ${o}, ${a}, ${r})`}const Xf=hl,H$e=({color:e,theme:r,variant:n,gradient:o,autoContrast:a})=>{const i=Au({color:e,theme:r}),s=typeof a=="boolean"?a:r.autoContrast;if(n==="none")return{background:"transparent",hover:"transparent",color:"inherit",border:"none"};if(n==="filled"){const l=s&&i.isLight?"var(--mantine-color-black)":"var(--mantine-color-white)";return i.isThemeColor?i.shade===void 0?{background:`var(--mantine-color-${e}-filled)`,hover:`var(--mantine-color-${e}-filled-hover)`,color:l,border:`${Me(1)} solid transparent`}:{background:`var(--mantine-color-${i.color}-${i.shade})`,hover:`var(--mantine-color-${i.color}-${i.shade===9?8:i.shade+1})`,color:l,border:`${Me(1)} solid transparent`}:{background:e,hover:s2(e,.1),color:l,border:`${Me(1)} solid transparent`}}if(n==="light"){if(i.isThemeColor){if(i.shade===void 0)return{background:`var(--mantine-color-${e}-light)`,hover:`var(--mantine-color-${e}-light-hover)`,color:`var(--mantine-color-${e}-light-color)`,border:`${Me(1)} solid transparent`};const l=r.colors[i.color][i.shade];return{background:hl(l,.1),hover:hl(l,.12),color:`var(--mantine-color-${i.color}-${Math.min(i.shade,6)})`,border:`${Me(1)} solid transparent`}}return{background:hl(e,.1),hover:hl(e,.12),color:e,border:`${Me(1)} solid transparent`}}if(n==="outline")return i.isThemeColor?i.shade===void 0?{background:"transparent",hover:`var(--mantine-color-${e}-outline-hover)`,color:`var(--mantine-color-${e}-outline)`,border:`${Me(1)} solid var(--mantine-color-${e}-outline)`}:{background:"transparent",hover:hl(r.colors[i.color][i.shade],.05),color:`var(--mantine-color-${i.color}-${i.shade})`,border:`${Me(1)} solid var(--mantine-color-${i.color}-${i.shade})`}:{background:"transparent",hover:hl(e,.05),color:e,border:`${Me(1)} solid ${e}`};if(n==="subtle"){if(i.isThemeColor){if(i.shade===void 0)return{background:"transparent",hover:`var(--mantine-color-${e}-light-hover)`,color:`var(--mantine-color-${e}-light-color)`,border:`${Me(1)} solid transparent`};const l=r.colors[i.color][i.shade];return{background:"transparent",hover:hl(l,.12),color:`var(--mantine-color-${i.color}-${Math.min(i.shade,6)})`,border:`${Me(1)} solid transparent`}}return{background:"transparent",hover:hl(e,.12),color:e,border:`${Me(1)} solid transparent`}}return n==="transparent"?i.isThemeColor?i.shade===void 0?{background:"transparent",hover:"transparent",color:`var(--mantine-color-${e}-light-color)`,border:`${Me(1)} solid transparent`}:{background:"transparent",hover:"transparent",color:`var(--mantine-color-${i.color}-${Math.min(i.shade,6)})`,border:`${Me(1)} solid transparent`}:{background:"transparent",hover:"transparent",color:e,border:`${Me(1)} solid transparent`}:n==="white"?i.isThemeColor?i.shade===void 0?{background:"var(--mantine-color-white)",hover:s2(r.white,.01),color:`var(--mantine-color-${e}-filled)`,border:`${Me(1)} solid transparent`}:{background:"var(--mantine-color-white)",hover:s2(r.white,.01),color:`var(--mantine-color-${i.color}-${i.shade})`,border:`${Me(1)} solid transparent`}:{background:"var(--mantine-color-white)",hover:s2(r.white,.01),color:e,border:`${Me(1)} solid transparent`}:n==="gradient"?{background:Q9(o,r),hover:Q9(o,r),color:"var(--mantine-color-white)",border:"none"}:n==="default"?{background:"var(--mantine-color-default)",hover:"var(--mantine-color-default-hover)",color:"var(--mantine-color-default-color)",border:`${Me(1)} solid var(--mantine-color-default-border)`}:{}},V$e={dark:["#C9C9C9","#b8b8b8","#828282","#696969","#424242","#3b3b3b","#2e2e2e","#242424","#1f1f1f","#141414"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]},IU="-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",J9={scale:1,fontSmoothing:!0,focusRing:"auto",white:"#fff",black:"#000",colors:V$e,primaryShade:{light:6,dark:8},primaryColor:"blue",variantColorResolver:H$e,autoContrast:!1,luminanceThreshold:.3,fontFamily:IU,fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",respectReducedMotion:!1,cursorType:"default",defaultGradient:{from:"blue",to:"cyan",deg:45},defaultRadius:"sm",activeClassName:"mantine-active",focusClassName:"",headings:{fontFamily:IU,fontWeight:"700",textWrap:"wrap",sizes:{h1:{fontSize:Me(34),lineHeight:"1.3"},h2:{fontSize:Me(26),lineHeight:"1.35"},h3:{fontSize:Me(22),lineHeight:"1.4"},h4:{fontSize:Me(18),lineHeight:"1.45"},h5:{fontSize:Me(16),lineHeight:"1.5"},h6:{fontSize:Me(14),lineHeight:"1.5"}}},fontSizes:{xs:Me(12),sm:Me(14),md:Me(16),lg:Me(18),xl:Me(20)},lineHeights:{xs:"1.4",sm:"1.45",md:"1.55",lg:"1.6",xl:"1.65"},radius:{xs:Me(2),sm:Me(4),md:Me(8),lg:Me(16),xl:Me(32)},spacing:{xs:Me(10),sm:Me(12),md:Me(16),lg:Me(20),xl:Me(32)},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},shadows:{xs:`0 ${Me(1)} ${Me(3)} rgba(0, 0, 0, 0.05), 0 ${Me(1)} ${Me(2)} rgba(0, 0, 0, 0.1)`,sm:`0 ${Me(1)} ${Me(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${Me(10)} ${Me(15)} ${Me(-5)}, rgba(0, 0, 0, 0.04) 0 ${Me(7)} ${Me(7)} ${Me(-5)}`,md:`0 ${Me(1)} ${Me(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${Me(20)} ${Me(25)} ${Me(-5)}, rgba(0, 0, 0, 0.04) 0 ${Me(10)} ${Me(10)} ${Me(-5)}`,lg:`0 ${Me(1)} ${Me(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${Me(28)} ${Me(23)} ${Me(-7)}, rgba(0, 0, 0, 0.04) 0 ${Me(12)} ${Me(12)} ${Me(-7)}`,xl:`0 ${Me(1)} ${Me(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${Me(36)} ${Me(28)} ${Me(-7)}, rgba(0, 0, 0, 0.04) 0 ${Me(17)} ${Me(17)} ${Me(-7)}`},other:{},components:{}};function OU(e){return e==="auto"||e==="dark"||e==="light"}function q$e({key:e="mantine-color-scheme-value"}={}){let r;return{get:n=>{if(typeof window>"u")return n;try{const o=window.localStorage.getItem(e);return OU(o)?o:n}catch{return n}},set:n=>{try{window.localStorage.setItem(e,n)}catch(o){console.warn("[@mantine/core] Local storage color scheme manager was unable to save color scheme.",o)}},subscribe:n=>{r=o=>{o.storageArea===window.localStorage&&o.key===e&&OU(o.newValue)&&n(o.newValue)},window.addEventListener("storage",r)},unsubscribe:()=>{window.removeEventListener("storage",r)},clear:()=>{window.localStorage.removeItem(e)}}}const U$e="[@mantine/core] MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color",jU="[@mantine/core] MantineProvider: Invalid theme.primaryShade, it accepts only 0-9 integers or an object { light: 0-9, dark: 0-9 }";function e7(e){return e<0||e>9?!1:parseInt(e.toString(),10)===e}function LU(e){if(!(e.primaryColor in e.colors))throw new Error(U$e);if(typeof e.primaryShade=="object"&&(!e7(e.primaryShade.dark)||!e7(e.primaryShade.light)))throw new Error(jU);if(typeof e.primaryShade=="number"&&!e7(e.primaryShade))throw new Error(jU)}function W$e(e,r){if(!r)return LU(e),e;const n=V9(e,r);return r.fontFamily&&!r.headings?.fontFamily&&(n.headings.fontFamily=r.fontFamily),LU(n),n}const t7=E.createContext(null),Y$e=()=>E.useContext(t7)||J9;function vo(){const e=E.useContext(t7);if(!e)throw new Error("@mantine/core: MantineProvider was not found in component tree, make sure you have it in your app");return e}function BU({theme:e,children:r,inherit:n=!0}){const o=Y$e(),a=E.useMemo(()=>W$e(n?o:J9,e),[e,o,n]);return y.jsx(t7.Provider,{value:a,children:r})}BU.displayName="@mantine/core/MantineThemeProvider";function G$e(){const e=vo(),r=yp(),n=zo(e.breakpoints).reduce((o,a)=>{const i=e.breakpoints[a].includes("px"),s=q9(e.breakpoints[a]),l=i?`${s-.1}px`:dU(s-.1),c=i?`${s}px`:dU(s);return`${o}@media (max-width: ${l}) {.mantine-visible-from-${a} {display: none !important;}}@media (min-width: ${c}) {.mantine-hidden-from-${a} {display: none !important;}}`},"");return y.jsx("style",{"data-mantine-styles":"classes",nonce:r?.(),dangerouslySetInnerHTML:{__html:n}})}function r7(e){return Object.entries(e).map(([r,n])=>`${r}: ${n};`).join("")}function n7(e,r){return(Array.isArray(e)?e:[e]).reduce((n,o)=>`${o}{${n}}`,r)}function X$e(e,r){const n=r7(e.variables),o=n?n7(r,n):"",a=r7(e.dark),i=r7(e.light),s=a?n7(r===":host"?`${r}([data-mantine-color-scheme="dark"])`:`${r}[data-mantine-color-scheme="dark"]`,a):"",l=i?n7(r===":host"?`${r}([data-mantine-color-scheme="light"])`:`${r}[data-mantine-color-scheme="light"]`,i):"";return`${o} + +${s} + +${l}`}function o7({color:e,theme:r,autoContrast:n}){return(typeof n=="boolean"?n:r.autoContrast)&&Au({color:e||r.primaryColor,theme:r}).isLight?"var(--mantine-color-black)":"var(--mantine-color-white)"}function FU(e,r){return o7({color:e.colors[e.primaryColor][M0(e,r)],theme:e,autoContrast:null})}function l2({theme:e,color:r,colorScheme:n,name:o=r,withColorValues:a=!0}){if(!e.colors[r])return{};if(n==="light"){const l=M0(e,"light"),c={[`--mantine-color-${o}-text`]:`var(--mantine-color-${o}-filled)`,[`--mantine-color-${o}-filled`]:`var(--mantine-color-${o}-${l})`,[`--mantine-color-${o}-filled-hover`]:`var(--mantine-color-${o}-${l===9?8:l+1})`,[`--mantine-color-${o}-light`]:Xf(e.colors[r][l],.1),[`--mantine-color-${o}-light-hover`]:Xf(e.colors[r][l],.12),[`--mantine-color-${o}-light-color`]:`var(--mantine-color-${o}-${l})`,[`--mantine-color-${o}-outline`]:`var(--mantine-color-${o}-${l})`,[`--mantine-color-${o}-outline-hover`]:Xf(e.colors[r][l],.05)};return a?{[`--mantine-color-${o}-0`]:e.colors[r][0],[`--mantine-color-${o}-1`]:e.colors[r][1],[`--mantine-color-${o}-2`]:e.colors[r][2],[`--mantine-color-${o}-3`]:e.colors[r][3],[`--mantine-color-${o}-4`]:e.colors[r][4],[`--mantine-color-${o}-5`]:e.colors[r][5],[`--mantine-color-${o}-6`]:e.colors[r][6],[`--mantine-color-${o}-7`]:e.colors[r][7],[`--mantine-color-${o}-8`]:e.colors[r][8],[`--mantine-color-${o}-9`]:e.colors[r][9],...c}:c}const i=M0(e,"dark"),s={[`--mantine-color-${o}-text`]:`var(--mantine-color-${o}-4)`,[`--mantine-color-${o}-filled`]:`var(--mantine-color-${o}-${i})`,[`--mantine-color-${o}-filled-hover`]:`var(--mantine-color-${o}-${i===9?8:i+1})`,[`--mantine-color-${o}-light`]:Xf(e.colors[r][Math.max(0,i-2)],.15),[`--mantine-color-${o}-light-hover`]:Xf(e.colors[r][Math.max(0,i-2)],.2),[`--mantine-color-${o}-light-color`]:`var(--mantine-color-${o}-${Math.max(i-5,0)})`,[`--mantine-color-${o}-outline`]:`var(--mantine-color-${o}-${Math.max(i-4,0)})`,[`--mantine-color-${o}-outline-hover`]:Xf(e.colors[r][Math.max(i-4,0)],.05)};return a?{[`--mantine-color-${o}-0`]:e.colors[r][0],[`--mantine-color-${o}-1`]:e.colors[r][1],[`--mantine-color-${o}-2`]:e.colors[r][2],[`--mantine-color-${o}-3`]:e.colors[r][3],[`--mantine-color-${o}-4`]:e.colors[r][4],[`--mantine-color-${o}-5`]:e.colors[r][5],[`--mantine-color-${o}-6`]:e.colors[r][6],[`--mantine-color-${o}-7`]:e.colors[r][7],[`--mantine-color-${o}-8`]:e.colors[r][8],[`--mantine-color-${o}-9`]:e.colors[r][9],...s}:s}function K$e(e){return!!e&&typeof e=="object"&&"mantine-virtual-color"in e}function Kf(e,r,n){zo(r).forEach(o=>Object.assign(e,{[`--mantine-${n}-${o}`]:r[o]}))}const HU=e=>{const r=M0(e,"light"),n=e.defaultRadius in e.radius?e.radius[e.defaultRadius]:Me(e.defaultRadius),o={variables:{"--mantine-z-index-app":"100","--mantine-z-index-modal":"200","--mantine-z-index-popover":"300","--mantine-z-index-overlay":"400","--mantine-z-index-max":"9999","--mantine-scale":e.scale.toString(),"--mantine-cursor-type":e.cursorType,"--mantine-webkit-font-smoothing":e.fontSmoothing?"antialiased":"unset","--mantine-moz-font-smoothing":e.fontSmoothing?"grayscale":"unset","--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-line-height":e.lineHeights.md,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":e.headings.fontWeight,"--mantine-heading-text-wrap":e.headings.textWrap,"--mantine-radius-default":n,"--mantine-primary-color-filled":`var(--mantine-color-${e.primaryColor}-filled)`,"--mantine-primary-color-filled-hover":`var(--mantine-color-${e.primaryColor}-filled-hover)`,"--mantine-primary-color-light":`var(--mantine-color-${e.primaryColor}-light)`,"--mantine-primary-color-light-hover":`var(--mantine-color-${e.primaryColor}-light-hover)`,"--mantine-primary-color-light-color":`var(--mantine-color-${e.primaryColor}-light-color)`},light:{"--mantine-color-scheme":"light","--mantine-primary-color-contrast":FU(e,"light"),"--mantine-color-bright":"var(--mantine-color-black)","--mantine-color-text":e.black,"--mantine-color-body":e.white,"--mantine-color-error":"var(--mantine-color-red-6)","--mantine-color-placeholder":"var(--mantine-color-gray-5)","--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-${r})`,"--mantine-color-default":"var(--mantine-color-white)","--mantine-color-default-hover":"var(--mantine-color-gray-0)","--mantine-color-default-color":"var(--mantine-color-black)","--mantine-color-default-border":"var(--mantine-color-gray-4)","--mantine-color-dimmed":"var(--mantine-color-gray-6)","--mantine-color-disabled":"var(--mantine-color-gray-2)","--mantine-color-disabled-color":"var(--mantine-color-gray-5)","--mantine-color-disabled-border":"var(--mantine-color-gray-3)"},dark:{"--mantine-color-scheme":"dark","--mantine-primary-color-contrast":FU(e,"dark"),"--mantine-color-bright":"var(--mantine-color-white)","--mantine-color-text":"var(--mantine-color-dark-0)","--mantine-color-body":"var(--mantine-color-dark-7)","--mantine-color-error":"var(--mantine-color-red-8)","--mantine-color-placeholder":"var(--mantine-color-dark-3)","--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-4)`,"--mantine-color-default":"var(--mantine-color-dark-6)","--mantine-color-default-hover":"var(--mantine-color-dark-5)","--mantine-color-default-color":"var(--mantine-color-white)","--mantine-color-default-border":"var(--mantine-color-dark-4)","--mantine-color-dimmed":"var(--mantine-color-dark-2)","--mantine-color-disabled":"var(--mantine-color-dark-6)","--mantine-color-disabled-color":"var(--mantine-color-dark-3)","--mantine-color-disabled-border":"var(--mantine-color-dark-4)"}};Kf(o.variables,e.breakpoints,"breakpoint"),Kf(o.variables,e.spacing,"spacing"),Kf(o.variables,e.fontSizes,"font-size"),Kf(o.variables,e.lineHeights,"line-height"),Kf(o.variables,e.shadows,"shadow"),Kf(o.variables,e.radius,"radius"),e.colors[e.primaryColor].forEach((i,s)=>{o.variables[`--mantine-primary-color-${s}`]=`var(--mantine-color-${e.primaryColor}-${s})`}),zo(e.colors).forEach(i=>{const s=e.colors[i];if(K$e(s)){Object.assign(o.light,l2({theme:e,name:s.name,color:s.light,colorScheme:"light",withColorValues:!0})),Object.assign(o.dark,l2({theme:e,name:s.name,color:s.dark,colorScheme:"dark",withColorValues:!0}));return}s.forEach((l,c)=>{o.variables[`--mantine-color-${i}-${c}`]=l}),Object.assign(o.light,l2({theme:e,color:i,colorScheme:"light",withColorValues:!1})),Object.assign(o.dark,l2({theme:e,color:i,colorScheme:"dark",withColorValues:!1}))});const a=e.headings.sizes;return zo(a).forEach(i=>{o.variables[`--mantine-${i}-font-size`]=a[i].fontSize,o.variables[`--mantine-${i}-line-height`]=a[i].lineHeight,o.variables[`--mantine-${i}-font-weight`]=a[i].fontWeight||e.headings.fontWeight}),o};function Z$e({theme:e,generator:r}){const n=HU(e),o=r?.(e);return o?V9(n,o):n}const a7=HU(J9);function Q$e(e){const r={variables:{},light:{},dark:{}};return zo(e.variables).forEach(n=>{a7.variables[n]!==e.variables[n]&&(r.variables[n]=e.variables[n])}),zo(e.light).forEach(n=>{a7.light[n]!==e.light[n]&&(r.light[n]=e.light[n])}),zo(e.dark).forEach(n=>{a7.dark[n]!==e.dark[n]&&(r.dark[n]=e.dark[n])}),r}function J$e(e){return` + ${e}[data-mantine-color-scheme="dark"] { --mantine-color-scheme: dark; } + ${e}[data-mantine-color-scheme="light"] { --mantine-color-scheme: light; } +`}function VU({cssVariablesSelector:e,deduplicateCssVariables:r}){const n=vo(),o=yp(),a=N$e(),i=Z$e({theme:n,generator:a}),s=e===":root"&&r,l=s?Q$e(i):i,c=X$e(l,e);return c?y.jsx("style",{"data-mantine-styles":!0,nonce:o?.(),dangerouslySetInnerHTML:{__html:`${c}${s?"":J$e(e)}`}}):null}VU.displayName="@mantine/CssVariables";function Zf(e,r){const n=typeof window<"u"&&"matchMedia"in window&&window.matchMedia("(prefers-color-scheme: dark)")?.matches,o=e!=="auto"?e:n?"dark":"light";r()?.setAttribute("data-mantine-color-scheme",o)}function eMe({manager:e,defaultColorScheme:r,getRootElement:n,forceColorScheme:o}){const a=E.useRef(null),[i,s]=E.useState(()=>e.get(r)),l=o||i,c=E.useCallback(d=>{o||(Zf(d,n),s(d),e.set(d))},[e.set,l,o]),u=E.useCallback(()=>{s(r),Zf(r,n),e.clear()},[e.clear,r]);return E.useEffect(()=>(e.subscribe(c),e.unsubscribe),[e.subscribe,e.unsubscribe]),$0(()=>{Zf(e.get(r),n)},[]),E.useEffect(()=>{if(o)return Zf(o,n),()=>{};o===void 0&&Zf(i,n),typeof window<"u"&&"matchMedia"in window&&(a.current=window.matchMedia("(prefers-color-scheme: dark)"));const d=h=>{i==="auto"&&Zf(h.matches?"dark":"light",n)};return a.current?.addEventListener("change",d),()=>a.current?.removeEventListener("change",d)},[i,o]),{colorScheme:l,setColorScheme:c,clearColorScheme:u}}function tMe({respectReducedMotion:e,getRootElement:r}){$0(()=>{e&&r()?.setAttribute("data-respect-reduced-motion","true")},[e])}function i7({theme:e,children:r,getStyleNonce:n,withStaticClasses:o=!0,withGlobalClasses:a=!0,deduplicateCssVariables:i=!0,withCssVariables:s=!0,cssVariablesSelector:l=":root",classNamesPrefix:c="mantine",colorSchemeManager:u=q$e(),defaultColorScheme:d="light",getRootElement:h=()=>document.documentElement,cssVariablesResolver:f,forceColorScheme:g,stylesTransform:b,env:x}){const{colorScheme:w,setColorScheme:k,clearColorScheme:C}=eMe({defaultColorScheme:d,forceColorScheme:g,manager:u,getRootElement:h});return tMe({respectReducedMotion:e?.respectReducedMotion||!1,getRootElement:h}),y.jsx(a2.Provider,{value:{colorScheme:w,setColorScheme:k,clearColorScheme:C,getRootElement:h,classNamesPrefix:c,getStyleNonce:n,cssVariablesResolver:f,cssVariablesSelector:l,withStaticClasses:o,stylesTransform:b,env:x},children:y.jsxs(BU,{theme:e,children:[s&&y.jsx(VU,{cssVariablesSelector:l,deduplicateCssVariables:i}),a&&y.jsx(G$e,{}),r]})})}i7.displayName="@mantine/core/MantineProvider";function s7({classNames:e,styles:r,props:n,stylesCtx:o}){const a=vo();return{resolvedClassNames:n2({theme:a,classNames:e,props:n,stylesCtx:o||void 0}),resolvedStyles:o2({theme:a,styles:r,props:n,stylesCtx:o||void 0})}}const rMe={always:"mantine-focus-always",auto:"mantine-focus-auto",never:"mantine-focus-never"};function nMe({theme:e,options:r,unstyled:n}){return hs(r?.focusable&&!n&&(e.focusClassName||rMe[e.focusRing]),r?.active&&!n&&e.activeClassName)}function oMe({selector:e,stylesCtx:r,options:n,props:o,theme:a}){return n2({theme:a,classNames:n?.classNames,props:n?.props||o,stylesCtx:r})[e]}function qU({selector:e,stylesCtx:r,theme:n,classNames:o,props:a}){return n2({theme:n,classNames:o,props:a,stylesCtx:r})[e]}function aMe({rootSelector:e,selector:r,className:n}){return e===r?n:void 0}function iMe({selector:e,classes:r,unstyled:n}){return n?void 0:r[e]}function sMe({themeName:e,classNamesPrefix:r,selector:n,withStaticClass:o}){return o===!1?[]:e.map(a=>`${r}-${a}-${n}`)}function lMe({themeName:e,theme:r,selector:n,props:o,stylesCtx:a}){return e.map(i=>n2({theme:r,classNames:r.components[i]?.classNames,props:o,stylesCtx:a})?.[n])}function cMe({options:e,classes:r,selector:n,unstyled:o}){return e?.variant&&!o?r[`${n}--${e.variant}`]:void 0}function uMe({theme:e,options:r,themeName:n,selector:o,classNamesPrefix:a,classNames:i,classes:s,unstyled:l,className:c,rootSelector:u,props:d,stylesCtx:h,withStaticClasses:f,headless:g,transformedStyles:b}){return hs(nMe({theme:e,options:r,unstyled:l||g}),lMe({theme:e,themeName:n,selector:o,props:d,stylesCtx:h}),cMe({options:r,classes:s,selector:o,unstyled:l}),qU({selector:o,stylesCtx:h,theme:e,classNames:i,props:d}),qU({selector:o,stylesCtx:h,theme:e,classNames:b,props:d}),oMe({selector:o,stylesCtx:h,options:r,props:d,theme:e}),aMe({rootSelector:u,selector:o,className:c}),iMe({selector:o,classes:s,unstyled:l||g}),f&&!g&&sMe({themeName:n,classNamesPrefix:a,selector:o,withStaticClass:r?.withStaticClass}),r?.className)}function dMe({theme:e,themeName:r,props:n,stylesCtx:o,selector:a}){return r.map(i=>o2({theme:e,styles:e.components[i]?.styles,props:n,stylesCtx:o})[a]).reduce((i,s)=>({...i,...s}),{})}function l7({style:e,theme:r}){return Array.isArray(e)?[...e].reduce((n,o)=>({...n,...l7({style:o,theme:r})}),{}):typeof e=="function"?e(r):e??{}}function pMe(e){return e.reduce((r,n)=>(n&&Object.keys(n).forEach(o=>{r[o]={...r[o],...Uf(n[o])}}),r),{})}function hMe({vars:e,varsResolver:r,theme:n,props:o,stylesCtx:a,selector:i,themeName:s,headless:l}){return pMe([l?{}:r?.(n,o,a),...s.map(c=>n.components?.[c]?.vars?.(n,o,a)),e?.(n,o,a)])?.[i]}function fMe({theme:e,themeName:r,selector:n,options:o,props:a,stylesCtx:i,rootSelector:s,styles:l,style:c,vars:u,varsResolver:d,headless:h,withStylesTransform:f}){return{...!f&&dMe({theme:e,themeName:r,props:a,stylesCtx:i,selector:n}),...!f&&o2({theme:e,styles:l,props:a,stylesCtx:i})[n],...!f&&o2({theme:e,styles:o?.styles,props:o?.props||a,stylesCtx:i})[n],...hMe({theme:e,props:a,stylesCtx:i,vars:u,varsResolver:d,selector:n,themeName:r,headless:h}),...s===n?l7({style:c,theme:e}):null,...l7({style:o?.style,theme:e})}}function mMe({props:e,stylesCtx:r,themeName:n}){const o=vo(),a=z$e()?.();return{getTransformedStyles:i=>a?[...i.map(s=>a(s,{props:e,theme:o,ctx:r})),...n.map(s=>a(o.components[s]?.styles,{props:e,theme:o,ctx:r}))].filter(Boolean):[],withStylesTransform:!!a}}function Dt({name:e,classes:r,props:n,stylesCtx:o,className:a,style:i,rootSelector:s="root",unstyled:l,classNames:c,styles:u,vars:d,varsResolver:h,attributes:f}){const g=vo(),b=D$e(),x=$$e(),w=M$e(),k=(Array.isArray(e)?e:[e]).filter(T=>T),{withStylesTransform:C,getTransformedStyles:_}=mMe({props:n,stylesCtx:o,themeName:k});return(T,A)=>({className:uMe({theme:g,options:A,themeName:k,selector:T,classNamesPrefix:b,classNames:c,classes:r,unstyled:l,className:a,rootSelector:s,props:n,stylesCtx:o,withStaticClasses:x,headless:w,transformedStyles:_([A?.styles,u])}),style:fMe({theme:g,themeName:k,selector:T,options:A,props:n,stylesCtx:o,rootSelector:s,styles:u,style:i,vars:d,varsResolver:h,headless:w,withStylesTransform:C}),...f?.[T]})}function gMe(e,r){return typeof e=="boolean"?e:r.autoContrast}function UU(e){const r=document.createElement("style");return r.setAttribute("data-mantine-styles","inline"),r.innerHTML="*, *::before, *::after {transition: none !important;}",r.setAttribute("data-mantine-disable-transition","true"),e&&r.setAttribute("nonce",e),document.head.appendChild(r),()=>document.querySelectorAll("[data-mantine-disable-transition]").forEach(n=>n.remove())}function yMe({keepTransitions:e}={}){const r=E.useRef(fU),n=E.useRef(-1),o=E.useContext(a2),a=yp(),i=E.useRef(a?.());if(!o)throw new Error("[@mantine/core] MantineProvider was not found in tree");const s=h=>{o.setColorScheme(h),r.current=e?()=>{}:UU(i.current),window.clearTimeout(n.current),n.current=window.setTimeout(()=>{r.current?.()},10)},l=()=>{o.clearColorScheme(),r.current=e?()=>{}:UU(i.current),window.clearTimeout(n.current),n.current=window.setTimeout(()=>{r.current?.()},10)},c=vU("light",{getInitialValueInEffect:!1}),u=o.colorScheme==="auto"?c:o.colorScheme,d=E.useCallback(()=>s(u==="light"?"dark":"light"),[s,u]);return E.useEffect(()=>()=>{r.current?.(),window.clearTimeout(n.current)},[]),{colorScheme:o.colorScheme,setColorScheme:s,clearColorScheme:l,toggleColorScheme:d}}function He(e,r,n){const o=vo(),a=o.components[e]?.defaultProps,i=typeof a=="function"?a(o):a;return{...r,...i,...Uf(n)}}function c7(e){return zo(e).reduce((r,n)=>e[n]!==void 0?`${r}${IDe(n)}:${e[n]};`:r,"").trim()}function bMe({selector:e,styles:r,media:n,container:o}){const a=r?c7(r):"",i=Array.isArray(n)?n.map(l=>`@media${l.query}{${e}{${c7(l.styles)}}}`):[],s=Array.isArray(o)?o.map(l=>`@container ${l.query}{${e}{${c7(l.styles)}}}`):[];return`${a?`${e}{${a}}`:""}${i.join("")}${s.join("")}`.trim()}function c2(e){const r=yp();return y.jsx("style",{"data-mantine-styles":"inline",nonce:r?.(),dangerouslySetInnerHTML:{__html:bMe(e)}})}function WU(e){const{m:r,mx:n,my:o,mt:a,mb:i,ml:s,mr:l,me:c,ms:u,p:d,px:h,py:f,pt:g,pb:b,pl:x,pr:w,pe:k,ps:C,bd:_,bdrs:T,bg:A,c:R,opacity:D,ff:N,fz:M,fw:O,lts:F,ta:L,lh:U,fs:P,tt:V,td:I,w:H,miw:q,maw:Z,h:W,mih:G,mah:K,bgsz:j,bgp:Y,bgr:Q,bga:J,pos:ie,top:ne,left:re,bottom:ge,right:De,inset:he,display:me,flex:Te,hiddenFrom:Ie,visibleFrom:Ze,lightHidden:rt,darkHidden:Rt,sx:Qe,...Pt}=e;return{styleProps:Uf({m:r,mx:n,my:o,mt:a,mb:i,ml:s,mr:l,me:c,ms:u,p:d,px:h,py:f,pt:g,pb:b,pl:x,pr:w,pe:k,ps:C,bd:_,bg:A,c:R,opacity:D,ff:N,fz:M,fw:O,lts:F,ta:L,lh:U,fs:P,tt:V,td:I,w:H,miw:q,maw:Z,h:W,mih:G,mah:K,bgsz:j,bgp:Y,bgr:Q,bga:J,pos:ie,top:ne,left:re,bottom:ge,right:De,inset:he,display:me,flex:Te,bdrs:T,hiddenFrom:Ie,visibleFrom:Ze,lightHidden:rt,darkHidden:Rt,sx:Qe}),rest:Pt}}const vMe={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},ms:{type:"spacing",property:"marginInlineStart"},me:{type:"spacing",property:"marginInlineEnd"},mx:{type:"spacing",property:"marginInline"},my:{type:"spacing",property:"marginBlock"},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},ps:{type:"spacing",property:"paddingInlineStart"},pe:{type:"spacing",property:"paddingInlineEnd"},px:{type:"spacing",property:"paddingInline"},py:{type:"spacing",property:"paddingBlock"},bd:{type:"border",property:"border"},bdrs:{type:"radius",property:"borderRadius"},bg:{type:"color",property:"background"},c:{type:"textColor",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"fontFamily",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"lineHeight",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"size",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"},flex:{type:"identity",property:"flex"}};function u7(e,r){const n=Au({color:e,theme:r});return n.color==="dimmed"?"var(--mantine-color-dimmed)":n.color==="bright"?"var(--mantine-color-bright)":n.variable?`var(${n.variable})`:n.color}function xMe(e,r){const n=Au({color:e,theme:r});return n.isThemeColor&&n.shade===void 0?`var(--mantine-color-${n.color}-text)`:u7(e,r)}function wMe(e,r){if(typeof e=="number")return Me(e);if(typeof e=="string"){const[n,o,...a]=e.split(" ").filter(s=>s.trim()!=="");let i=`${Me(n)}`;return o&&(i+=` ${o}`),a.length>0&&(i+=` ${u7(a.join(" "),r)}`),i.trim()}return e}const YU={text:"var(--mantine-font-family)",mono:"var(--mantine-font-family-monospace)",monospace:"var(--mantine-font-family-monospace)",heading:"var(--mantine-font-family-headings)",headings:"var(--mantine-font-family-headings)"};function kMe(e){return typeof e=="string"&&e in YU?YU[e]:e}const _Me=["h1","h2","h3","h4","h5","h6"];function EMe(e,r){return typeof e=="string"&&e in r.fontSizes?`var(--mantine-font-size-${e})`:typeof e=="string"&&_Me.includes(e)?`var(--mantine-${e}-font-size)`:typeof e=="number"||typeof e=="string"?Me(e):e}function SMe(e){return e}const CMe=["h1","h2","h3","h4","h5","h6"];function TMe(e,r){return typeof e=="string"&&e in r.lineHeights?`var(--mantine-line-height-${e})`:typeof e=="string"&&CMe.includes(e)?`var(--mantine-${e}-line-height)`:e}function AMe(e,r){return typeof e=="string"&&e in r.radius?`var(--mantine-radius-${e})`:typeof e=="number"||typeof e=="string"?Me(e):e}function RMe(e){return typeof e=="number"?Me(e):e}function NMe(e,r){if(typeof e=="number")return Me(e);if(typeof e=="string"){const n=e.replace("-","");if(!(n in r.spacing))return Me(e);const o=`--mantine-spacing-${n}`;return e.startsWith("-")?`calc(var(${o}) * -1)`:`var(${o})`}return e}const d7={color:u7,textColor:xMe,fontSize:EMe,spacing:NMe,radius:AMe,identity:SMe,size:RMe,lineHeight:TMe,fontFamily:kMe,border:wMe};function GU(e){return e.replace("(min-width: ","").replace("em)","")}function DMe({media:e,...r}){const n=Object.keys(e).sort((o,a)=>Number(GU(o))-Number(GU(a))).map(o=>({query:o,styles:e[o]}));return{...r,media:n}}function $Me(e){if(typeof e!="object"||e===null)return!1;const r=Object.keys(e);return!(r.length===1&&r[0]==="base")}function MMe(e){return typeof e=="object"&&e!==null?"base"in e?e.base:void 0:e}function PMe(e){return typeof e=="object"&&e!==null?zo(e).filter(r=>r!=="base"):[]}function zMe(e,r){return typeof e=="object"&&e!==null&&r in e?e[r]:e}function XU({styleProps:e,data:r,theme:n}){return DMe(zo(e).reduce((o,a)=>{if(a==="hiddenFrom"||a==="visibleFrom"||a==="sx")return o;const i=r[a],s=Array.isArray(i.property)?i.property:[i.property],l=MMe(e[a]);if(!$Me(e[a]))return s.forEach(u=>{o.inlineStyles[u]=d7[i.type](l,n)}),o;o.hasResponsiveStyles=!0;const c=PMe(e[a]);return s.forEach(u=>{l!=null&&(o.styles[u]=d7[i.type](l,n)),c.forEach(d=>{const h=`(min-width: ${n.breakpoints[d]})`;o.media[h]={...o.media[h],[u]:d7[i.type](zMe(e[a],d),n)}})}),o},{hasResponsiveStyles:!1,styles:{},inlineStyles:{},media:{}}))}function u2(){return`__m__-${E.useId().replace(/[:«»]/g,"")}`}function p7(e,r){return Array.isArray(e)?[...e].reduce((n,o)=>({...n,...p7(o,r)}),{}):typeof e=="function"?e(r):e??{}}function KU(e){return e.startsWith("data-")?e:`data-${e}`}function IMe(e){return Object.keys(e).reduce((r,n)=>{const o=e[n];return o===void 0||o===""||o===!1||o===null||(r[KU(n)]=e[n]),r},{})}function ZU(e){return e?typeof e=="string"?{[KU(e)]:!0}:Array.isArray(e)?[...e].reduce((r,n)=>({...r,...ZU(n)}),{}):IMe(e):null}function h7(e,r){return Array.isArray(e)?[...e].reduce((n,o)=>({...n,...h7(o,r)}),{}):typeof e=="function"?e(r):e??{}}function OMe({theme:e,style:r,vars:n,styleProps:o}){const a=h7(r,e),i=h7(n,e);return{...a,...i,...o}}const QU=E.forwardRef(({component:e,style:r,__vars:n,className:o,variant:a,mod:i,size:s,hiddenFrom:l,visibleFrom:c,lightHidden:u,darkHidden:d,renderRoot:h,__size:f,...g},b)=>{const x=vo(),w=e||"div",{styleProps:k,rest:C}=WU(g),_=P$e()?.()?.(k.sx),T=u2(),A=XU({styleProps:k,theme:x,data:vMe}),R={ref:b,style:OMe({theme:x,style:r,vars:n,styleProps:A.inlineStyles}),className:hs(o,_,{[T]:A.hasResponsiveStyles,"mantine-light-hidden":u,"mantine-dark-hidden":d,[`mantine-hidden-from-${l}`]:l,[`mantine-visible-from-${c}`]:c}),"data-variant":a,"data-size":pU(s)?void 0:s||void 0,size:f,...ZU(i),...C};return y.jsxs(y.Fragment,{children:[A.hasResponsiveStyles&&y.jsx(c2,{selector:`.${T}`,styles:A.styles,media:A.media}),typeof h=="function"?h(R):y.jsx(w,{...R})]})});QU.displayName="@mantine/core/Box";const Re=QU;function JU(e){return e}function jMe(e){const r=e;return n=>{const o=E.forwardRef((a,i)=>y.jsx(r,{...n,...a,ref:i}));return o.extend=r.extend,o.displayName=`WithProps(${r.displayName})`,o}}function ht(e){const r=E.forwardRef(e);return r.extend=JU,r.withProps=n=>{const o=E.forwardRef((a,i)=>y.jsx(r,{...n,...a,ref:i}));return o.extend=r.extend,o.displayName=`WithProps(${r.displayName})`,o},r}function so(e){const r=E.forwardRef(e);return r.withProps=n=>{const o=E.forwardRef((a,i)=>y.jsx(r,{...n,...a,ref:i}));return o.extend=r.extend,o.displayName=`WithProps(${r.displayName})`,o},r.extend=JU,r}const LMe=E.createContext({dir:"ltr",toggleDirection:()=>{},setDirection:()=>{}});function Ru(){return E.useContext(LMe)}function BMe(e){if(!e||typeof e=="string")return 0;const r=e/36;return Math.round((4+15*r**.25+r/5)*10)}function f7(e){return e?.current?e.current.scrollHeight:"auto"}const d2=typeof window<"u"&&window.requestAnimationFrame,eW=0,FMe=e=>({height:0,overflow:"hidden",...e?{}:{display:"none"}});function HMe({transitionDuration:e,transitionTimingFunction:r="ease",onTransitionEnd:n=()=>{},opened:o,keepMounted:a=!1}){const i=E.useRef(null),s=FMe(a),[l,c]=E.useState(o?{}:s),u=b=>{Ki.flushSync(()=>c(b))},d=b=>{u(x=>({...x,...b}))};function h(b){const x=e||BMe(b);return{transition:`height ${x}ms ${r}, opacity ${x}ms ${r}`}}gp(()=>{typeof d2=="function"&&d2(o?()=>{d({willChange:"height",display:"block",overflow:"hidden"}),d2(()=>{const b=f7(i);d({...h(b),height:b})})}:()=>{const b=f7(i);d({...h(b),willChange:"height",height:b}),d2(()=>d({height:eW,overflow:"hidden"}))})},[o]);const f=b=>{if(!(b.target!==i.current||b.propertyName!=="height"))if(o){const x=f7(i);x===l.height?u({}):d({height:x}),n()}else l.height===eW&&(u(s),n())};function g({style:b={},refKey:x="ref",...w}={}){const k=w[x],C={"aria-hidden":!o,...w,[x]:SU(i,k),onTransitionEnd:f,style:{boxSizing:"border-box",...b,...l}};return dn.version.startsWith("18")?o||(C.inert=""):C.inert=!o,C}return g}const VMe={transitionDuration:200,transitionTimingFunction:"ease",animateOpacity:!0},tW=ht((e,r)=>{const{children:n,in:o,transitionDuration:a,transitionTimingFunction:i,style:s,onTransitionEnd:l,animateOpacity:c,keepMounted:u,...d}=He("Collapse",VMe,e),h=vo(),f=TU(),g=h.respectReducedMotion&&f?0:a,b=HMe({opened:o,transitionDuration:g,transitionTimingFunction:i,onTransitionEnd:l,keepMounted:u});return g===0?o?y.jsx(Re,{...d,children:n}):null:y.jsx(Re,{...b({style:{opacity:o||!c?1:0,transition:c?`opacity ${g}ms ${i}`:"none",...p7(s,h)},ref:r,...d}),children:n})});tW.displayName="@mantine/core/Collapse";function p2(){return typeof window<"u"}function Qf(e){return rW(e)?(e.nodeName||"").toLowerCase():"#document"}function da(e){var r;return(e==null||(r=e.ownerDocument)==null?void 0:r.defaultView)||window}function fl(e){var r;return(r=(rW(e)?e.ownerDocument:e.document)||window.document)==null?void 0:r.documentElement}function rW(e){return p2()?e instanceof Node||e instanceof da(e).Node:!1}function Vr(e){return p2()?e instanceof Element||e instanceof da(e).Element:!1}function Oa(e){return p2()?e instanceof HTMLElement||e instanceof da(e).HTMLElement:!1}function m7(e){return!p2()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof da(e).ShadowRoot}const qMe=new Set(["inline","contents"]);function z0(e){const{overflow:r,overflowX:n,overflowY:o,display:a}=mi(e);return/auto|scroll|overlay|hidden|clip/.test(r+o+n)&&!qMe.has(a)}const UMe=new Set(["table","td","th"]);function WMe(e){return UMe.has(Qf(e))}const YMe=[":popover-open",":modal"];function h2(e){return YMe.some(r=>{try{return e.matches(r)}catch{return!1}})}const GMe=["transform","translate","scale","rotate","perspective"],XMe=["transform","translate","scale","rotate","perspective","filter"],KMe=["paint","layout","strict","content"];function g7(e){const r=f2(),n=Vr(e)?mi(e):e;return GMe.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!r&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!r&&(n.filter?n.filter!=="none":!1)||XMe.some(o=>(n.willChange||"").includes(o))||KMe.some(o=>(n.contain||"").includes(o))}function ZMe(e){let r=pc(e);for(;Oa(r)&&!dc(r);){if(g7(r))return r;if(h2(r))return null;r=pc(r)}return null}function f2(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const QMe=new Set(["html","body","#document"]);function dc(e){return QMe.has(Qf(e))}function mi(e){return da(e).getComputedStyle(e)}function m2(e){return Vr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function pc(e){if(Qf(e)==="html")return e;const r=e.assignedSlot||e.parentNode||m7(e)&&e.host||fl(e);return m7(r)?r.host:r}function nW(e){const r=pc(e);return dc(r)?e.ownerDocument?e.ownerDocument.body:e.body:Oa(r)&&z0(r)?r:nW(r)}function hc(e,r,n){var o;r===void 0&&(r=[]),n===void 0&&(n=!0);const a=nW(e),i=a===((o=e.ownerDocument)==null?void 0:o.body),s=da(a);if(i){const l=y7(s);return r.concat(s,s.visualViewport||[],z0(a)?a:[],l&&n?hc(l):[])}return r.concat(a,hc(a,[],n))}function y7(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}const oW=["top","right","bottom","left"],aW=["start","end"],iW=oW.reduce((e,r)=>e.concat(r,r+"-"+aW[0],r+"-"+aW[1]),[]),fs=Math.min,Oo=Math.max,g2=Math.round,y2=Math.floor,ml=e=>({x:e,y:e}),JMe={left:"right",right:"left",bottom:"top",top:"bottom"},ePe={start:"end",end:"start"};function b7(e,r,n){return Oo(e,fs(r,n))}function ms(e,r){return typeof e=="function"?e(r):e}function ja(e){return e.split("-")[0]}function gs(e){return e.split("-")[1]}function v7(e){return e==="x"?"y":"x"}function x7(e){return e==="y"?"height":"width"}const tPe=new Set(["top","bottom"]);function ys(e){return tPe.has(ja(e))?"y":"x"}function w7(e){return v7(ys(e))}function sW(e,r,n){n===void 0&&(n=!1);const o=gs(e),a=w7(e),i=x7(a);let s=a==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return r.reference[i]>r.floating[i]&&(s=v2(s)),[s,v2(s)]}function rPe(e){const r=v2(e);return[b2(e),r,b2(r)]}function b2(e){return e.replace(/start|end/g,r=>ePe[r])}const lW=["left","right"],cW=["right","left"],nPe=["top","bottom"],oPe=["bottom","top"];function aPe(e,r,n){switch(e){case"top":case"bottom":return n?r?cW:lW:r?lW:cW;case"left":case"right":return r?nPe:oPe;default:return[]}}function iPe(e,r,n,o){const a=gs(e);let i=aPe(ja(e),n==="start",o);return a&&(i=i.map(s=>s+"-"+a),r&&(i=i.concat(i.map(b2)))),i}function v2(e){return e.replace(/left|right|bottom|top/g,r=>JMe[r])}function sPe(e){return{top:0,right:0,bottom:0,left:0,...e}}function k7(e){return typeof e!="number"?sPe(e):{top:e,right:e,bottom:e,left:e}}function Jf(e){const{x:r,y:n,width:o,height:a}=e;return{width:o,height:a,top:n,left:r,right:r+o,bottom:n+a,x:r,y:n}}function lPe(){const e=navigator.userAgentData;return e!=null&&e.platform?e.platform:navigator.platform}function cPe(){const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(r=>{let{brand:n,version:o}=r;return n+"/"+o}).join(" "):navigator.userAgent}function uPe(){return/apple/i.test(navigator.vendor)}function dPe(){return lPe().toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints}function pPe(){return cPe().includes("jsdom/")}const uW="data-floating-ui-focusable",hPe="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function dW(e){let r=e.activeElement;for(;((n=r)==null||(n=n.shadowRoot)==null?void 0:n.activeElement)!=null;){var n;r=r.shadowRoot.activeElement}return r}function I0(e,r){if(!e||!r)return!1;const n=r.getRootNode==null?void 0:r.getRootNode();if(e.contains(r))return!0;if(n&&m7(n)){let o=r;for(;o;){if(e===o)return!0;o=o.parentNode||o.host}}return!1}function em(e){return"composedPath"in e?e.composedPath()[0]:e.target}function _7(e,r){if(r==null)return!1;if("composedPath"in e)return e.composedPath().includes(r);const n=e;return n.target!=null&&r.contains(n.target)}function fPe(e){return e.matches("html,body")}function bp(e){return e?.ownerDocument||document}function mPe(e){return Oa(e)&&e.matches(hPe)}function gPe(e){if(!e||pPe())return!0;try{return e.matches(":focus-visible")}catch{return!0}}function yPe(e){return e?e.hasAttribute(uW)?e:e.querySelector("["+uW+"]")||e:null}function x2(e,r,n){return n===void 0&&(n=!0),e.filter(o=>{var a;return o.parentId===r&&(!n||((a=o.context)==null?void 0:a.open))}).flatMap(o=>[o,...x2(e,o.id,n)])}function bPe(e){return"nativeEvent"in e}function E7(e,r){const n=["mouse","pen"];return n.push("",void 0),n.includes(e)}var vPe=typeof document<"u",xPe=function(){},gl=vPe?E.useLayoutEffect:xPe;const wPe={...Hv};function w2(e){const r=E.useRef(e);return gl(()=>{r.current=e}),r}const kPe=wPe.useInsertionEffect,_Pe=kPe||(e=>e());function yl(e){const r=E.useRef(()=>{});return _Pe(()=>{r.current=e}),E.useCallback(function(){for(var n=arguments.length,o=new Array(n),a=0;a{const{placement:o="bottom",strategy:a="absolute",middleware:i=[],platform:s}=n,l=i.filter(Boolean),c=await(s.isRTL==null?void 0:s.isRTL(r));let u=await s.getElementRects({reference:e,floating:r,strategy:a}),{x:d,y:h}=pW(u,o,c),f=o,g={},b=0;for(let x=0;x({name:"arrow",options:e,async fn(r){const{x:n,y:o,placement:a,rects:i,platform:s,elements:l,middlewareData:c}=r,{element:u,padding:d=0}=ms(e,r)||{};if(u==null)return{};const h=k7(d),f={x:n,y:o},g=w7(a),b=x7(g),x=await s.getDimensions(u),w=g==="y",k=w?"top":"left",C=w?"bottom":"right",_=w?"clientHeight":"clientWidth",T=i.reference[b]+i.reference[g]-f[g]-i.floating[b],A=f[g]-i.reference[g],R=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let D=R?R[_]:0;(!D||!await(s.isElement==null?void 0:s.isElement(R)))&&(D=l.floating[_]||i.floating[b]);const N=T/2-A/2,M=D/2-x[b]/2-1,O=fs(h[k],M),F=fs(h[C],M),L=O,U=D-x[b]-F,P=D/2-x[b]/2+N,V=b7(L,P,U),I=!c.arrow&&gs(a)!=null&&P!==V&&i.reference[b]/2-(Pgs(o)===e),...n.filter(o=>gs(o)!==e)]:n.filter(o=>ja(o)===o)).filter(o=>e?gs(o)===e||(r?b2(o)!==o:!1):!0)}const TPe=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(r){var n,o,a;const{rects:i,middlewareData:s,placement:l,platform:c,elements:u}=r,{crossAxis:d=!1,alignment:h,allowedPlacements:f=iW,autoAlignment:g=!0,...b}=ms(e,r),x=h!==void 0||f===iW?CPe(h||null,g,f):f,w=await tm(r,b),k=((n=s.autoPlacement)==null?void 0:n.index)||0,C=x[k];if(C==null)return{};const _=sW(C,i,await(c.isRTL==null?void 0:c.isRTL(u.floating)));if(l!==C)return{reset:{placement:x[0]}};const T=[w[ja(C)],w[_[0]],w[_[1]]],A=[...((o=s.autoPlacement)==null?void 0:o.overflows)||[],{placement:C,overflows:T}],R=x[k+1];if(R)return{data:{index:k+1,overflows:A},reset:{placement:R}};const D=A.map(M=>{const O=gs(M.placement);return[M.placement,O&&d?M.overflows.slice(0,2).reduce((F,L)=>F+L,0):M.overflows[0],M.overflows]}).sort((M,O)=>M[1]-O[1]),N=((a=D.filter(M=>M[2].slice(0,gs(M[0])?2:3).every(O=>O<=0))[0])==null?void 0:a[0])||D[0][0];return N!==l?{data:{index:k+1,overflows:A},reset:{placement:N}}:{}}}},APe=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(r){var n,o;const{placement:a,middlewareData:i,rects:s,initialPlacement:l,platform:c,elements:u}=r,{mainAxis:d=!0,crossAxis:h=!0,fallbackPlacements:f,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:x=!0,...w}=ms(e,r);if((n=i.arrow)!=null&&n.alignmentOffset)return{};const k=ja(a),C=ys(l),_=ja(l)===l,T=await(c.isRTL==null?void 0:c.isRTL(u.floating)),A=f||(_||!x?[v2(l)]:rPe(l)),R=b!=="none";!f&&R&&A.push(...iPe(l,x,b,T));const D=[l,...A],N=await tm(r,w),M=[];let O=((o=i.flip)==null?void 0:o.overflows)||[];if(d&&M.push(N[k]),h){const P=sW(a,s,T);M.push(N[P[0]],N[P[1]])}if(O=[...O,{placement:a,overflows:M}],!M.every(P=>P<=0)){var F,L;const P=(((F=i.flip)==null?void 0:F.index)||0)+1,V=D[P];if(V&&(!(h==="alignment"&&C!==ys(V))||O.every(H=>ys(H.placement)===C?H.overflows[0]>0:!0)))return{data:{index:P,overflows:O},reset:{placement:V}};let I=(L=O.filter(H=>H.overflows[0]<=0).sort((H,q)=>H.overflows[1]-q.overflows[1])[0])==null?void 0:L.placement;if(!I)switch(g){case"bestFit":{var U;const H=(U=O.filter(q=>{if(R){const Z=ys(q.placement);return Z===C||Z==="y"}return!0}).map(q=>[q.placement,q.overflows.filter(Z=>Z>0).reduce((Z,W)=>Z+W,0)]).sort((q,Z)=>q[1]-Z[1])[0])==null?void 0:U[0];H&&(I=H);break}case"initialPlacement":I=l;break}if(a!==I)return{reset:{placement:I}}}return{}}}};function hW(e,r){return{top:e.top-r.height,right:e.right-r.width,bottom:e.bottom-r.height,left:e.left-r.width}}function fW(e){return oW.some(r=>e[r]>=0)}const RPe=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(r){const{rects:n}=r,{strategy:o="referenceHidden",...a}=ms(e,r);switch(o){case"referenceHidden":{const i=await tm(r,{...a,elementContext:"reference"}),s=hW(i,n.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:fW(s)}}}case"escaped":{const i=await tm(r,{...a,altBoundary:!0}),s=hW(i,n.floating);return{data:{escapedOffsets:s,escaped:fW(s)}}}default:return{}}}}};function mW(e){const r=fs(...e.map(i=>i.left)),n=fs(...e.map(i=>i.top)),o=Oo(...e.map(i=>i.right)),a=Oo(...e.map(i=>i.bottom));return{x:r,y:n,width:o-r,height:a-n}}function NPe(e){const r=e.slice().sort((a,i)=>a.y-i.y),n=[];let o=null;for(let a=0;ao.height/2?n.push([i]):n[n.length-1].push(i),o=i}return n.map(a=>Jf(mW(a)))}const DPe=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(r){const{placement:n,elements:o,rects:a,platform:i,strategy:s}=r,{padding:l=2,x:c,y:u}=ms(e,r),d=Array.from(await(i.getClientRects==null?void 0:i.getClientRects(o.reference))||[]),h=NPe(d),f=Jf(mW(d)),g=k7(l);function b(){if(h.length===2&&h[0].left>h[1].right&&c!=null&&u!=null)return h.find(w=>c>w.left-g.left&&cw.top-g.top&&u=2){if(ys(n)==="y"){const O=h[0],F=h[h.length-1],L=ja(n)==="top",U=O.top,P=F.bottom,V=L?O.left:F.left,I=L?O.right:F.right,H=I-V,q=P-U;return{top:U,bottom:P,left:V,right:I,width:H,height:q,x:V,y:U}}const w=ja(n)==="left",k=Oo(...h.map(O=>O.right)),C=fs(...h.map(O=>O.left)),_=h.filter(O=>w?O.left===C:O.right===k),T=_[0].top,A=_[_.length-1].bottom,R=C,D=k,N=D-R,M=A-T;return{top:T,bottom:A,left:R,right:D,width:N,height:M,x:R,y:T}}return f}const x=await i.getElementRects({reference:{getBoundingClientRect:b},floating:o.floating,strategy:s});return a.reference.x!==x.reference.x||a.reference.y!==x.reference.y||a.reference.width!==x.reference.width||a.reference.height!==x.reference.height?{reset:{rects:x}}:{}}}},gW=new Set(["left","top"]);async function $Pe(e,r){const{placement:n,platform:o,elements:a}=e,i=await(o.isRTL==null?void 0:o.isRTL(a.floating)),s=ja(n),l=gs(n),c=ys(n)==="y",u=gW.has(s)?-1:1,d=i&&c?-1:1,h=ms(r,e);let{mainAxis:f,crossAxis:g,alignmentAxis:b}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return l&&typeof b=="number"&&(g=l==="end"?b*-1:b),c?{x:g*d,y:f*u}:{x:f*u,y:g*d}}const MPe=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(r){var n,o;const{x:a,y:i,placement:s,middlewareData:l}=r,c=await $Pe(r,e);return s===((n=l.offset)==null?void 0:n.placement)&&(o=l.arrow)!=null&&o.alignmentOffset?{}:{x:a+c.x,y:i+c.y,data:{...c,placement:s}}}}},PPe=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(r){const{x:n,y:o,placement:a}=r,{mainAxis:i=!0,crossAxis:s=!1,limiter:l={fn:w=>{let{x:k,y:C}=w;return{x:k,y:C}}},...c}=ms(e,r),u={x:n,y:o},d=await tm(r,c),h=ys(ja(a)),f=v7(h);let g=u[f],b=u[h];if(i){const w=f==="y"?"top":"left",k=f==="y"?"bottom":"right",C=g+d[w],_=g-d[k];g=b7(C,g,_)}if(s){const w=h==="y"?"top":"left",k=h==="y"?"bottom":"right",C=b+d[w],_=b-d[k];b=b7(C,b,_)}const x=l.fn({...r,[f]:g,[h]:b});return{...x,data:{x:x.x-n,y:x.y-o,enabled:{[f]:i,[h]:s}}}}}},zPe=function(e){return e===void 0&&(e={}),{options:e,fn(r){const{x:n,y:o,placement:a,rects:i,middlewareData:s}=r,{offset:l=0,mainAxis:c=!0,crossAxis:u=!0}=ms(e,r),d={x:n,y:o},h=ys(a),f=v7(h);let g=d[f],b=d[h];const x=ms(l,r),w=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(c){const _=f==="y"?"height":"width",T=i.reference[f]-i.floating[_]+w.mainAxis,A=i.reference[f]+i.reference[_]-w.mainAxis;gA&&(g=A)}if(u){var k,C;const _=f==="y"?"width":"height",T=gW.has(ja(a)),A=i.reference[h]-i.floating[_]+(T&&((k=s.offset)==null?void 0:k[h])||0)+(T?0:w.crossAxis),R=i.reference[h]+i.reference[_]+(T?0:((C=s.offset)==null?void 0:C[h])||0)-(T?w.crossAxis:0);bR&&(b=R)}return{[f]:g,[h]:b}}}},IPe=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(r){var n,o;const{placement:a,rects:i,platform:s,elements:l}=r,{apply:c=()=>{},...u}=ms(e,r),d=await tm(r,u),h=ja(a),f=gs(a),g=ys(a)==="y",{width:b,height:x}=i.floating;let w,k;h==="top"||h==="bottom"?(w=h,k=f===(await(s.isRTL==null?void 0:s.isRTL(l.floating))?"start":"end")?"left":"right"):(k=h,w=f==="end"?"top":"bottom");const C=x-d.top-d.bottom,_=b-d.left-d.right,T=fs(x-d[w],C),A=fs(b-d[k],_),R=!r.middlewareData.shift;let D=T,N=A;if((n=r.middlewareData.shift)!=null&&n.enabled.x&&(N=_),(o=r.middlewareData.shift)!=null&&o.enabled.y&&(D=C),R&&!f){const O=Oo(d.left,0),F=Oo(d.right,0),L=Oo(d.top,0),U=Oo(d.bottom,0);g?N=b-2*(O!==0||F!==0?O+F:Oo(d.left,d.right)):D=x-2*(L!==0||U!==0?L+U:Oo(d.top,d.bottom))}await c({...r,availableWidth:N,availableHeight:D});const M=await s.getDimensions(l.floating);return b!==M.width||x!==M.height?{reset:{rects:!0}}:{}}}};function yW(e){const r=mi(e);let n=parseFloat(r.width)||0,o=parseFloat(r.height)||0;const a=Oa(e),i=a?e.offsetWidth:n,s=a?e.offsetHeight:o,l=g2(n)!==i||g2(o)!==s;return l&&(n=i,o=s),{width:n,height:o,$:l}}function S7(e){return Vr(e)?e:e.contextElement}function rm(e){const r=S7(e);if(!Oa(r))return ml(1);const n=r.getBoundingClientRect(),{width:o,height:a,$:i}=yW(r);let s=(i?g2(n.width):n.width)/o,l=(i?g2(n.height):n.height)/a;return(!s||!Number.isFinite(s))&&(s=1),(!l||!Number.isFinite(l))&&(l=1),{x:s,y:l}}const OPe=ml(0);function bW(e){const r=da(e);return!f2()||!r.visualViewport?OPe:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function jPe(e,r,n){return r===void 0&&(r=!1),!n||r&&n!==da(e)?!1:r}function vp(e,r,n,o){r===void 0&&(r=!1),n===void 0&&(n=!1);const a=e.getBoundingClientRect(),i=S7(e);let s=ml(1);r&&(o?Vr(o)&&(s=rm(o)):s=rm(e));const l=jPe(i,n,o)?bW(i):ml(0);let c=(a.left+l.x)/s.x,u=(a.top+l.y)/s.y,d=a.width/s.x,h=a.height/s.y;if(i){const f=da(i),g=o&&Vr(o)?da(o):o;let b=f,x=y7(b);for(;x&&o&&g!==b;){const w=rm(x),k=x.getBoundingClientRect(),C=mi(x),_=k.left+(x.clientLeft+parseFloat(C.paddingLeft))*w.x,T=k.top+(x.clientTop+parseFloat(C.paddingTop))*w.y;c*=w.x,u*=w.y,d*=w.x,h*=w.y,c+=_,u+=T,b=da(x),x=y7(b)}}return Jf({width:d,height:h,x:c,y:u})}function k2(e,r){const n=m2(e).scrollLeft;return r?r.left+n:vp(fl(e)).left+n}function vW(e,r){const n=e.getBoundingClientRect(),o=n.left+r.scrollLeft-k2(e,n),a=n.top+r.scrollTop;return{x:o,y:a}}function LPe(e){let{elements:r,rect:n,offsetParent:o,strategy:a}=e;const i=a==="fixed",s=fl(o),l=r?h2(r.floating):!1;if(o===s||l&&i)return n;let c={scrollLeft:0,scrollTop:0},u=ml(1);const d=ml(0),h=Oa(o);if((h||!h&&!i)&&((Qf(o)!=="body"||z0(s))&&(c=m2(o)),Oa(o))){const g=vp(o);u=rm(o),d.x=g.x+o.clientLeft,d.y=g.y+o.clientTop}const f=s&&!h&&!i?vW(s,c):ml(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-c.scrollLeft*u.x+d.x+f.x,y:n.y*u.y-c.scrollTop*u.y+d.y+f.y}}function BPe(e){return Array.from(e.getClientRects())}function FPe(e){const r=fl(e),n=m2(e),o=e.ownerDocument.body,a=Oo(r.scrollWidth,r.clientWidth,o.scrollWidth,o.clientWidth),i=Oo(r.scrollHeight,r.clientHeight,o.scrollHeight,o.clientHeight);let s=-n.scrollLeft+k2(e);const l=-n.scrollTop;return mi(o).direction==="rtl"&&(s+=Oo(r.clientWidth,o.clientWidth)-a),{width:a,height:i,x:s,y:l}}const xW=25;function HPe(e,r){const n=da(e),o=fl(e),a=n.visualViewport;let i=o.clientWidth,s=o.clientHeight,l=0,c=0;if(a){i=a.width,s=a.height;const d=f2();(!d||d&&r==="fixed")&&(l=a.offsetLeft,c=a.offsetTop)}const u=k2(o);if(u<=0){const d=o.ownerDocument,h=d.body,f=getComputedStyle(h),g=d.compatMode==="CSS1Compat"&&parseFloat(f.marginLeft)+parseFloat(f.marginRight)||0,b=Math.abs(o.clientWidth-h.clientWidth-g);b<=xW&&(i-=b)}else u<=xW&&(i+=u);return{width:i,height:s,x:l,y:c}}const VPe=new Set(["absolute","fixed"]);function qPe(e,r){const n=vp(e,!0,r==="fixed"),o=n.top+e.clientTop,a=n.left+e.clientLeft,i=Oa(e)?rm(e):ml(1),s=e.clientWidth*i.x,l=e.clientHeight*i.y,c=a*i.x,u=o*i.y;return{width:s,height:l,x:c,y:u}}function wW(e,r,n){let o;if(r==="viewport")o=HPe(e,n);else if(r==="document")o=FPe(fl(e));else if(Vr(r))o=qPe(r,n);else{const a=bW(e);o={x:r.x-a.x,y:r.y-a.y,width:r.width,height:r.height}}return Jf(o)}function kW(e,r){const n=pc(e);return n===r||!Vr(n)||dc(n)?!1:mi(n).position==="fixed"||kW(n,r)}function UPe(e,r){const n=r.get(e);if(n)return n;let o=hc(e,[],!1).filter(l=>Vr(l)&&Qf(l)!=="body"),a=null;const i=mi(e).position==="fixed";let s=i?pc(e):e;for(;Vr(s)&&!dc(s);){const l=mi(s),c=g7(s);!c&&l.position==="fixed"&&(a=null),(i?!c&&!a:!c&&l.position==="static"&&a&&VPe.has(a.position)||z0(s)&&!c&&kW(e,s))?o=o.filter(u=>u!==s):a=l,s=pc(s)}return r.set(e,o),o}function WPe(e){let{element:r,boundary:n,rootBoundary:o,strategy:a}=e;const i=[...n==="clippingAncestors"?h2(r)?[]:UPe(r,this._c):[].concat(n),o],s=i[0],l=i.reduce((c,u)=>{const d=wW(r,u,a);return c.top=Oo(d.top,c.top),c.right=fs(d.right,c.right),c.bottom=fs(d.bottom,c.bottom),c.left=Oo(d.left,c.left),c},wW(r,s,a));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function YPe(e){const{width:r,height:n}=yW(e);return{width:r,height:n}}function GPe(e,r,n){const o=Oa(r),a=fl(r),i=n==="fixed",s=vp(e,!0,i,r);let l={scrollLeft:0,scrollTop:0};const c=ml(0);function u(){c.x=k2(a)}if(o||!o&&!i)if((Qf(r)!=="body"||z0(a))&&(l=m2(r)),o){const g=vp(r,!0,i,r);c.x=g.x+r.clientLeft,c.y=g.y+r.clientTop}else a&&u();i&&!o&&a&&u();const d=a&&!o&&!i?vW(a,l):ml(0),h=s.left+l.scrollLeft-c.x-d.x,f=s.top+l.scrollTop-c.y-d.y;return{x:h,y:f,width:s.width,height:s.height}}function C7(e){return mi(e).position==="static"}function _W(e,r){if(!Oa(e)||mi(e).position==="fixed")return null;if(r)return r(e);let n=e.offsetParent;return fl(e)===n&&(n=n.ownerDocument.body),n}function EW(e,r){const n=da(e);if(h2(e))return n;if(!Oa(e)){let a=pc(e);for(;a&&!dc(a);){if(Vr(a)&&!C7(a))return a;a=pc(a)}return n}let o=_W(e,r);for(;o&&WMe(o)&&C7(o);)o=_W(o,r);return o&&dc(o)&&C7(o)&&!g7(o)?n:o||ZMe(e)||n}const XPe=async function(e){const r=this.getOffsetParent||EW,n=this.getDimensions,o=await n(e.floating);return{reference:GPe(e.reference,await r(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function KPe(e){return mi(e).direction==="rtl"}const ZPe={convertOffsetParentRelativeRectToViewportRelativeRect:LPe,getDocumentElement:fl,getClippingRect:WPe,getOffsetParent:EW,getElementRects:XPe,getClientRects:BPe,getDimensions:YPe,getScale:rm,isElement:Vr,isRTL:KPe};function SW(e,r){return e.x===r.x&&e.y===r.y&&e.width===r.width&&e.height===r.height}function QPe(e,r){let n=null,o;const a=fl(e);function i(){var l;clearTimeout(o),(l=n)==null||l.disconnect(),n=null}function s(l,c){l===void 0&&(l=!1),c===void 0&&(c=1),i();const u=e.getBoundingClientRect(),{left:d,top:h,width:f,height:g}=u;if(l||r(),!f||!g)return;const b=y2(h),x=y2(a.clientWidth-(d+f)),w=y2(a.clientHeight-(h+g)),k=y2(d),C={rootMargin:-b+"px "+-x+"px "+-w+"px "+-k+"px",threshold:Oo(0,fs(1,c))||1};let _=!0;function T(A){const R=A[0].intersectionRatio;if(R!==c){if(!_)return s();R?s(!1,R):o=setTimeout(()=>{s(!1,1e-7)},1e3)}R===1&&!SW(u,e.getBoundingClientRect())&&s(),_=!1}try{n=new IntersectionObserver(T,{...C,root:a.ownerDocument})}catch{n=new IntersectionObserver(T,C)}n.observe(e)}return s(!0),i}function _2(e,r,n,o){o===void 0&&(o={});const{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:c=!1}=o,u=S7(e),d=a||i?[...u?hc(u):[],...hc(r)]:[];d.forEach(k=>{a&&k.addEventListener("scroll",n,{passive:!0}),i&&k.addEventListener("resize",n)});const h=u&&l?QPe(u,n):null;let f=-1,g=null;s&&(g=new ResizeObserver(k=>{let[C]=k;C&&C.target===u&&g&&(g.unobserve(r),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=g)==null||_.observe(r)})),n()}),u&&!c&&g.observe(u),g.observe(r));let b,x=c?vp(e):null;c&&w();function w(){const k=vp(e);x&&!SW(x,k)&&n(),x=k,b=requestAnimationFrame(w)}return n(),()=>{var k;d.forEach(C=>{a&&C.removeEventListener("scroll",n),i&&C.removeEventListener("resize",n)}),h?.(),(k=g)==null||k.disconnect(),g=null,c&&cancelAnimationFrame(b)}}const CW=MPe,JPe=TPe,eze=PPe,tze=APe,TW=IPe,AW=RPe,RW=SPe,rze=DPe,nze=zPe,NW=(e,r,n)=>{const o=new Map,a={platform:ZPe,...n},i={...a.platform,_c:o};return EPe(e,r,{...a,platform:i})};var oze=typeof document<"u",aze=function(){},E2=oze?E.useLayoutEffect:aze;function S2(e,r){if(e===r)return!0;if(typeof e!=typeof r)return!1;if(typeof e=="function"&&e.toString()===r.toString())return!0;let n,o,a;if(e&&r&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==r.length)return!1;for(o=n;o--!==0;)if(!S2(e[o],r[o]))return!1;return!0}if(a=Object.keys(e),n=a.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(r,a[o]))return!1;for(o=n;o--!==0;){const i=a[o];if(!(i==="_owner"&&e.$$typeof)&&!S2(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}function DW(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function $W(e,r){const n=DW(e);return Math.round(r*n)/n}function T7(e){const r=E.useRef(e);return E2(()=>{r.current=e}),r}function ize(e){e===void 0&&(e={});const{placement:r="bottom",strategy:n="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:s}={},transform:l=!0,whileElementsMounted:c,open:u}=e,[d,h]=E.useState({x:0,y:0,strategy:n,placement:r,middlewareData:{},isPositioned:!1}),[f,g]=E.useState(o);S2(f,o)||g(o);const[b,x]=E.useState(null),[w,k]=E.useState(null),C=E.useCallback(q=>{q!==R.current&&(R.current=q,x(q))},[]),_=E.useCallback(q=>{q!==D.current&&(D.current=q,k(q))},[]),T=i||b,A=s||w,R=E.useRef(null),D=E.useRef(null),N=E.useRef(d),M=c!=null,O=T7(c),F=T7(a),L=T7(u),U=E.useCallback(()=>{if(!R.current||!D.current)return;const q={placement:r,strategy:n,middleware:f};F.current&&(q.platform=F.current),NW(R.current,D.current,q).then(Z=>{const W={...Z,isPositioned:L.current!==!1};P.current&&!S2(N.current,W)&&(N.current=W,Ki.flushSync(()=>{h(W)}))})},[f,r,n,F,L]);E2(()=>{u===!1&&N.current.isPositioned&&(N.current.isPositioned=!1,h(q=>({...q,isPositioned:!1})))},[u]);const P=E.useRef(!1);E2(()=>(P.current=!0,()=>{P.current=!1}),[]),E2(()=>{if(T&&(R.current=T),A&&(D.current=A),T&&A){if(O.current)return O.current(T,A,U);U()}},[T,A,U,O,M]);const V=E.useMemo(()=>({reference:R,floating:D,setReference:C,setFloating:_}),[C,_]),I=E.useMemo(()=>({reference:T,floating:A}),[T,A]),H=E.useMemo(()=>{const q={position:n,left:0,top:0};if(!I.floating)return q;const Z=$W(I.floating,d.x),W=$W(I.floating,d.y);return l?{...q,transform:"translate("+Z+"px, "+W+"px)",...DW(I.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:Z,top:W}},[n,l,I.floating,d.x,d.y]);return E.useMemo(()=>({...d,update:U,refs:V,elements:I,floatingStyles:H}),[d,U,V,I,H])}const sze=e=>{function r(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:a}=typeof e=="function"?e(n):e;return o&&r(o)?o.current!=null?RW({element:o.current,padding:a}).fn(n):{}:o?RW({element:o,padding:a}).fn(n):{}}}},MW=(e,r)=>({...CW(e),options:[e,r]}),A7=(e,r)=>({...eze(e),options:[e,r]}),PW=(e,r)=>({...nze(e),options:[e,r]}),C2=(e,r)=>({...tze(e),options:[e,r]}),lze=(e,r)=>({...TW(e),options:[e,r]}),cze=(e,r)=>({...AW(e),options:[e,r]}),O0=(e,r)=>({...rze(e),options:[e,r]}),zW=(e,r)=>({...sze(e),options:[e,r]});function IW(e){const r=E.useRef(void 0),n=E.useCallback(o=>{const a=e.map(i=>{if(i!=null){if(typeof i=="function"){const s=i,l=s(o);return typeof l=="function"?l:()=>{s(null)}}return i.current=o,()=>{i.current=null}}});return()=>{a.forEach(i=>i?.())}},e);return E.useMemo(()=>e.every(o=>o==null)?null:o=>{r.current&&(r.current(),r.current=void 0),o!=null&&(r.current=n(o))},e)}const uze="data-floating-ui-focusable",OW="active",jW="selected",dze={...Hv};let LW=!1,pze=0;const BW=()=>"floating-ui-"+Math.random().toString(36).slice(2,6)+pze++;function hze(){const[e,r]=E.useState(()=>LW?BW():void 0);return gl(()=>{e==null&&r(BW())},[]),E.useEffect(()=>{LW=!0},[]),e}const fze=dze.useId,FW=fze||hze;function mze(){const e=new Map;return{emit(r,n){var o;(o=e.get(r))==null||o.forEach(a=>a(n))},on(r,n){e.has(r)||e.set(r,new Set),e.get(r).add(n)},off(r,n){var o;(o=e.get(r))==null||o.delete(n)}}}const gze=E.createContext(null),yze=E.createContext(null),R7=()=>{var e;return((e=E.useContext(gze))==null?void 0:e.id)||null},N7=()=>E.useContext(yze);function D7(e){return"data-floating-ui-"+e}function gi(e){e.current!==-1&&(clearTimeout(e.current),e.current=-1)}const HW=D7("safe-polygon");function T2(e,r,n){if(n&&!E7(n))return 0;if(typeof e=="number")return e;if(typeof e=="function"){const o=e();return typeof o=="number"?o:o?.[r]}return e?.[r]}function $7(e){return typeof e=="function"?e():e}function VW(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,dataRef:a,events:i,elements:s}=e,{enabled:l=!0,delay:c=0,handleClose:u=null,mouseOnly:d=!1,restMs:h=0,move:f=!0}=r,g=N7(),b=R7(),x=w2(u),w=w2(c),k=w2(n),C=w2(h),_=E.useRef(),T=E.useRef(-1),A=E.useRef(),R=E.useRef(-1),D=E.useRef(!0),N=E.useRef(!1),M=E.useRef(()=>{}),O=E.useRef(!1),F=yl(()=>{var H;const q=(H=a.current.openEvent)==null?void 0:H.type;return q?.includes("mouse")&&q!=="mousedown"});E.useEffect(()=>{if(!l)return;function H(q){let{open:Z}=q;Z||(gi(T),gi(R),D.current=!0,O.current=!1)}return i.on("openchange",H),()=>{i.off("openchange",H)}},[l,i]),E.useEffect(()=>{if(!l||!x.current||!n)return;function H(Z){F()&&o(!1,Z,"hover")}const q=bp(s.floating).documentElement;return q.addEventListener("mouseleave",H),()=>{q.removeEventListener("mouseleave",H)}},[s.floating,n,o,l,x,F]);const L=E.useCallback(function(H,q,Z){q===void 0&&(q=!0),Z===void 0&&(Z="hover");const W=T2(w.current,"close",_.current);W&&!A.current?(gi(T),T.current=window.setTimeout(()=>o(!1,H,Z),W)):q&&(gi(T),o(!1,H,Z))},[w,o]),U=yl(()=>{M.current(),A.current=void 0}),P=yl(()=>{if(N.current){const H=bp(s.floating).body;H.style.pointerEvents="",H.removeAttribute(HW),N.current=!1}}),V=yl(()=>a.current.openEvent?["click","mousedown"].includes(a.current.openEvent.type):!1);E.useEffect(()=>{if(!l)return;function H(K){if(gi(T),D.current=!1,d&&!E7(_.current)||$7(C.current)>0&&!T2(w.current,"open"))return;const j=T2(w.current,"open",_.current);j?T.current=window.setTimeout(()=>{k.current||o(!0,K,"hover")},j):n||o(!0,K,"hover")}function q(K){if(V()){P();return}M.current();const j=bp(s.floating);if(gi(R),O.current=!1,x.current&&a.current.floatingContext){n||gi(T),A.current=x.current({...a.current.floatingContext,tree:g,x:K.clientX,y:K.clientY,onClose(){P(),U(),V()||L(K,!0,"safe-polygon")}});const Y=A.current;j.addEventListener("mousemove",Y),M.current=()=>{j.removeEventListener("mousemove",Y)};return}(_.current!=="touch"||!I0(s.floating,K.relatedTarget))&&L(K)}function Z(K){V()||a.current.floatingContext&&(x.current==null||x.current({...a.current.floatingContext,tree:g,x:K.clientX,y:K.clientY,onClose(){P(),U(),V()||L(K)}})(K))}function W(){gi(T)}function G(K){V()||L(K,!1)}if(Vr(s.domReference)){const K=s.domReference,j=s.floating;return n&&K.addEventListener("mouseleave",Z),f&&K.addEventListener("mousemove",H,{once:!0}),K.addEventListener("mouseenter",H),K.addEventListener("mouseleave",q),j&&(j.addEventListener("mouseleave",Z),j.addEventListener("mouseenter",W),j.addEventListener("mouseleave",G)),()=>{n&&K.removeEventListener("mouseleave",Z),f&&K.removeEventListener("mousemove",H),K.removeEventListener("mouseenter",H),K.removeEventListener("mouseleave",q),j&&(j.removeEventListener("mouseleave",Z),j.removeEventListener("mouseenter",W),j.removeEventListener("mouseleave",G))}}},[s,l,e,d,f,L,U,P,o,n,k,g,w,x,a,V,C]),gl(()=>{var H;if(l&&n&&(H=x.current)!=null&&(H=H.__options)!=null&&H.blockPointerEvents&&F()){N.current=!0;const Z=s.floating;if(Vr(s.domReference)&&Z){var q;const W=bp(s.floating).body;W.setAttribute(HW,"");const G=s.domReference,K=g==null||(q=g.nodesRef.current.find(j=>j.id===b))==null||(q=q.context)==null?void 0:q.elements.floating;return K&&(K.style.pointerEvents=""),W.style.pointerEvents="none",G.style.pointerEvents="auto",Z.style.pointerEvents="auto",()=>{W.style.pointerEvents="",G.style.pointerEvents="",Z.style.pointerEvents=""}}}},[l,n,b,s,g,x,F]),gl(()=>{n||(_.current=void 0,O.current=!1,U(),P())},[n,U,P]),E.useEffect(()=>()=>{U(),gi(T),gi(R),P()},[l,s.domReference,U,P]);const I=E.useMemo(()=>{function H(q){_.current=q.pointerType}return{onPointerDown:H,onPointerEnter:H,onMouseMove(q){const{nativeEvent:Z}=q;function W(){!D.current&&!k.current&&o(!0,Z,"hover")}d&&!E7(_.current)||n||$7(C.current)===0||O.current&&q.movementX**2+q.movementY**2<2||(gi(R),_.current==="touch"?W():(O.current=!0,R.current=window.setTimeout(W,$7(C.current))))}}},[d,o,n,k,C]);return E.useMemo(()=>l?{reference:I}:{},[l,I])}const M7=()=>{},qW=E.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:M7,setState:M7,isInstantPhase:!1}),bze=()=>E.useContext(qW);function UW(e){const{children:r,delay:n,timeoutMs:o=0}=e,[a,i]=E.useReducer((c,u)=>({...c,...u}),{delay:n,timeoutMs:o,initialDelay:n,currentId:null,isInstantPhase:!1}),s=E.useRef(null),l=E.useCallback(c=>{i({currentId:c})},[]);return gl(()=>{a.currentId?s.current===null?s.current=a.currentId:a.isInstantPhase||i({isInstantPhase:!0}):(a.isInstantPhase&&i({isInstantPhase:!1}),s.current=null)},[a.currentId,a.isInstantPhase]),y.jsx(qW.Provider,{value:E.useMemo(()=>({...a,setState:i,setCurrentId:l}),[a,l]),children:r})}function WW(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,floatingId:a}=e,{id:i,enabled:s=!0}=r,l=i??a,c=bze(),{currentId:u,setCurrentId:d,initialDelay:h,setState:f,timeoutMs:g}=c;return gl(()=>{s&&u&&(f({delay:{open:1,close:T2(h,"close")}}),u!==l&&o(!1))},[s,l,o,f,u,h]),gl(()=>{function b(){o(!1),f({delay:h,currentId:null})}if(s&&u&&!n&&u===l){if(g){const x=window.setTimeout(b,g);return()=>{clearTimeout(x)}}b()}},[s,n,f,u,l,o,h,g]),gl(()=>{s&&(d===M7||!n||d(l))},[s,n,d,l]),c}const vze={pointerdown:"onPointerDown",mousedown:"onMouseDown",click:"onClick"},xze={pointerdown:"onPointerDownCapture",mousedown:"onMouseDownCapture",click:"onClickCapture"},YW=e=>{var r,n;return{escapeKey:typeof e=="boolean"?e:(r=e?.escapeKey)!=null?r:!1,outsidePress:typeof e=="boolean"?e:(n=e?.outsidePress)!=null?n:!0}};function GW(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,elements:a,dataRef:i}=e,{enabled:s=!0,escapeKey:l=!0,outsidePress:c=!0,outsidePressEvent:u="pointerdown",referencePress:d=!1,referencePressEvent:h="pointerdown",ancestorScroll:f=!1,bubbles:g,capture:b}=r,x=N7(),w=yl(typeof c=="function"?c:()=>!1),k=typeof c=="function"?w:c,C=E.useRef(!1),{escapeKey:_,outsidePress:T}=YW(g),{escapeKey:A,outsidePress:R}=YW(b),D=E.useRef(!1),N=yl(P=>{var V;if(!n||!s||!l||P.key!=="Escape"||D.current)return;const I=(V=i.current.floatingContext)==null?void 0:V.nodeId,H=x?x2(x.nodesRef.current,I):[];if(!_&&(P.stopPropagation(),H.length>0)){let q=!0;if(H.forEach(Z=>{var W;if((W=Z.context)!=null&&W.open&&!Z.context.dataRef.current.__escapeKeyBubbles){q=!1;return}}),!q)return}o(!1,bPe(P)?P.nativeEvent:P,"escape-key")}),M=yl(P=>{var V;const I=()=>{var H;N(P),(H=em(P))==null||H.removeEventListener("keydown",I)};(V=em(P))==null||V.addEventListener("keydown",I)}),O=yl(P=>{var V;const I=i.current.insideReactTree;i.current.insideReactTree=!1;const H=C.current;if(C.current=!1,u==="click"&&H||I||typeof k=="function"&&!k(P))return;const q=em(P),Z="["+D7("inert")+"]",W=bp(a.floating).querySelectorAll(Z);let G=Vr(q)?q:null;for(;G&&!dc(G);){const Q=pc(G);if(dc(Q)||!Vr(Q))break;G=Q}if(W.length&&Vr(q)&&!fPe(q)&&!I0(q,a.floating)&&Array.from(W).every(Q=>!I0(G,Q)))return;if(Oa(q)&&U){const Q=dc(q),J=mi(q),ie=/auto|scroll/,ne=Q||ie.test(J.overflowX),re=Q||ie.test(J.overflowY),ge=ne&&q.clientWidth>0&&q.scrollWidth>q.clientWidth,De=re&&q.clientHeight>0&&q.scrollHeight>q.clientHeight,he=J.direction==="rtl",me=De&&(he?P.offsetX<=q.offsetWidth-q.clientWidth:P.offsetX>q.clientWidth),Te=ge&&P.offsetY>q.clientHeight;if(me||Te)return}const K=(V=i.current.floatingContext)==null?void 0:V.nodeId,j=x&&x2(x.nodesRef.current,K).some(Q=>{var J;return _7(P,(J=Q.context)==null?void 0:J.elements.floating)});if(_7(P,a.floating)||_7(P,a.domReference)||j)return;const Y=x?x2(x.nodesRef.current,K):[];if(Y.length>0){let Q=!0;if(Y.forEach(J=>{var ie;if((ie=J.context)!=null&&ie.open&&!J.context.dataRef.current.__outsidePressBubbles){Q=!1;return}}),!Q)return}o(!1,P,"outside-press")}),F=yl(P=>{var V;const I=()=>{var H;O(P),(H=em(P))==null||H.removeEventListener(u,I)};(V=em(P))==null||V.addEventListener(u,I)});E.useEffect(()=>{if(!n||!s)return;i.current.__escapeKeyBubbles=_,i.current.__outsidePressBubbles=T;let P=-1;function V(W){o(!1,W,"ancestor-scroll")}function I(){window.clearTimeout(P),D.current=!0}function H(){P=window.setTimeout(()=>{D.current=!1},f2()?5:0)}const q=bp(a.floating);l&&(q.addEventListener("keydown",A?M:N,A),q.addEventListener("compositionstart",I),q.addEventListener("compositionend",H)),k&&q.addEventListener(u,R?F:O,R);let Z=[];return f&&(Vr(a.domReference)&&(Z=hc(a.domReference)),Vr(a.floating)&&(Z=Z.concat(hc(a.floating))),!Vr(a.reference)&&a.reference&&a.reference.contextElement&&(Z=Z.concat(hc(a.reference.contextElement)))),Z=Z.filter(W=>{var G;return W!==((G=q.defaultView)==null?void 0:G.visualViewport)}),Z.forEach(W=>{W.addEventListener("scroll",V,{passive:!0})}),()=>{l&&(q.removeEventListener("keydown",A?M:N,A),q.removeEventListener("compositionstart",I),q.removeEventListener("compositionend",H)),k&&q.removeEventListener(u,R?F:O,R),Z.forEach(W=>{W.removeEventListener("scroll",V)}),window.clearTimeout(P)}},[i,a,l,k,u,n,o,f,s,_,T,N,A,M,O,R,F]),E.useEffect(()=>{i.current.insideReactTree=!1},[i,k,u]);const L=E.useMemo(()=>({onKeyDown:N,...d&&{[vze[h]]:P=>{o(!1,P.nativeEvent,"reference-press")},...h!=="click"&&{onClick(P){o(!1,P.nativeEvent,"reference-press")}}}}),[N,o,d,h]),U=E.useMemo(()=>({onKeyDown:N,onMouseDown(){C.current=!0},onMouseUp(){C.current=!0},[xze[u]]:()=>{i.current.insideReactTree=!0}}),[N,u,i]);return E.useMemo(()=>s?{reference:L,floating:U}:{},[s,L,U])}function wze(e){const{open:r=!1,onOpenChange:n,elements:o}=e,a=FW(),i=E.useRef({}),[s]=E.useState(()=>mze()),l=R7()!=null,[c,u]=E.useState(o.reference),d=yl((g,b,x)=>{i.current.openEvent=g?b:void 0,s.emit("openchange",{open:g,event:b,reason:x,nested:l}),n?.(g,b,x)}),h=E.useMemo(()=>({setPositionReference:u}),[]),f=E.useMemo(()=>({reference:c||o.reference||null,floating:o.floating||null,domReference:o.reference}),[c,o.reference,o.floating]);return E.useMemo(()=>({dataRef:i,open:r,onOpenChange:d,elements:f,events:s,floatingId:a,refs:h}),[r,d,f,s,a,h])}function A2(e){e===void 0&&(e={});const{nodeId:r}=e,n=wze({...e,elements:{reference:null,floating:null,...e.elements}}),o=e.rootContext||n,a=o.elements,[i,s]=E.useState(null),[l,c]=E.useState(null),u=a?.domReference||i,d=E.useRef(null),h=N7();gl(()=>{u&&(d.current=u)},[u]);const f=ize({...e,elements:{...a,...l&&{reference:l}}}),g=E.useCallback(C=>{const _=Vr(C)?{getBoundingClientRect:()=>C.getBoundingClientRect(),getClientRects:()=>C.getClientRects(),contextElement:C}:C;c(_),f.refs.setReference(_)},[f.refs]),b=E.useCallback(C=>{(Vr(C)||C===null)&&(d.current=C,s(C)),(Vr(f.refs.reference.current)||f.refs.reference.current===null||C!==null&&!Vr(C))&&f.refs.setReference(C)},[f.refs]),x=E.useMemo(()=>({...f.refs,setReference:b,setPositionReference:g,domReference:d}),[f.refs,b,g]),w=E.useMemo(()=>({...f.elements,domReference:u}),[f.elements,u]),k=E.useMemo(()=>({...f,...o,refs:x,elements:w,nodeId:r}),[f,x,w,r,o]);return gl(()=>{o.dataRef.current.floatingContext=k;const C=h?.nodesRef.current.find(_=>_.id===r);C&&(C.context=k)}),E.useMemo(()=>({...f,context:k,refs:x,elements:w}),[f,x,w,k])}function P7(){return dPe()&&uPe()}function kze(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,events:a,dataRef:i,elements:s}=e,{enabled:l=!0,visibleOnly:c=!0}=r,u=E.useRef(!1),d=E.useRef(-1),h=E.useRef(!0);E.useEffect(()=>{if(!l)return;const g=da(s.domReference);function b(){!n&&Oa(s.domReference)&&s.domReference===dW(bp(s.domReference))&&(u.current=!0)}function x(){h.current=!0}function w(){h.current=!1}return g.addEventListener("blur",b),P7()&&(g.addEventListener("keydown",x,!0),g.addEventListener("pointerdown",w,!0)),()=>{g.removeEventListener("blur",b),P7()&&(g.removeEventListener("keydown",x,!0),g.removeEventListener("pointerdown",w,!0))}},[s.domReference,n,l]),E.useEffect(()=>{if(!l)return;function g(b){let{reason:x}=b;(x==="reference-press"||x==="escape-key")&&(u.current=!0)}return a.on("openchange",g),()=>{a.off("openchange",g)}},[a,l]),E.useEffect(()=>()=>{gi(d)},[]);const f=E.useMemo(()=>({onMouseLeave(){u.current=!1},onFocus(g){if(u.current)return;const b=em(g.nativeEvent);if(c&&Vr(b)){if(P7()&&!g.relatedTarget){if(!h.current&&!mPe(b))return}else if(!gPe(b))return}o(!0,g.nativeEvent,"focus")},onBlur(g){u.current=!1;const b=g.relatedTarget,x=g.nativeEvent,w=Vr(b)&&b.hasAttribute(D7("focus-guard"))&&b.getAttribute("data-type")==="outside";d.current=window.setTimeout(()=>{var k;const C=dW(s.domReference?s.domReference.ownerDocument:document);!b&&C===s.domReference||I0((k=i.current.floatingContext)==null?void 0:k.refs.floating.current,C)||I0(s.domReference,C)||w||o(!1,x,"focus")})}}),[i,s.domReference,o,c]);return E.useMemo(()=>l?{reference:f}:{},[l,f])}function z7(e,r,n){const o=new Map,a=n==="item";let i=e;if(a&&e){const{[OW]:s,[jW]:l,...c}=e;i=c}return{...n==="floating"&&{tabIndex:-1,[uze]:""},...i,...r.map(s=>{const l=s?s[n]:null;return typeof l=="function"?e?l(e):null:l}).concat(e).reduce((s,l)=>(l&&Object.entries(l).forEach(c=>{let[u,d]=c;if(!(a&&[OW,jW].includes(u)))if(u.indexOf("on")===0){if(o.has(u)||o.set(u,[]),typeof d=="function"){var h;(h=o.get(u))==null||h.push(d),s[u]=function(){for(var f,g=arguments.length,b=new Array(g),x=0;xw(...b)).find(w=>w!==void 0)}}}else s[u]=d}),s),{})}}function XW(e){e===void 0&&(e=[]);const r=e.map(l=>l?.reference),n=e.map(l=>l?.floating),o=e.map(l=>l?.item),a=E.useCallback(l=>z7(l,e,"reference"),r),i=E.useCallback(l=>z7(l,e,"floating"),n),s=E.useCallback(l=>z7(l,e,"item"),o);return E.useMemo(()=>({getReferenceProps:a,getFloatingProps:i,getItemProps:s}),[a,i,s])}const _ze=new Map([["select","listbox"],["combobox","listbox"],["label",!1]]);function KW(e,r){var n,o;r===void 0&&(r={});const{open:a,elements:i,floatingId:s}=e,{enabled:l=!0,role:c="dialog"}=r,u=FW(),d=((n=i.domReference)==null?void 0:n.id)||u,h=E.useMemo(()=>{var k;return((k=yPe(i.floating))==null?void 0:k.id)||s},[i.floating,s]),f=(o=_ze.get(c))!=null?o:c,g=R7()!=null,b=E.useMemo(()=>f==="tooltip"||c==="label"?{["aria-"+(c==="label"?"labelledby":"describedby")]:a?h:void 0}:{"aria-expanded":a?"true":"false","aria-haspopup":f==="alertdialog"?"dialog":f,"aria-controls":a?h:void 0,...f==="listbox"&&{role:"combobox"},...f==="menu"&&{id:d},...f==="menu"&&g&&{role:"menuitem"},...c==="select"&&{"aria-autocomplete":"none"},...c==="combobox"&&{"aria-autocomplete":"list"}},[f,h,g,a,d,c]),x=E.useMemo(()=>{const k={id:h,...f&&{role:f}};return f==="tooltip"||c==="label"?k:{...k,...f==="menu"&&{"aria-labelledby":d}}},[f,h,d,c]),w=E.useCallback(k=>{let{active:C,selected:_}=k;const T={role:"option",...C&&{id:h+"-fui-option"}};switch(c){case"select":case"combobox":return{...T,"aria-selected":_}}return{}},[h,c]);return E.useMemo(()=>l?{reference:b,floating:x,item:w}:{},[l,b,x,w])}const[Eze,yi]=hi("ScrollArea.Root component was not found in tree");function nm(e,r){const n=io(r);$0(()=>{let o=0;if(e){const a=new ResizeObserver(()=>{cancelAnimationFrame(o),o=window.requestAnimationFrame(n)});return a.observe(e),()=>{window.cancelAnimationFrame(o),a.unobserve(e)}}},[e,n])}const Sze=E.forwardRef((e,r)=>{const{style:n,...o}=e,a=yi(),[i,s]=E.useState(0),[l,c]=E.useState(0),u=!!(i&&l);return nm(a.scrollbarX,()=>{const d=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(d),c(d)}),nm(a.scrollbarY,()=>{const d=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(d),s(d)}),u?y.jsx("div",{...o,ref:r,style:{...n,width:i,height:l}}):null}),Cze=E.forwardRef((e,r)=>{const n=yi(),o=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&o?y.jsx(Sze,{...e,ref:r}):null}),Tze={scrollHideDelay:1e3,type:"hover"},ZW=E.forwardRef((e,r)=>{const{type:n,scrollHideDelay:o,scrollbars:a,getStyles:i,...s}=He("ScrollAreaRoot",Tze,e),[l,c]=E.useState(null),[u,d]=E.useState(null),[h,f]=E.useState(null),[g,b]=E.useState(null),[x,w]=E.useState(null),[k,C]=E.useState(0),[_,T]=E.useState(0),[A,R]=E.useState(!1),[D,N]=E.useState(!1),M=Hr(r,O=>c(O));return y.jsx(Eze,{value:{type:n,scrollHideDelay:o,scrollArea:l,viewport:u,onViewportChange:d,content:h,onContentChange:f,scrollbarX:g,onScrollbarXChange:b,scrollbarXEnabled:A,onScrollbarXEnabledChange:R,scrollbarY:x,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:N,onCornerWidthChange:C,onCornerHeightChange:T,getStyles:i},children:y.jsx(Re,{...s,ref:M,__vars:{"--sa-corner-width":a!=="xy"?"0px":`${k}px`,"--sa-corner-height":a!=="xy"?"0px":`${_}px`}})})});ZW.displayName="@mantine/core/ScrollAreaRoot";function QW(e,r){const n=e/r;return Number.isNaN(n)?0:n}function R2(e){const r=QW(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,o=(e.scrollbar.size-n)*r;return Math.max(o,18)}function JW(e,r){return n=>{if(e[0]===e[1]||r[0]===r[1])return r[0];const o=(r[1]-r[0])/(e[1]-e[0]);return r[0]+o*(n-e[0])}}function Aze(e,[r,n]){return Math.min(n,Math.max(r,e))}function eY(e,r,n="ltr"){const o=R2(r),a=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,i=r.scrollbar.size-a,s=r.content-r.viewport,l=i-o,c=n==="ltr"?[0,s]:[s*-1,0],u=Aze(e,c);return JW([0,s],[0,l])(u)}function Rze(e,r,n,o="ltr"){const a=R2(n),i=a/2,s=r||i,l=a-s,c=n.scrollbar.paddingStart+s,u=n.scrollbar.size-n.scrollbar.paddingEnd-l,d=n.content-n.viewport,h=o==="ltr"?[0,d]:[d*-1,0];return JW([c,u],h)(e)}function tY(e,r){return e>0&&e{e?.(o),(n===!1||!o.defaultPrevented)&&r?.(o)}}const[Nze,rY]=hi("ScrollAreaScrollbar was not found in tree"),nY=E.forwardRef((e,r)=>{const{sizes:n,hasThumb:o,onThumbChange:a,onThumbPointerUp:i,onThumbPointerDown:s,onThumbPositionChange:l,onDragScroll:c,onWheelScroll:u,onResize:d,...h}=e,f=yi(),[g,b]=E.useState(null),x=Hr(r,N=>b(N)),w=E.useRef(null),k=E.useRef(""),{viewport:C}=f,_=n.content-n.viewport,T=io(u),A=io(l),R=Yf(d,10),D=N=>{if(w.current){const M=N.clientX-w.current.left,O=N.clientY-w.current.top;c({x:M,y:O})}};return E.useEffect(()=>{const N=M=>{const O=M.target;g?.contains(O)&&T(M,_)};return document.addEventListener("wheel",N,{passive:!1}),()=>document.removeEventListener("wheel",N,{passive:!1})},[C,g,_,T]),E.useEffect(A,[n,A]),nm(g,R),nm(f.content,R),y.jsx(Nze,{value:{scrollbar:g,hasThumb:o,onThumbChange:io(a),onThumbPointerUp:io(i),onThumbPositionChange:A,onThumbPointerDown:io(s)},children:y.jsx("div",{...h,ref:x,"data-mantine-scrollbar":!0,style:{position:"absolute",...h.style},onPointerDown:xp(e.onPointerDown,N=>{N.preventDefault(),N.button===0&&(N.target.setPointerCapture(N.pointerId),w.current=g.getBoundingClientRect(),k.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",D(N))}),onPointerMove:xp(e.onPointerMove,D),onPointerUp:xp(e.onPointerUp,N=>{const M=N.target;M.hasPointerCapture(N.pointerId)&&(N.preventDefault(),M.releasePointerCapture(N.pointerId))}),onLostPointerCapture:()=>{document.body.style.webkitUserSelect=k.current,w.current=null}})})}),oY=E.forwardRef((e,r)=>{const{sizes:n,onSizesChange:o,style:a,...i}=e,s=yi(),[l,c]=E.useState(),u=E.useRef(null),d=Hr(r,u,s.onScrollbarXChange);return E.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),y.jsx(nY,{"data-orientation":"horizontal",...i,ref:d,sizes:n,style:{...a,"--sa-thumb-width":`${R2(n)}px`},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,f)=>{if(s.viewport){const g=s.viewport.scrollLeft+h.deltaX;e.onWheelScroll(g),tY(g,f)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&l&&o({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:Nu(l.paddingLeft),paddingEnd:Nu(l.paddingRight)}})}})});oY.displayName="@mantine/core/ScrollAreaScrollbarX";const aY=E.forwardRef((e,r)=>{const{sizes:n,onSizesChange:o,style:a,...i}=e,s=yi(),[l,c]=E.useState(),u=E.useRef(null),d=Hr(r,u,s.onScrollbarYChange);return E.useEffect(()=>{u.current&&c(window.getComputedStyle(u.current))},[]),y.jsx(nY,{...i,"data-orientation":"vertical",ref:d,sizes:n,style:{"--sa-thumb-height":`${R2(n)}px`,...a},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,f)=>{if(s.viewport){const g=s.viewport.scrollTop+h.deltaY;e.onWheelScroll(g),tY(g,f)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&l&&o({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:Nu(l.paddingTop),paddingEnd:Nu(l.paddingBottom)}})}})});aY.displayName="@mantine/core/ScrollAreaScrollbarY";const N2=E.forwardRef((e,r)=>{const{orientation:n="vertical",...o}=e,{dir:a}=Ru(),i=yi(),s=E.useRef(null),l=E.useRef(0),[c,u]=E.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=QW(c.viewport,c.content),h={...o,sizes:c,onSizesChange:u,hasThumb:d>0&&d<1,onThumbChange:g=>{s.current=g},onThumbPointerUp:()=>{l.current=0},onThumbPointerDown:g=>{l.current=g}},f=(g,b)=>Rze(g,l.current,c,b);return n==="horizontal"?y.jsx(oY,{...h,ref:r,onThumbPositionChange:()=>{if(i.viewport&&s.current){const g=i.viewport.scrollLeft,b=eY(g,c,a);s.current.style.transform=`translate3d(${b}px, 0, 0)`}},onWheelScroll:g=>{i.viewport&&(i.viewport.scrollLeft=g)},onDragScroll:g=>{i.viewport&&(i.viewport.scrollLeft=f(g,a))}}):n==="vertical"?y.jsx(aY,{...h,ref:r,onThumbPositionChange:()=>{if(i.viewport&&s.current){const g=i.viewport.scrollTop,b=eY(g,c);c.scrollbar.size===0?s.current.style.setProperty("--thumb-opacity","0"):s.current.style.setProperty("--thumb-opacity","1"),s.current.style.transform=`translate3d(0, ${b}px, 0)`}},onWheelScroll:g=>{i.viewport&&(i.viewport.scrollTop=g)},onDragScroll:g=>{i.viewport&&(i.viewport.scrollTop=f(g))}}):null});N2.displayName="@mantine/core/ScrollAreaScrollbarVisible";const I7=E.forwardRef((e,r)=>{const n=yi(),{forceMount:o,...a}=e,[i,s]=E.useState(!1),l=e.orientation==="horizontal",c=Yf(()=>{if(n.viewport){const u=n.viewport.offsetWidth{const{forceMount:n,...o}=e,a=yi(),[i,s]=E.useState(!1);return E.useEffect(()=>{const{scrollArea:l}=a;let c=0;if(l){const u=()=>{window.clearTimeout(c),s(!0)},d=()=>{c=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return l.addEventListener("pointerenter",u),l.addEventListener("pointerleave",d),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",u),l.removeEventListener("pointerleave",d)}}},[a.scrollArea,a.scrollHideDelay]),n||i?y.jsx(I7,{"data-state":i?"visible":"hidden",...o,ref:r}):null});iY.displayName="@mantine/core/ScrollAreaScrollbarHover";const Dze=E.forwardRef((e,r)=>{const{forceMount:n,...o}=e,a=yi(),i=e.orientation==="horizontal",[s,l]=E.useState("hidden"),c=Yf(()=>l("idle"),100);return E.useEffect(()=>{if(s==="idle"){const u=window.setTimeout(()=>l("hidden"),a.scrollHideDelay);return()=>window.clearTimeout(u)}},[s,a.scrollHideDelay]),E.useEffect(()=>{const{viewport:u}=a,d=i?"scrollLeft":"scrollTop";if(u){let h=u[d];const f=()=>{const g=u[d];h!==g&&(l("scrolling"),c()),h=g};return u.addEventListener("scroll",f),()=>u.removeEventListener("scroll",f)}},[a.viewport,i,c]),n||s!=="hidden"?y.jsx(N2,{"data-state":s==="hidden"?"hidden":"visible",...o,ref:r,onPointerEnter:xp(e.onPointerEnter,()=>l("interacting")),onPointerLeave:xp(e.onPointerLeave,()=>l("idle"))}):null}),O7=E.forwardRef((e,r)=>{const{forceMount:n,...o}=e,a=yi(),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:s}=a,l=e.orientation==="horizontal";return E.useEffect(()=>(l?i(!0):s(!0),()=>{l?i(!1):s(!1)}),[l,i,s]),a.type==="hover"?y.jsx(iY,{...o,ref:r,forceMount:n}):a.type==="scroll"?y.jsx(Dze,{...o,ref:r,forceMount:n}):a.type==="auto"?y.jsx(I7,{...o,ref:r,forceMount:n}):a.type==="always"?y.jsx(N2,{...o,ref:r}):null});O7.displayName="@mantine/core/ScrollAreaScrollbar";function $ze(e,r=()=>{}){let n={left:e.scrollLeft,top:e.scrollTop},o=0;return(function a(){const i={left:e.scrollLeft,top:e.scrollTop},s=n.left!==i.left,l=n.top!==i.top;(s||l)&&r(),n=i,o=window.requestAnimationFrame(a)})(),()=>window.cancelAnimationFrame(o)}const sY=E.forwardRef((e,r)=>{const{style:n,...o}=e,a=yi(),i=rY(),{onThumbPositionChange:s}=i,l=Hr(r,d=>i.onThumbChange(d)),c=E.useRef(void 0),u=Yf(()=>{c.current&&(c.current(),c.current=void 0)},100);return E.useEffect(()=>{const{viewport:d}=a;if(d){const h=()=>{if(u(),!c.current){const f=$ze(d,s);c.current=f,s()}};return s(),d.addEventListener("scroll",h),()=>d.removeEventListener("scroll",h)}},[a.viewport,u,s]),y.jsx("div",{"data-state":i.hasThumb?"visible":"hidden",...o,ref:l,style:{width:"var(--sa-thumb-width)",height:"var(--sa-thumb-height)",...n},onPointerDownCapture:xp(e.onPointerDownCapture,d=>{const h=d.target.getBoundingClientRect(),f=d.clientX-h.left,g=d.clientY-h.top;i.onThumbPointerDown({x:f,y:g})}),onPointerUp:xp(e.onPointerUp,i.onThumbPointerUp)})});sY.displayName="@mantine/core/ScrollAreaThumb";const j7=E.forwardRef((e,r)=>{const{forceMount:n,...o}=e,a=rY();return n||a.hasThumb?y.jsx(sY,{ref:r,...o}):null});j7.displayName="@mantine/core/ScrollAreaThumb";const lY=E.forwardRef(({children:e,style:r,...n},o)=>{const a=yi(),i=Hr(o,a.onViewportChange);return y.jsx(Re,{...n,ref:i,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...r},children:y.jsx("div",{...a.getStyles("content"),ref:a.onContentChange,children:e})})});lY.displayName="@mantine/core/ScrollAreaViewport";var L7={root:"m_d57069b5",content:"m_b1336c6",viewport:"m_c0783ff9",viewportInner:"m_f8f631dd",scrollbar:"m_c44ba933",thumb:"m_d8b5e363",corner:"m_21657268"};const cY={scrollHideDelay:1e3,type:"hover",scrollbars:"xy"},Mze=(e,{scrollbarSize:r,overscrollBehavior:n})=>({root:{"--scrollarea-scrollbar-size":Me(r),"--scrollarea-over-scroll-behavior":n}}),bl=ht((e,r)=>{const n=He("ScrollArea",cY,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,scrollbarSize:c,vars:u,type:d,scrollHideDelay:h,viewportProps:f,viewportRef:g,onScrollPositionChange:b,children:x,offsetScrollbars:w,scrollbars:k,onBottomReached:C,onTopReached:_,overscrollBehavior:T,attributes:A,...R}=n,[D,N]=E.useState(!1),[M,O]=E.useState(!1),[F,L]=E.useState(!1),U=Dt({name:"ScrollArea",props:n,classes:L7,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:A,vars:u,varsResolver:Mze}),P=E.useRef(null),V=IW([g,P]);return E.useEffect(()=>{if(!P.current||w!=="present")return;const I=P.current,H=new ResizeObserver(()=>{const{scrollHeight:q,clientHeight:Z,scrollWidth:W,clientWidth:G}=I;O(q>Z),L(W>G)});return H.observe(I),()=>H.disconnect()},[P,w]),y.jsxs(ZW,{getStyles:U,type:d==="never"?"always":d,scrollHideDelay:h,ref:r,scrollbars:k,...U("root"),...R,children:[y.jsx(lY,{...f,...U("viewport",{style:f?.style}),ref:V,"data-offset-scrollbars":w===!0?"xy":w||void 0,"data-scrollbars":k||void 0,"data-horizontal-hidden":w==="present"&&!F?"true":void 0,"data-vertical-hidden":w==="present"&&!M?"true":void 0,onScroll:I=>{f?.onScroll?.(I),b?.({x:I.currentTarget.scrollLeft,y:I.currentTarget.scrollTop});const{scrollTop:H,scrollHeight:q,clientHeight:Z}=I.currentTarget;H-(q-Z)>=-.6&&C?.(),H===0&&_?.()},children:x}),(k==="xy"||k==="x")&&y.jsx(O7,{...U("scrollbar"),orientation:"horizontal","data-hidden":d==="never"||w==="present"&&!F?!0:void 0,forceMount:!0,onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:y.jsx(j7,{...U("thumb")})}),(k==="xy"||k==="y")&&y.jsx(O7,{...U("scrollbar"),orientation:"vertical","data-hidden":d==="never"||w==="present"&&!M?!0:void 0,forceMount:!0,onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:y.jsx(j7,{...U("thumb")})}),y.jsx(Cze,{...U("corner"),"data-hovered":D||void 0,"data-hidden":d==="never"||void 0})]})});bl.displayName="@mantine/core/ScrollArea";const pa=ht((e,r)=>{const{children:n,classNames:o,styles:a,scrollbarSize:i,scrollHideDelay:s,type:l,dir:c,offsetScrollbars:u,viewportRef:d,onScrollPositionChange:h,unstyled:f,variant:g,viewportProps:b,scrollbars:x,style:w,vars:k,onBottomReached:C,onTopReached:_,onOverflowChange:T,...A}=He("ScrollAreaAutosize",cY,e),R=E.useRef(null),D=IW([d,R]),[N,M]=E.useState(!1),O=E.useRef(!1);return E.useEffect(()=>{if(!T)return;const F=R.current;if(!F)return;const L=()=>{const P=F.scrollHeight>F.clientHeight;P!==N&&(O.current?T?.(P):(O.current=!0,P&&T?.(!0)),M(P))};L();const U=new ResizeObserver(L);return U.observe(F),()=>U.disconnect()},[T,N]),y.jsx(Re,{...A,ref:r,style:[{display:"flex",overflow:"hidden"},w],children:y.jsx(Re,{style:{display:"flex",flexDirection:"column",flex:1,overflow:"hidden",...x==="y"&&{minWidth:0},...x==="x"&&{minHeight:0},...x==="xy"&&{minWidth:0,minHeight:0},...x===!1&&{minWidth:0,minHeight:0}},children:y.jsx(bl,{classNames:o,styles:a,scrollHideDelay:s,scrollbarSize:i,type:l,dir:c,offsetScrollbars:u,viewportRef:D,onScrollPositionChange:h,unstyled:f,variant:g,viewportProps:b,vars:k,scrollbars:x,onBottomReached:C,onTopReached:_,"data-autosize":"true",children:n})})})});bl.classes=L7,pa.displayName="@mantine/core/ScrollAreaAutosize",pa.classes=L7,bl.Autosize=pa;var uY={root:"m_87cf2631"};const Pze={__staticSelector:"UnstyledButton"},Er=so((e,r)=>{const n=He("UnstyledButton",Pze,e),{className:o,component:a="button",__staticSelector:i,unstyled:s,classNames:l,styles:c,style:u,attributes:d,...h}=n,f=Dt({name:i,props:n,classes:uY,className:o,style:u,classNames:l,styles:c,unstyled:s,attributes:d});return y.jsx(Re,{...f("root",{focusable:!0}),component:a,ref:r,type:a==="button"?"button":void 0,...h})});Er.classes=uY,Er.displayName="@mantine/core/UnstyledButton";var dY={root:"m_515a97f8"};const D2=ht((e,r)=>{const n=He("VisuallyHidden",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,attributes:u,...d}=n,h=Dt({name:"VisuallyHidden",classes:dY,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:u});return y.jsx(Re,{component:"span",ref:r,...h("root"),...d})});D2.classes=dY,D2.displayName="@mantine/core/VisuallyHidden";var pY={root:"m_1b7284a3"};const zze=(e,{radius:r,shadow:n})=>({root:{"--paper-radius":r===void 0?void 0:Pn(r),"--paper-shadow":mU(n)}}),om=so((e,r)=>{const n=He("Paper",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,withBorder:c,vars:u,radius:d,shadow:h,variant:f,mod:g,attributes:b,...x}=n,w=Dt({name:"Paper",props:n,classes:pY,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:u,varsResolver:zze});return y.jsx(Re,{ref:r,mod:[{"data-with-border":c},g],...w("root"),variant:f,...x})});om.classes=pY,om.displayName="@mantine/core/Paper";function hY(e,r,n,o){return e==="center"||o==="center"?{top:r}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function fY(e,r,n,o,a){return e==="center"||o==="center"?{left:r}:e==="end"?{[a==="ltr"?"right":"left"]:n}:e==="start"?{[a==="ltr"?"left":"right"]:n}:{}}const Ize={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function Oze({position:e,arrowSize:r,arrowOffset:n,arrowRadius:o,arrowPosition:a,arrowX:i,arrowY:s,dir:l}){const[c,u="center"]=e.split("-"),d={width:r,height:r,transform:"rotate(45deg)",position:"absolute",[Ize[c]]:o},h=-r/2;return c==="left"?{...d,...hY(u,s,n,a),right:h,borderLeftColor:"transparent",borderBottomColor:"transparent",clipPath:"polygon(100% 0, 0 0, 100% 100%)"}:c==="right"?{...d,...hY(u,s,n,a),left:h,borderRightColor:"transparent",borderTopColor:"transparent",clipPath:"polygon(0 100%, 0 0, 100% 100%)"}:c==="top"?{...d,...fY(u,i,n,a,l),bottom:h,borderTopColor:"transparent",borderLeftColor:"transparent",clipPath:"polygon(0 100%, 100% 100%, 100% 0)"}:c==="bottom"?{...d,...fY(u,i,n,a,l),top:h,borderBottomColor:"transparent",borderRightColor:"transparent",clipPath:"polygon(0 100%, 0 0, 100% 0)"}:{}}const $2=E.forwardRef(({position:e,arrowSize:r,arrowOffset:n,arrowRadius:o,arrowPosition:a,visible:i,arrowX:s,arrowY:l,style:c,...u},d)=>{const{dir:h}=Ru();return i?y.jsx("div",{...u,ref:d,style:{...c,...Oze({position:e,arrowSize:r,arrowOffset:n,arrowRadius:o,arrowPosition:a,dir:h,arrowX:s,arrowY:l})}}):null});$2.displayName="@mantine/core/FloatingArrow";function mY(e,r){if(e==="rtl"&&(r.includes("right")||r.includes("left"))){const[n,o]=r.split("-"),a=n==="right"?"left":"right";return o===void 0?a:`${a}-${o}`}return r}var gY={root:"m_9814e45f"};const jze={zIndex:J3("modal")},Lze=(e,{gradient:r,color:n,backgroundOpacity:o,blur:a,radius:i,zIndex:s})=>({root:{"--overlay-bg":r||(n!==void 0||o!==void 0)&&hl(n||"#000",o??.6)||void 0,"--overlay-filter":a?`blur(${Me(a)})`:void 0,"--overlay-radius":i===void 0?void 0:Pn(i),"--overlay-z-index":s?.toString()}}),B7=so((e,r)=>{const n=He("Overlay",jze,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,fixed:u,center:d,children:h,radius:f,zIndex:g,gradient:b,blur:x,color:w,backgroundOpacity:k,mod:C,attributes:_,...T}=n,A=Dt({name:"Overlay",props:n,classes:gY,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:_,vars:c,varsResolver:Lze});return y.jsx(Re,{ref:r,...A("root"),mod:[{center:d,fixed:u},C],...T,children:h})});B7.classes=gY,B7.displayName="@mantine/core/Overlay";function F7(e){const r=document.createElement("div");return r.setAttribute("data-portal","true"),typeof e.className=="string"&&r.classList.add(...e.className.split(" ").filter(Boolean)),typeof e.style=="object"&&Object.assign(r.style,e.style),typeof e.id=="string"&&r.setAttribute("id",e.id),r}function Bze({target:e,reuseTargetNode:r,...n}){if(e)return typeof e=="string"?document.querySelector(e)||F7(n):e;if(r){const o=document.querySelector("[data-mantine-shared-portal-node]");if(o)return o;const a=F7(n);return a.setAttribute("data-mantine-shared-portal-node","true"),document.body.appendChild(a),a}return F7(n)}const Fze={reuseTargetNode:!0},j0=ht((e,r)=>{const{children:n,target:o,reuseTargetNode:a,...i}=He("Portal",Fze,e),[s,l]=E.useState(!1),c=E.useRef(null);return $0(()=>(l(!0),c.current=Bze({target:o,reuseTargetNode:a,...i}),G9(r,c.current),!o&&!a&&c.current&&document.body.appendChild(c.current),()=>{!o&&!a&&c.current&&document.body.removeChild(c.current)}),[o]),!s||!c.current?null:Ki.createPortal(y.jsx(y.Fragment,{children:n}),c.current)});j0.displayName="@mantine/core/Portal";const am=ht(({withinPortal:e=!0,children:r,...n},o)=>i2()==="test"||!e?y.jsx(y.Fragment,{children:r}):y.jsx(j0,{ref:o,...n,children:r}));am.displayName="@mantine/core/OptionalPortal";const L0=e=>({in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${e==="bottom"?10:-10}px)`},transitionProperty:"transform, opacity"}),M2={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},"fade-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(30px)"},transitionProperty:"opacity, transform"},"fade-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-30px)"},transitionProperty:"opacity, transform"},"fade-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(30px)"},transitionProperty:"opacity, transform"},"fade-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-30px)"},transitionProperty:"opacity, transform"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:"translateY(-20px) skew(-10deg, -5deg)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:"translateY(20px) skew(-10deg, -5deg)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:"translateY(20px) rotate(-5deg)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:"translateY(20px) rotate(5deg)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:{...L0("bottom"),common:{transformOrigin:"center center"}},"pop-bottom-left":{...L0("bottom"),common:{transformOrigin:"bottom left"}},"pop-bottom-right":{...L0("bottom"),common:{transformOrigin:"bottom right"}},"pop-top-left":{...L0("top"),common:{transformOrigin:"top left"}},"pop-top-right":{...L0("top"),common:{transformOrigin:"top right"}}},yY={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function Hze({transition:e,state:r,duration:n,timingFunction:o}){const a={WebkitBackfaceVisibility:"hidden",transitionDuration:`${n}ms`,transitionTimingFunction:o};return typeof e=="string"?e in M2?{transitionProperty:M2[e].transitionProperty,...a,...M2[e].common,...M2[e][yY[r]]}:{}:{transitionProperty:e.transitionProperty,...a,...e.common,...e[yY[r]]}}function Vze({duration:e,exitDuration:r,timingFunction:n,mounted:o,onEnter:a,onExit:i,onEntered:s,onExited:l,enterDelay:c,exitDelay:u}){const d=vo(),h=TU(),f=d.respectReducedMotion?h:!1,[g,b]=E.useState(f?0:e),[x,w]=E.useState(o?"entered":"exited"),k=E.useRef(-1),C=E.useRef(-1),_=E.useRef(-1);function T(){window.clearTimeout(k.current),window.clearTimeout(C.current),cancelAnimationFrame(_.current)}const A=D=>{T();const N=D?a:i,M=D?s:l,O=f?0:D?e:r;b(O),O===0?(typeof N=="function"&&N(),typeof M=="function"&&M(),w(D?"entered":"exited")):_.current=requestAnimationFrame(()=>{Zz.flushSync(()=>{w(D?"pre-entering":"pre-exiting")}),_.current=requestAnimationFrame(()=>{typeof N=="function"&&N(),w(D?"entering":"exiting"),k.current=window.setTimeout(()=>{typeof M=="function"&&M(),w(D?"entered":"exited")},O)})})},R=D=>{if(T(),typeof(D?c:u)!="number"){A(D);return}C.current=window.setTimeout(()=>{A(D)},D?c:u)};return gp(()=>{R(o)},[o]),E.useEffect(()=>()=>{T()},[]),{transitionDuration:g,transitionStatus:x,transitionTimingFunction:n||"ease"}}function Du({keepMounted:e,transition:r="fade",duration:n=250,exitDuration:o=n,mounted:a,children:i,timingFunction:s="ease",onExit:l,onEntered:c,onEnter:u,onExited:d,enterDelay:h,exitDelay:f}){const g=i2(),{transitionDuration:b,transitionStatus:x,transitionTimingFunction:w}=Vze({mounted:a,exitDuration:o,duration:n,timingFunction:s,onExit:l,onEntered:c,onEnter:u,onExited:d,enterDelay:h,exitDelay:f});return b===0||g==="test"?a?y.jsx(y.Fragment,{children:i({})}):e?i({display:"none"}):null:x==="exited"?e?i({display:"none"}):null:y.jsx(y.Fragment,{children:i(Hze({transition:r,duration:b,state:x,timingFunction:w}))})}Du.displayName="@mantine/core/Transition";const[qze,bY]=hi("Popover component was not found in the tree");function P2({children:e,active:r=!0,refProp:n="ref",innerRef:o}){const a=_U(r),i=Hr(a,o);return ps(e)?E.cloneElement(e,{[n]:i}):e}function vY(e){return y.jsx(D2,{tabIndex:-1,"data-autofocus":!0,...e})}P2.displayName="@mantine/core/FocusTrap",vY.displayName="@mantine/core/FocusTrapInitialFocus",P2.InitialFocus=vY;var xY={dropdown:"m_38a85659",arrow:"m_a31dc6c1",overlay:"m_3d7bc908"};const fc=ht((e,r)=>{const n=He("PopoverDropdown",null,e),{className:o,style:a,vars:i,children:s,onKeyDownCapture:l,variant:c,classNames:u,styles:d,...h}=n,f=bY(),g=QDe({opened:f.opened,shouldReturnFocus:f.returnFocus}),b=f.withRoles?{"aria-labelledby":f.getTargetId(),id:f.getDropdownId(),role:"dialog",tabIndex:-1}:{},x=Hr(r,f.floating);return f.disabled?null:y.jsx(am,{...f.portalProps,withinPortal:f.withinPortal,children:y.jsx(Du,{mounted:f.opened,...f.transitionProps,transition:f.transitionProps?.transition||"fade",duration:f.transitionProps?.duration??150,keepMounted:f.keepMounted,exitDuration:typeof f.transitionProps?.exitDuration=="number"?f.transitionProps.exitDuration:f.transitionProps?.duration,children:w=>y.jsx(P2,{active:f.trapFocus&&f.opened,innerRef:x,children:y.jsxs(Re,{...b,...h,variant:c,onKeyDownCapture:HDe(()=>{f.onClose?.(),f.onDismiss?.()},{active:f.closeOnEscape,onTrigger:g,onKeyDown:l}),"data-position":f.placement,"data-fixed":f.floatingStrategy==="fixed"||void 0,...f.getStyles("dropdown",{className:o,props:n,classNames:u,styles:d,style:[{...w,zIndex:f.zIndex,top:f.y??0,left:f.x??0,width:f.width==="target"?void 0:Me(f.width),...f.referenceHidden?{display:"none"}:null},f.resolvedStyles.dropdown,d?.dropdown,a]}),children:[s,y.jsx($2,{ref:f.arrowRef,arrowX:f.arrowX,arrowY:f.arrowY,visible:f.withArrow,position:f.placement,arrowSize:f.arrowSize,arrowRadius:f.arrowRadius,arrowOffset:f.arrowOffset,arrowPosition:f.arrowPosition,...f.getStyles("arrow",{props:n,classNames:u,styles:d})})]})})})})});fc.classes=xY,fc.displayName="@mantine/core/PopoverDropdown";const Uze={refProp:"ref",popupType:"dialog"},$u=ht((e,r)=>{const{children:n,refProp:o,popupType:a,...i}=He("PopoverTarget",Uze,e);if(!ps(n))throw new Error("Popover.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const s=i,l=bY(),c=Hr(l.reference,r2(n),r),u=l.withRoles?{"aria-haspopup":a,"aria-expanded":l.opened,"aria-controls":l.getDropdownId(),id:l.getTargetId()}:{};return E.cloneElement(n,{...s,...u,...l.targetProps,className:hs(l.targetProps.className,s.className,n.props.className),[o]:c,...l.controlled?null:{onClick:()=>{l.onToggle(),n.props.onClick?.()}}})});$u.displayName="@mantine/core/PopoverTarget";function Wze(e){if(e===void 0)return{shift:!0,flip:!0};const r={...e};return e.shift===void 0&&(r.shift=!0),e.flip===void 0&&(r.flip=!0),r}function Yze(e,r,n){const o=Wze(e.middlewares),a=[MW(e.offset),cze()];return e.dropdownVisible&&n!=="test"&&e.preventPositionChangeWhenVisible&&(o.flip=!1),o.shift&&a.push(A7(typeof o.shift=="boolean"?{limiter:PW(),padding:5}:{limiter:PW(),padding:5,...o.shift})),o.flip&&a.push(typeof o.flip=="boolean"?C2():C2(o.flip)),o.inline&&a.push(typeof o.inline=="boolean"?O0():O0(o.inline)),a.push(zW({element:e.arrowRef,padding:e.arrowOffset})),(o.size||e.width==="target")&&a.push(lze({...typeof o.size=="boolean"?{}:o.size,apply({rects:i,availableWidth:s,availableHeight:l,...c}){const u=r().refs.floating.current?.style??{};o.size&&(typeof o.size=="object"&&o.size.apply?o.size.apply({rects:i,availableWidth:s,availableHeight:l,...c}):Object.assign(u,{maxWidth:`${s}px`,maxHeight:`${l}px`})),e.width==="target"&&Object.assign(u,{width:`${i.reference.width}px`})}})),a}function Gze(e){const r=i2(),[n,o]=uc({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),a=E.useRef(n),i=()=>{n&&!e.disabled&&o(!1)},s=()=>{e.disabled||o(!n)},l=A2({strategy:e.strategy,placement:e.preventPositionChangeWhenVisible?e.positionRef.current:e.position,middleware:Yze(e,()=>l,r),whileElementsMounted:e.keepMounted?void 0:_2});return E.useEffect(()=>{if(!(!l.refs.reference.current||!l.refs.floating.current)&&n)return _2(l.refs.reference.current,l.refs.floating.current,l.update)},[n,l.update]),gp(()=>{e.onPositionChange?.(l.placement),e.positionRef.current=l.placement},[l.placement,e.preventPositionChangeWhenVisible]),gp(()=>{n!==a.current&&(n?e.onOpen?.():e.onClose?.()),a.current=n},[n,e.onClose,e.onOpen]),gp(()=>{let c=-1;return n&&(c=window.setTimeout(()=>e.setDropdownVisible(!0),4)),()=>{window.clearTimeout(c)}},[n,e.position]),{floating:l,controlled:typeof e.opened=="boolean",opened:n,onClose:i,onToggle:s}}const Xze={position:"bottom",offset:8,positionDependencies:[],transitionProps:{transition:"fade",duration:150},middlewares:{flip:!0,shift:!0,inline:!1},arrowSize:7,arrowOffset:5,arrowRadius:0,arrowPosition:"side",closeOnClickOutside:!0,withinPortal:!0,closeOnEscape:!0,trapFocus:!1,withRoles:!0,returnFocus:!1,withOverlay:!1,hideDetached:!0,clickOutsideEvents:["mousedown","touchstart"],zIndex:J3("popover"),__staticSelector:"Popover",width:"max-content"},Kze=(e,{radius:r,shadow:n})=>({dropdown:{"--popover-radius":r===void 0?void 0:Pn(r),"--popover-shadow":mU(n)}});function Rr(e){const r=He("Popover",Xze,e),{children:n,position:o,offset:a,onPositionChange:i,positionDependencies:s,opened:l,transitionProps:c,onExitTransitionEnd:u,onEnterTransitionEnd:d,width:h,middlewares:f,withArrow:g,arrowSize:b,arrowOffset:x,arrowRadius:w,arrowPosition:k,unstyled:C,classNames:_,styles:T,closeOnClickOutside:A,withinPortal:R,portalProps:D,closeOnEscape:N,clickOutsideEvents:M,trapFocus:O,onClose:F,onDismiss:L,onOpen:U,onChange:P,zIndex:V,radius:I,shadow:H,id:q,defaultOpened:Z,__staticSelector:W,withRoles:G,disabled:K,returnFocus:j,variant:Y,keepMounted:Q,vars:J,floatingStrategy:ie,withOverlay:ne,overlayProps:re,hideDetached:ge,attributes:De,preventPositionChangeWhenVisible:he,...me}=r,Te=Dt({name:W,props:r,classes:xY,classNames:_,styles:T,unstyled:C,attributes:De,rootSelector:"dropdown",vars:J,varsResolver:Kze}),{resolvedStyles:Ie}=s7({classNames:_,styles:T,props:r}),[Ze,rt]=E.useState(l??Z??!1),Rt=E.useRef(o),Qe=E.useRef(null),[Pt,Ke]=E.useState(null),[Ge,ct]=E.useState(null),{dir:ut}=Ru(),Ir=i2(),Ee=fi(q),Se=Gze({middlewares:f,width:h,position:mY(ut,o),offset:typeof a=="number"?a+(g?b/2:0):a,arrowRef:Qe,arrowOffset:x,onPositionChange:i,positionDependencies:s,opened:l,defaultOpened:Z,onChange:P,onOpen:U,onClose:F,onDismiss:L,strategy:ie,dropdownVisible:Ze,setDropdownVisible:rt,positionRef:Rt,disabled:K,preventPositionChangeWhenVisible:he,keepMounted:Q});yU(()=>{A&&(Se.onClose(),L?.())},M,[Pt,Ge]);const it=E.useCallback(It=>{Ke(It),Se.floating.refs.setReference(It)},[Se.floating.refs.setReference]),xt=E.useCallback(It=>{ct(It),Se.floating.refs.setFloating(It)},[Se.floating.refs.setFloating]),zt=E.useCallback(()=>{c?.onExited?.(),u?.(),rt(!1),he||(Rt.current=o)},[c?.onExited,u,he,o]),Fr=E.useCallback(()=>{c?.onEntered?.(),d?.()},[c?.onEntered,d]);return y.jsxs(qze,{value:{returnFocus:j,disabled:K,controlled:Se.controlled,reference:it,floating:xt,x:Se.floating.x,y:Se.floating.y,arrowX:Se.floating?.middlewareData?.arrow?.x,arrowY:Se.floating?.middlewareData?.arrow?.y,opened:Se.opened,arrowRef:Qe,transitionProps:{...c,onExited:zt,onEntered:Fr},width:h,withArrow:g,arrowSize:b,arrowOffset:x,arrowRadius:w,arrowPosition:k,placement:Se.floating.placement,trapFocus:O,withinPortal:R,portalProps:D,zIndex:V,radius:I,shadow:H,closeOnEscape:N,onDismiss:L,onClose:Se.onClose,onToggle:Se.onToggle,getTargetId:()=>`${Ee}-target`,getDropdownId:()=>`${Ee}-dropdown`,withRoles:G,targetProps:me,__staticSelector:W,classNames:_,styles:T,unstyled:C,variant:Y,keepMounted:Q,getStyles:Te,resolvedStyles:Ie,floatingStrategy:ie,referenceHidden:ge&&Ir!=="test"?Se.floating.middlewareData.hide?.referenceHidden:!1},children:[n,ne&&y.jsx(Du,{transition:"fade",mounted:Se.opened,duration:c?.duration||250,exitDuration:c?.exitDuration||250,children:It=>y.jsx(am,{withinPortal:R,children:y.jsx(B7,{...re,...Te("overlay",{className:re?.className,style:[It,re?.style]})})})})]})}Rr.Target=$u,Rr.Dropdown=fc,Rr.displayName="@mantine/core/Popover",Rr.extend=e=>e;var bs={root:"m_5ae2e3c",barsLoader:"m_7a2bd4cd",bar:"m_870bb79","bars-loader-animation":"m_5d2b3b9d",dotsLoader:"m_4e3f22d7",dot:"m_870c4af","loader-dots-animation":"m_aac34a1",ovalLoader:"m_b34414df","oval-loader-animation":"m_f8e89c4b"};const wY=E.forwardRef(({className:e,...r},n)=>y.jsxs(Re,{component:"span",className:hs(bs.barsLoader,e),...r,ref:n,children:[y.jsx("span",{className:bs.bar}),y.jsx("span",{className:bs.bar}),y.jsx("span",{className:bs.bar})]}));wY.displayName="@mantine/core/Bars";const kY=E.forwardRef(({className:e,...r},n)=>y.jsxs(Re,{component:"span",className:hs(bs.dotsLoader,e),...r,ref:n,children:[y.jsx("span",{className:bs.dot}),y.jsx("span",{className:bs.dot}),y.jsx("span",{className:bs.dot})]}));kY.displayName="@mantine/core/Dots";const _Y=E.forwardRef(({className:e,...r},n)=>y.jsx(Re,{component:"span",className:hs(bs.ovalLoader,e),...r,ref:n}));_Y.displayName="@mantine/core/Oval";const EY={bars:wY,oval:_Y,dots:kY},Zze={loaders:EY,type:"oval"},Qze=(e,{size:r,color:n})=>({root:{"--loader-size":kr(r,"loader-size"),"--loader-color":n?Ia(n,e):void 0}}),im=ht((e,r)=>{const n=He("Loader",Zze,e),{size:o,color:a,type:i,vars:s,className:l,style:c,classNames:u,styles:d,unstyled:h,loaders:f,variant:g,children:b,attributes:x,...w}=n,k=Dt({name:"Loader",props:n,classes:bs,className:l,style:c,classNames:u,styles:d,unstyled:h,attributes:x,vars:s,varsResolver:Qze});return b?y.jsx(Re,{...k("root"),ref:r,...w,children:b}):y.jsx(Re,{...k("root"),ref:r,component:f[i],variant:g,size:o,...w})});im.defaultLoaders=EY,im.classes=bs,im.displayName="@mantine/core/Loader";var sm={root:"m_8d3f4000",icon:"m_8d3afb97",loader:"m_302b9fb1",group:"m_1a0f1b21",groupSection:"m_437b6484"};const SY={orientation:"horizontal"},Jze=(e,{borderWidth:r})=>({group:{"--ai-border-width":Me(r)}}),z2=ht((e,r)=>{const n=He("ActionIconGroup",SY,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,orientation:c,vars:u,borderWidth:d,variant:h,mod:f,attributes:g,...b}=He("ActionIconGroup",SY,e),x=Dt({name:"ActionIconGroup",props:n,classes:sm,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:u,varsResolver:Jze,rootSelector:"group"});return y.jsx(Re,{...x("group"),ref:r,variant:h,mod:[{"data-orientation":c},f],role:"group",...b})});z2.classes=sm,z2.displayName="@mantine/core/ActionIconGroup";const eIe=(e,{radius:r,color:n,gradient:o,variant:a,autoContrast:i,size:s})=>{const l=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:i});return{groupSection:{"--section-height":kr(s,"section-height"),"--section-padding-x":kr(s,"section-padding-x"),"--section-fz":Io(s),"--section-radius":r===void 0?void 0:Pn(r),"--section-bg":n||a?l.background:void 0,"--section-color":l.color,"--section-bd":n||a?l.border:void 0}}},H7=ht((e,r)=>{const n=He("ActionIconGroupSection",null,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,vars:c,variant:u,gradient:d,radius:h,autoContrast:f,attributes:g,...b}=n,x=Dt({name:"ActionIconGroupSection",props:n,classes:sm,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:eIe,rootSelector:"groupSection"});return y.jsx(Re,{...x("groupSection"),ref:r,variant:u,...b})});H7.classes=sm,H7.displayName="@mantine/core/ActionIconGroupSection";const tIe=(e,{size:r,radius:n,variant:o,gradient:a,color:i,autoContrast:s})=>{const l=e.variantColorResolver({color:i||e.primaryColor,theme:e,gradient:a,variant:o||"filled",autoContrast:s});return{root:{"--ai-size":kr(r,"ai-size"),"--ai-radius":n===void 0?void 0:Pn(n),"--ai-bg":i||o?l.background:void 0,"--ai-hover":i||o?l.hover:void 0,"--ai-hover-color":i||o?l.hoverColor:void 0,"--ai-color":l.color,"--ai-bd":i||o?l.border:void 0}}},br=so((e,r)=>{const n=He("ActionIcon",null,e),{className:o,unstyled:a,variant:i,classNames:s,styles:l,style:c,loading:u,loaderProps:d,size:h,color:f,radius:g,__staticSelector:b,gradient:x,vars:w,children:k,disabled:C,"data-disabled":_,autoContrast:T,mod:A,attributes:R,...D}=n,N=Dt({name:["ActionIcon",b],props:n,className:o,style:c,classes:sm,classNames:s,styles:l,unstyled:a,attributes:R,vars:w,varsResolver:tIe});return y.jsxs(Er,{...N("root",{active:!C&&!u&&!_}),...D,unstyled:a,variant:i,size:h,disabled:C||u,ref:r,mod:[{loading:u,disabled:C||_},A],children:[typeof u=="boolean"&&y.jsx(Du,{mounted:u,transition:"slide-down",duration:150,children:M=>y.jsx(Re,{component:"span",...N("loader",{style:M}),"aria-hidden":!0,children:y.jsx(im,{color:"var(--ai-color)",size:"calc(var(--ai-size) * 0.55)",...d})})}),y.jsx(Re,{component:"span",mod:{loading:u},...N("icon"),children:k})]})});br.classes=sm,br.displayName="@mantine/core/ActionIcon",br.Group=z2,br.GroupSection=H7;const CY=E.forwardRef(({size:e="var(--cb-icon-size, 70%)",style:r,...n},o)=>y.jsx("svg",{viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{...r,width:e,height:e},ref:o,...n,children:y.jsx("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})}));CY.displayName="@mantine/core/CloseIcon";var TY={root:"m_86a44da5","root--subtle":"m_220c80f2"};const rIe={variant:"subtle"},nIe=(e,{size:r,radius:n,iconSize:o})=>({root:{"--cb-size":kr(r,"cb-size"),"--cb-radius":n===void 0?void 0:Pn(n),"--cb-icon-size":Me(o)}}),wp=so((e,r)=>{const n=He("CloseButton",rIe,e),{iconSize:o,children:a,vars:i,radius:s,className:l,classNames:c,style:u,styles:d,unstyled:h,"data-disabled":f,disabled:g,variant:b,icon:x,mod:w,attributes:k,__staticSelector:C,..._}=n,T=Dt({name:C||"CloseButton",props:n,className:l,style:u,classes:TY,classNames:c,styles:d,unstyled:h,attributes:k,vars:i,varsResolver:nIe});return y.jsxs(Er,{ref:r,..._,unstyled:h,variant:b,disabled:g,mod:[{disabled:g||f},w],...T("root",{variant:b,active:!g&&!f}),children:[x||y.jsx(CY,{}),a]})});wp.classes=TY,wp.displayName="@mantine/core/CloseButton";function oIe(e){return E.Children.toArray(e).filter(Boolean)}var AY={root:"m_4081bf90"};const aIe={preventGrowOverflow:!0,gap:"md",align:"center",justify:"flex-start",wrap:"wrap"},iIe=(e,{grow:r,preventGrowOverflow:n,gap:o,align:a,justify:i,wrap:s},{childWidth:l})=>({root:{"--group-child-width":r&&n?l:void 0,"--group-gap":cc(o),"--group-align":a,"--group-justify":i,"--group-wrap":s}}),pn=ht((e,r)=>{const n=He("Group",aIe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,children:c,gap:u,align:d,justify:h,wrap:f,grow:g,preventGrowOverflow:b,vars:x,variant:w,__size:k,mod:C,attributes:_,...T}=n,A=oIe(c),R=A.length,D=cc(u??"md"),N={childWidth:`calc(${100/R}% - (${D} - ${D} / ${R}))`},M=Dt({name:"Group",props:n,stylesCtx:N,className:a,style:i,classes:AY,classNames:o,styles:s,unstyled:l,attributes:_,vars:x,varsResolver:iIe});return y.jsx(Re,{...M("root"),ref:r,variant:w,mod:[{grow:g},C],size:k,...T,children:A})});pn.classes=AY,pn.displayName="@mantine/core/Group";const[sIe,lIe]=R0({size:"sm"}),RY=ht((e,r)=>{const n=He("InputClearButton",null,e),{size:o,variant:a,vars:i,classNames:s,styles:l,...c}=n,u=lIe(),{resolvedClassNames:d,resolvedStyles:h}=s7({classNames:s,styles:l,props:n});return y.jsx(wp,{variant:a||"transparent",ref:r,size:o||u?.size||"sm",classNames:d,styles:h,__staticSelector:"InputClearButton",style:{pointerEvents:"all",background:"var(--input-bg)",...c.style},...c})});RY.displayName="@mantine/core/InputClearButton";const cIe={xs:7,sm:8,md:10,lg:12,xl:15};function uIe({__clearable:e,__clearSection:r,rightSection:n,__defaultRightSection:o,size:a="sm"}){const i=e&&r;return i&&(n||o)?y.jsxs("div",{"data-combined-clear-section":!0,style:{display:"flex",gap:2,alignItems:"center",paddingInlineEnd:cIe[a]},children:[i,n||o]}):n===null?null:n||i||o}const[dIe,I2]=R0({offsetBottom:!1,offsetTop:!1,describedBy:void 0,getStyles:null,inputId:void 0,labelId:void 0});var bi={wrapper:"m_6c018570",input:"m_8fb7ebe7",section:"m_82577fc2",placeholder:"m_88bacfd0",root:"m_46b77525",label:"m_8fdc1311",required:"m_78a94662",error:"m_8f816625",description:"m_fe47ce59"};const pIe=(e,{size:r})=>({description:{"--input-description-size":r===void 0?void 0:`calc(${Io(r)} - ${Me(2)})`}}),O2=ht((e,r)=>{const n=He("InputDescription",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,__staticSelector:d,__inheritStyles:h=!0,attributes:f,variant:g,...b}=He("InputDescription",null,n),x=I2(),w=Dt({name:["InputWrapper",d],props:n,classes:bi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:f,rootSelector:"description",vars:c,varsResolver:pIe}),k=h&&x?.getStyles||w;return y.jsx(Re,{component:"p",ref:r,variant:g,size:u,...k("description",x?.getStyles?{className:a,style:i}:void 0),...b})});O2.classes=bi,O2.displayName="@mantine/core/InputDescription";const hIe=(e,{size:r})=>({error:{"--input-error-size":r===void 0?void 0:`calc(${Io(r)} - ${Me(2)})`}}),j2=ht((e,r)=>{const n=He("InputError",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,attributes:d,__staticSelector:h,__inheritStyles:f=!0,variant:g,...b}=n,x=Dt({name:["InputWrapper",h],props:n,classes:bi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:d,rootSelector:"error",vars:c,varsResolver:hIe}),w=I2(),k=f&&w?.getStyles||x;return y.jsx(Re,{component:"p",ref:r,variant:g,size:u,...k("error",w?.getStyles?{className:a,style:i}:void 0),...b})});j2.classes=bi,j2.displayName="@mantine/core/InputError";const NY={labelElement:"label"},fIe=(e,{size:r})=>({label:{"--input-label-size":Io(r),"--input-asterisk-color":void 0}}),L2=ht((e,r)=>{const n=He("InputLabel",NY,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,labelElement:u,size:d,required:h,htmlFor:f,onMouseDown:g,children:b,__staticSelector:x,variant:w,mod:k,attributes:C,..._}=He("InputLabel",NY,n),T=Dt({name:["InputWrapper",x],props:n,classes:bi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:C,rootSelector:"label",vars:c,varsResolver:fIe}),A=I2(),R=A?.getStyles||T;return y.jsxs(Re,{...R("label",A?.getStyles?{className:a,style:i}:void 0),component:u,variant:w,size:d,ref:r,htmlFor:u==="label"?f:void 0,mod:[{required:h},k],onMouseDown:D=>{g?.(D),!D.defaultPrevented&&D.detail>1&&D.preventDefault()},..._,children:[b,h&&y.jsx("span",{...R("required"),"aria-hidden":!0,children:" *"})]})});L2.classes=bi,L2.displayName="@mantine/core/InputLabel";const V7=ht((e,r)=>{const n=He("InputPlaceholder",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,__staticSelector:u,variant:d,error:h,mod:f,attributes:g,...b}=n,x=Dt({name:["InputPlaceholder",u],props:n,classes:bi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,rootSelector:"placeholder"});return y.jsx(Re,{...x("placeholder"),mod:[{error:!!h},f],component:"span",variant:d,ref:r,...b})});V7.classes=bi,V7.displayName="@mantine/core/InputPlaceholder";function mIe(e,{hasDescription:r,hasError:n}){const o=e.findIndex(l=>l==="input"),a=e.slice(0,o),i=e.slice(o+1),s=r&&a.includes("description")||n&&a.includes("error");return{offsetBottom:r&&i.includes("description")||n&&i.includes("error"),offsetTop:s}}const gIe={labelElement:"label",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},yIe=(e,{size:r})=>({label:{"--input-label-size":Io(r),"--input-asterisk-color":void 0},error:{"--input-error-size":r===void 0?void 0:`calc(${Io(r)} - ${Me(2)})`},description:{"--input-description-size":r===void 0?void 0:`calc(${Io(r)} - ${Me(2)})`}}),q7=ht((e,r)=>{const n=He("InputWrapper",gIe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,variant:d,__staticSelector:h,inputContainer:f,inputWrapperOrder:g,label:b,error:x,description:w,labelProps:k,descriptionProps:C,errorProps:_,labelElement:T,children:A,withAsterisk:R,id:D,required:N,__stylesApiProps:M,mod:O,attributes:F,...L}=n,U=Dt({name:["InputWrapper",h],props:M||n,classes:bi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:F,vars:c,varsResolver:yIe}),P={size:u,variant:d,__staticSelector:h},V=fi(D),I=typeof R=="boolean"?R:N,H=_?.id||`${V}-error`,q=C?.id||`${V}-description`,Z=V,W=!!x&&typeof x!="boolean",G=!!w,K=`${W?H:""} ${G?q:""}`,j=K.trim().length>0?K.trim():void 0,Y=k?.id||`${V}-label`,Q=b&&y.jsx(L2,{labelElement:T,id:Y,htmlFor:Z,required:I,...P,...k,children:b},"label"),J=G&&y.jsx(O2,{...C,...P,size:C?.size||P.size,id:C?.id||q,children:w},"description"),ie=y.jsx(E.Fragment,{children:f(A)},"input"),ne=W&&E.createElement(j2,{..._,...P,size:_?.size||P.size,key:"error",id:_?.id||H},x),re=g.map(ge=>{switch(ge){case"label":return Q;case"input":return ie;case"description":return J;case"error":return ne;default:return null}});return y.jsx(dIe,{value:{getStyles:U,describedBy:j,inputId:Z,labelId:Y,...mIe(g,{hasDescription:G,hasError:W})},children:y.jsx(Re,{ref:r,variant:d,size:u,mod:[{error:!!x},O],...U("root"),...L,children:re})})});q7.classes=bi,q7.displayName="@mantine/core/InputWrapper";const bIe={variant:"default",leftSectionPointerEvents:"none",rightSectionPointerEvents:"none",withAria:!0,withErrorStyles:!0,size:"sm"},vIe=(e,r,n)=>({wrapper:{"--input-margin-top":n.offsetTop?"calc(var(--mantine-spacing-xs) / 2)":void 0,"--input-margin-bottom":n.offsetBottom?"calc(var(--mantine-spacing-xs) / 2)":void 0,"--input-height":kr(r.size,"input-height"),"--input-fz":Io(r.size),"--input-radius":r.radius===void 0?void 0:Pn(r.radius),"--input-left-section-width":r.leftSectionWidth!==void 0?Me(r.leftSectionWidth):void 0,"--input-right-section-width":r.rightSectionWidth!==void 0?Me(r.rightSectionWidth):void 0,"--input-padding-y":r.multiline?kr(r.size,"input-padding-y"):void 0,"--input-left-section-pointer-events":r.leftSectionPointerEvents,"--input-right-section-pointer-events":r.rightSectionPointerEvents}}),La=so((e,r)=>{const n=He("Input",bIe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,required:c,__staticSelector:u,__stylesApiProps:d,size:h,wrapperProps:f,error:g,disabled:b,leftSection:x,leftSectionProps:w,leftSectionWidth:k,rightSection:C,rightSectionProps:_,rightSectionWidth:T,rightSectionPointerEvents:A,leftSectionPointerEvents:R,variant:D,vars:N,pointer:M,multiline:O,radius:F,id:L,withAria:U,withErrorStyles:P,mod:V,inputSize:I,attributes:H,__clearSection:q,__clearable:Z,__defaultRightSection:W,...G}=n,{styleProps:K,rest:j}=WU(G),Y=I2(),Q={offsetBottom:Y?.offsetBottom,offsetTop:Y?.offsetTop},J=Dt({name:["Input",u],props:d||n,classes:bi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:H,stylesCtx:Q,rootSelector:"wrapper",vars:N,varsResolver:vIe}),ie=U?{required:c,disabled:b,"aria-invalid":!!g,"aria-describedby":Y?.describedBy,id:Y?.inputId||L}:{},ne=uIe({__clearable:Z,__clearSection:q,rightSection:C,__defaultRightSection:W,size:h});return y.jsx(sIe,{value:{size:h||"sm"},children:y.jsxs(Re,{...J("wrapper"),...K,...f,mod:[{error:!!g&&P,pointer:M,disabled:b,multiline:O,"data-with-right-section":!!ne,"data-with-left-section":!!x},V],variant:D,size:h,children:[x&&y.jsx("div",{...w,"data-position":"left",...J("section",{className:w?.className,style:w?.style}),children:x}),y.jsx(Re,{component:"input",...j,...ie,ref:r,required:c,mod:{disabled:b,error:!!g&&P},variant:D,__size:I,...J("input")}),ne&&y.jsx("div",{..._,"data-position":"right",...J("section",{className:_?.className,style:_?.style}),children:ne})]})})});La.classes=bi,La.Wrapper=q7,La.Label=L2,La.Error=j2,La.Description=O2,La.Placeholder=V7,La.ClearButton=RY,La.displayName="@mantine/core/Input";const xIe={gap:{type:"spacing",property:"gap"},rowGap:{type:"spacing",property:"rowGap"},columnGap:{type:"spacing",property:"columnGap"},align:{type:"identity",property:"alignItems"},justify:{type:"identity",property:"justifyContent"},wrap:{type:"identity",property:"flexWrap"},direction:{type:"identity",property:"flexDirection"}};var DY={root:"m_8bffd616"};const mc=so((e,r)=>{const n=He("Flex",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,gap:u,rowGap:d,columnGap:h,align:f,justify:g,wrap:b,direction:x,attributes:w,...k}=n,C=Dt({name:"Flex",classes:DY,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:w,vars:c}),_=vo(),T=u2(),A=XU({styleProps:{gap:u,rowGap:d,columnGap:h,align:f,justify:g,wrap:b,direction:x},theme:_,data:xIe});return y.jsxs(y.Fragment,{children:[A.hasResponsiveStyles&&y.jsx(c2,{selector:`.${T}`,styles:A.styles,media:A.media}),y.jsx(Re,{ref:r,...C("root",{className:T,style:Uf(A.inlineStyles)}),...k})]})});mc.classes=DY,mc.displayName="@mantine/core/Flex";function wIe(e,r){if(!r||!e)return!1;let n=r.parentNode;for(;n!=null;){if(n===e)return!0;n=n.parentNode}return!1}function kIe({target:e,parent:r,ref:n,displayAfterTransitionEnd:o}){const a=E.useRef(-1),[i,s]=E.useState(!1),[l,c]=E.useState(typeof o=="boolean"?o:!1),u=()=>{if(!e||!r||!n.current)return;const g=e.getBoundingClientRect(),b=r.getBoundingClientRect(),x=window.getComputedStyle(e),w=window.getComputedStyle(r),k=Nu(x.borderTopWidth)+Nu(w.borderTopWidth),C=Nu(x.borderLeftWidth)+Nu(w.borderLeftWidth),_={top:g.top-b.top-k,left:g.left-b.left-C,width:g.width,height:g.height};n.current.style.transform=`translateY(${_.top}px) translateX(${_.left}px)`,n.current.style.width=`${_.width}px`,n.current.style.height=`${_.height}px`},d=()=>{window.clearTimeout(a.current),n.current&&(n.current.style.transitionDuration="0ms"),u(),a.current=window.setTimeout(()=>{n.current&&(n.current.style.transitionDuration="")},30)},h=E.useRef(null),f=E.useRef(null);return E.useEffect(()=>{if(u(),e)return h.current=new ResizeObserver(d),h.current.observe(e),r&&(f.current=new ResizeObserver(d),f.current.observe(r)),()=>{h.current?.disconnect(),f.current?.disconnect()}},[r,e]),E.useEffect(()=>{if(r){const g=b=>{wIe(b.target,r)&&(d(),c(!1))};return r.addEventListener("transitionend",g),()=>{r.removeEventListener("transitionend",g)}}},[r]),NU(()=>{T$e()!=="test"&&s(!0)},20,{autoInvoke:!0}),DU(g=>{g.forEach(b=>{b.type==="attributes"&&b.attributeName==="dir"&&d()})},{attributes:!0,attributeFilter:["dir"]},()=>document.documentElement),{initialized:i,hidden:l}}var $Y={root:"m_96b553a6"};const _Ie=(e,{transitionDuration:r})=>({root:{"--transition-duration":typeof r=="number"?`${r}ms`:r}}),B2=ht((e,r)=>{const n=He("FloatingIndicator",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,target:u,parent:d,transitionDuration:h,mod:f,displayAfterTransitionEnd:g,attributes:b,...x}=n,w=Dt({name:"FloatingIndicator",classes:$Y,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:c,varsResolver:_Ie}),k=E.useRef(null),{initialized:C,hidden:_}=kIe({target:u,parent:d,ref:k,displayAfterTransitionEnd:g}),T=Hr(r,k);return!u||!d?null:y.jsx(Re,{ref:T,mod:[{initialized:C,hidden:_},f],...w("root"),...x})});B2.displayName="@mantine/core/FloatingIndicator",B2.classes=$Y;function MY({open:e,close:r,openDelay:n,closeDelay:o}){const a=E.useRef(-1),i=E.useRef(-1),s=()=>{window.clearTimeout(a.current),window.clearTimeout(i.current)},l=()=>{s(),n===0||n===void 0?e():a.current=window.setTimeout(e,n)},c=()=>{s(),o===0||o===void 0?r():i.current=window.setTimeout(r,o)};return E.useEffect(()=>s,[]),{openDropdown:l,closeDropdown:c}}function U7({style:e,size:r=16,...n}){return y.jsx("svg",{viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{...e,width:Me(r),height:Me(r),display:"block"},...n,children:y.jsx("path",{d:"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}U7.displayName="@mantine/core/AccordionChevron";var PY={root:"m_66836ed3",wrapper:"m_a5d60502",body:"m_667c2793",title:"m_6a03f287",label:"m_698f4f23",icon:"m_667f2a6a",message:"m_7fa78076",closeButton:"m_87f54839"};const EIe=(e,{radius:r,color:n,variant:o,autoContrast:a})=>{const i=e.variantColorResolver({color:n||e.primaryColor,theme:e,variant:o||"light",autoContrast:a});return{root:{"--alert-radius":r===void 0?void 0:Pn(r),"--alert-bg":n||o?i.background:void 0,"--alert-color":i.color,"--alert-bd":n||o?i.border:void 0}}},F2=ht((e,r)=>{const n=He("Alert",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,radius:u,color:d,title:h,children:f,id:g,icon:b,withCloseButton:x,onClose:w,closeButtonLabel:k,variant:C,autoContrast:_,attributes:T,...A}=n,R=Dt({name:"Alert",classes:PY,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:T,vars:c,varsResolver:EIe}),D=fi(g),N=h&&`${D}-title`||void 0,M=`${D}-body`;return y.jsx(Re,{id:D,...R("root",{variant:C}),variant:C,ref:r,...A,role:"alert","aria-describedby":f?M:void 0,"aria-labelledby":h?N:void 0,children:y.jsxs("div",{...R("wrapper"),children:[b&&y.jsx("div",{...R("icon"),children:b}),y.jsxs("div",{...R("body"),children:[h&&y.jsx("div",{...R("title"),"data-with-close-button":x||void 0,children:y.jsx("span",{id:N,...R("label"),children:h})}),f&&y.jsx("div",{id:M,...R("message"),"data-variant":C,children:f})]}),x&&y.jsx(wp,{...R("closeButton"),onClick:w,variant:"transparent",size:16,iconSize:16,"aria-label":k,unstyled:l})]})})});F2.classes=PY,F2.displayName="@mantine/core/Alert";var zY={root:"m_b6d8b162"};function SIe(e){if(e==="start")return"start";if(e==="end"||e)return"end"}const CIe={inherit:!1},TIe=(e,{variant:r,lineClamp:n,gradient:o,size:a,color:i})=>({root:{"--text-fz":Io(a),"--text-lh":VDe(a),"--text-gradient":r==="gradient"?Q9(o,e):void 0,"--text-line-clamp":typeof n=="number"?n.toString():void 0,"--text-color":i?Ia(i,e):void 0}}),ft=so((e,r)=>{const n=He("Text",CIe,e),{lineClamp:o,truncate:a,inline:i,inherit:s,gradient:l,span:c,__staticSelector:u,vars:d,className:h,style:f,classNames:g,styles:b,unstyled:x,variant:w,mod:k,size:C,attributes:_,...T}=n,A=Dt({name:["Text",u],props:n,classes:zY,className:h,style:f,classNames:g,styles:b,unstyled:x,attributes:_,vars:d,varsResolver:TIe});return y.jsx(Re,{...A("root",{focusable:!0}),ref:r,component:c?"span":"p",variant:w,mod:[{"data-truncate":SIe(a),"data-line-clamp":typeof o=="number","data-inline":i,"data-inherit":s},k],size:C,...T})});ft.classes=zY,ft.displayName="@mantine/core/Text";var IY={root:"m_849cf0da"};const AIe={underline:"hover"},W7=so((e,r)=>{const{underline:n,className:o,unstyled:a,mod:i,...s}=He("Anchor",AIe,e);return y.jsx(ft,{component:"a",ref:r,className:hs({[IY.root]:!a},o),...s,mod:[{underline:n},i],__staticSelector:"Anchor",unstyled:a})});W7.classes=IY,W7.displayName="@mantine/core/Anchor";var vi={dropdown:"m_88b62a41",search:"m_985517d8",options:"m_b2821a6e",option:"m_92253aa5",empty:"m_2530cd1d",header:"m_858f94bd",footer:"m_82b967cb",group:"m_254f3e4f",groupLabel:"m_2bb2e9e5",chevron:"m_2943220b",optionsDropdownOption:"m_390b5f4",optionsDropdownCheckIcon:"m_8ee53fc2"};const RIe={error:null},NIe=(e,{size:r,color:n})=>({chevron:{"--combobox-chevron-size":kr(r,"combobox-chevron-size"),"--combobox-chevron-color":n?Ia(n,e):void 0}}),Y7=ht((e,r)=>{const n=He("ComboboxChevron",RIe,e),{size:o,error:a,style:i,className:s,classNames:l,styles:c,unstyled:u,vars:d,mod:h,...f}=n,g=Dt({name:"ComboboxChevron",classes:vi,props:n,style:i,className:s,classNames:l,styles:c,unstyled:u,vars:d,varsResolver:NIe,rootSelector:"chevron"});return y.jsx(Re,{component:"svg",...f,...g("chevron"),size:o,viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",mod:["combobox-chevron",{error:a},h],ref:r,children:y.jsx("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})});Y7.classes=vi,Y7.displayName="@mantine/core/ComboboxChevron";const[DIe,xi]=hi("Combobox component was not found in tree"),OY=E.forwardRef(({size:e,onMouseDown:r,onClick:n,onClear:o,...a},i)=>y.jsx(La.ClearButton,{ref:i,tabIndex:-1,"aria-hidden":!0,...a,onMouseDown:s=>{s.preventDefault(),r?.(s)},onClick:s=>{o(),n?.(s)}}));OY.displayName="@mantine/core/ComboboxClearButton";const H2=ht((e,r)=>{const{classNames:n,styles:o,className:a,style:i,hidden:s,...l}=He("ComboboxDropdown",null,e),c=xi();return y.jsx(Rr.Dropdown,{...l,ref:r,role:"presentation","data-hidden":s||void 0,...c.getStyles("dropdown",{className:a,style:i,classNames:n,styles:o})})});H2.classes=vi,H2.displayName="@mantine/core/ComboboxDropdown";const $Ie={refProp:"ref"},jY=ht((e,r)=>{const{children:n,refProp:o}=He("ComboboxDropdownTarget",$Ie,e);if(xi(),!ps(n))throw new Error("Combobox.DropdownTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");return y.jsx(Rr.Target,{ref:r,refProp:o,children:n})});jY.displayName="@mantine/core/ComboboxDropdownTarget";const B0=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=He("ComboboxEmpty",null,e),c=xi();return y.jsx(Re,{ref:r,...c.getStyles("empty",{className:o,classNames:n,styles:i,style:a}),...l})});B0.classes=vi,B0.displayName="@mantine/core/ComboboxEmpty";function G7({onKeyDown:e,withKeyboardNavigation:r,withAriaAttributes:n,withExpandedAttribute:o,targetType:a,autoComplete:i}){const s=xi(),[l,c]=E.useState(null),u=d=>{if(e?.(d),!s.readOnly&&r){if(d.nativeEvent.isComposing)return;if(d.nativeEvent.code==="ArrowDown"&&(d.preventDefault(),s.store.dropdownOpened?c(s.store.selectNextOption()):(s.store.openDropdown("keyboard"),c(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex("selected",{scrollIntoView:!0}))),d.nativeEvent.code==="ArrowUp"&&(d.preventDefault(),s.store.dropdownOpened?c(s.store.selectPreviousOption()):(s.store.openDropdown("keyboard"),c(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex("selected",{scrollIntoView:!0}))),d.nativeEvent.code==="Enter"||d.nativeEvent.code==="NumpadEnter"){if(d.nativeEvent.keyCode===229)return;const h=s.store.getSelectedOptionIndex();s.store.dropdownOpened&&h!==-1?(d.preventDefault(),s.store.clickSelectedOption()):a==="button"&&(d.preventDefault(),s.store.openDropdown("keyboard"))}d.key==="Escape"&&s.store.closeDropdown("keyboard"),d.nativeEvent.code==="Space"&&a==="button"&&(d.preventDefault(),s.store.toggleDropdown("keyboard"))}};return{...n?{"aria-haspopup":"listbox","aria-expanded":o?!!(s.store.listId&&s.store.dropdownOpened):void 0,"aria-controls":s.store.dropdownOpened&&s.store.listId?s.store.listId:void 0,"aria-activedescendant":s.store.dropdownOpened&&l||void 0,autoComplete:i,"data-expanded":s.store.dropdownOpened||void 0,"data-mantine-stop-propagation":s.store.dropdownOpened||void 0}:{},onKeyDown:u}}const MIe={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},LY=ht((e,r)=>{const{children:n,refProp:o,withKeyboardNavigation:a,withAriaAttributes:i,withExpandedAttribute:s,targetType:l,autoComplete:c,...u}=He("ComboboxEventsTarget",MIe,e);if(!ps(n))throw new Error("Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const d=xi(),h=G7({targetType:l,withAriaAttributes:i,withKeyboardNavigation:a,withExpandedAttribute:s,onKeyDown:n.props.onKeyDown,autoComplete:c});return E.cloneElement(n,{...h,...u,[o]:Hr(r,d.store.targetRef,r2(n))})});LY.displayName="@mantine/core/ComboboxEventsTarget";const X7=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=He("ComboboxFooter",null,e),c=xi();return y.jsx(Re,{ref:r,...c.getStyles("footer",{className:o,classNames:n,style:a,styles:i}),...l,onMouseDown:u=>{u.preventDefault()}})});X7.classes=vi,X7.displayName="@mantine/core/ComboboxFooter";const K7=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,children:l,label:c,id:u,...d}=He("ComboboxGroup",null,e),h=xi(),f=fi(u);return y.jsxs(Re,{ref:r,role:"group","aria-labelledby":c?f:void 0,...h.getStyles("group",{className:o,classNames:n,style:a,styles:i}),...d,children:[c&&y.jsx("div",{id:f,...h.getStyles("groupLabel",{classNames:n,styles:i}),children:c}),l]})});K7.classes=vi,K7.displayName="@mantine/core/ComboboxGroup";const Z7=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=He("ComboboxHeader",null,e),c=xi();return y.jsx(Re,{ref:r,...c.getStyles("header",{className:o,classNames:n,style:a,styles:i}),...l,onMouseDown:u=>{u.preventDefault()}})});Z7.classes=vi,Z7.displayName="@mantine/core/ComboboxHeader";function BY({value:e,valuesDivider:r=",",...n}){return y.jsx("input",{type:"hidden",value:Array.isArray(e)?e.join(r):e||"",...n})}BY.displayName="@mantine/core/ComboboxHiddenInput";const F0=ht((e,r)=>{const n=He("ComboboxOption",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,onClick:c,id:u,active:d,onMouseDown:h,onMouseOver:f,disabled:g,selected:b,mod:x,...w}=n,k=xi(),C=E.useId(),_=u||C;return y.jsx(Re,{...k.getStyles("option",{className:a,classNames:o,styles:s,style:i}),...w,ref:r,id:_,mod:["combobox-option",{"combobox-active":d,"combobox-disabled":g,"combobox-selected":b},x],role:"option",onClick:T=>{g?T.preventDefault():(k.onOptionSubmit?.(n.value,n),c?.(T))},onMouseDown:T=>{T.preventDefault(),h?.(T)},onMouseOver:T=>{k.resetSelectionOnOptionHover&&k.store.resetSelectedOption(),f?.(T)}})});F0.classes=vi,F0.displayName="@mantine/core/ComboboxOption";const V2=ht((e,r)=>{const n=He("ComboboxOptions",null,e),{classNames:o,className:a,style:i,styles:s,id:l,onMouseDown:c,labelledBy:u,...d}=n,h=xi(),f=fi(l);return E.useEffect(()=>{h.store.setListId(f)},[f]),y.jsx(Re,{ref:r,...h.getStyles("options",{className:a,style:i,classNames:o,styles:s}),...d,id:f,role:"listbox","aria-labelledby":u,onMouseDown:g=>{g.preventDefault(),c?.(g)}})});V2.classes=vi,V2.displayName="@mantine/core/ComboboxOptions";const PIe={withAriaAttributes:!0,withKeyboardNavigation:!0},Q7=ht((e,r)=>{const n=He("ComboboxSearch",PIe,e),{classNames:o,styles:a,unstyled:i,vars:s,withAriaAttributes:l,onKeyDown:c,withKeyboardNavigation:u,size:d,...h}=n,f=xi(),g=f.getStyles("search"),b=G7({targetType:"input",withAriaAttributes:l,withKeyboardNavigation:u,withExpandedAttribute:!1,onKeyDown:c,autoComplete:"off"});return y.jsx(La,{ref:Hr(r,f.store.searchRef),classNames:[{input:g.className},o],styles:[{input:g.style},a],size:d||f.size,...b,...h,__staticSelector:"Combobox"})});Q7.classes=vi,Q7.displayName="@mantine/core/ComboboxSearch";const zIe={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},J7=ht((e,r)=>{const{children:n,refProp:o,withKeyboardNavigation:a,withAriaAttributes:i,withExpandedAttribute:s,targetType:l,autoComplete:c,...u}=He("ComboboxTarget",zIe,e);if(!ps(n))throw new Error("Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const d=xi(),h=G7({targetType:l,withAriaAttributes:i,withKeyboardNavigation:a,withExpandedAttribute:s,onKeyDown:n.props.onKeyDown,autoComplete:c}),f=E.cloneElement(n,{...h,...u});return y.jsx(Rr.Target,{ref:Hr(r,d.store.targetRef),children:f})});J7.displayName="@mantine/core/ComboboxTarget";function IIe(e,r,n){for(let o=e-1;o>=0;o-=1)if(!r[o].hasAttribute("data-combobox-disabled"))return o;if(n){for(let o=r.length-1;o>-1;o-=1)if(!r[o].hasAttribute("data-combobox-disabled"))return o}return e}function OIe(e,r,n){for(let o=e+1;o{l||(c(!0),a?.(I))},[c,a,l]),k=E.useCallback((I="unknown")=>{l&&(c(!1),o?.(I))},[c,o,l]),C=E.useCallback((I="unknown")=>{l?k(I):w(I)},[k,w,l]),_=E.useCallback(()=>{const I=document.querySelector(`#${u.current} [data-combobox-selected]`);I?.removeAttribute("data-combobox-selected"),I?.removeAttribute("aria-selected")},[]),T=E.useCallback(I=>{const H=document.getElementById(u.current)?.querySelectorAll("[data-combobox-option]");if(!H)return null;const q=I>=H.length?0:I<0?H.length-1:I;return d.current=q,H?.[q]&&!H[q].hasAttribute("data-combobox-disabled")?(_(),H[q].setAttribute("data-combobox-selected","true"),H[q].setAttribute("aria-selected","true"),H[q].scrollIntoView({block:"nearest",behavior:s}),H[q].id):null},[s,_]),A=E.useCallback(()=>{const I=document.querySelector(`#${u.current} [data-combobox-active]`);if(I){const H=document.querySelectorAll(`#${u.current} [data-combobox-option]`),q=Array.from(H).findIndex(Z=>Z===I);return T(q)}return T(0)},[T]),R=E.useCallback(()=>T(OIe(d.current,document.querySelectorAll(`#${u.current} [data-combobox-option]`),i)),[T,i]),D=E.useCallback(()=>T(IIe(d.current,document.querySelectorAll(`#${u.current} [data-combobox-option]`),i)),[T,i]),N=E.useCallback(()=>T(jIe(document.querySelectorAll(`#${u.current} [data-combobox-option]`))),[T]),M=E.useCallback((I="selected",H)=>{x.current=window.setTimeout(()=>{const q=document.querySelectorAll(`#${u.current} [data-combobox-option]`),Z=Array.from(q).findIndex(W=>W.hasAttribute(`data-combobox-${I}`));d.current=Z,H?.scrollIntoView&&q[Z]?.scrollIntoView({block:"nearest",behavior:s})},0)},[]),O=E.useCallback(()=>{d.current=-1,_()},[_]),F=E.useCallback(()=>{document.querySelectorAll(`#${u.current} [data-combobox-option]`)?.[d.current]?.click()},[]),L=E.useCallback(I=>{u.current=I},[]),U=E.useCallback(()=>{g.current=window.setTimeout(()=>h.current?.focus(),0)},[]),P=E.useCallback(()=>{b.current=window.setTimeout(()=>f.current?.focus(),0)},[]),V=E.useCallback(()=>d.current,[]);return E.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(b.current),window.clearTimeout(x.current)},[]),{dropdownOpened:l,openDropdown:w,closeDropdown:k,toggleDropdown:C,selectedOptionIndex:d.current,getSelectedOptionIndex:V,selectOption:T,selectFirstOption:N,selectActiveOption:A,selectNextOption:R,selectPreviousOption:D,resetSelectedOption:O,updateSelectedOptionIndex:M,listId:u.current,setListId:L,clickSelectedOption:F,searchRef:h,focusSearchInput:U,targetRef:f,focusTarget:P}}const LIe={keepMounted:!0,withinPortal:!0,resetSelectionOnOptionHover:!1,width:"target",transitionProps:{transition:"fade",duration:0},size:"sm"},BIe=(e,{size:r,dropdownPadding:n})=>({options:{"--combobox-option-fz":Io(r),"--combobox-option-padding":kr(r,"combobox-option-padding")},dropdown:{"--combobox-padding":n===void 0?void 0:Me(n),"--combobox-option-fz":Io(r),"--combobox-option-padding":kr(r,"combobox-option-padding")}});function lo(e){const r=He("Combobox",LIe,e),{classNames:n,styles:o,unstyled:a,children:i,store:s,vars:l,onOptionSubmit:c,onClose:u,size:d,dropdownPadding:h,resetSelectionOnOptionHover:f,__staticSelector:g,readOnly:b,attributes:x,...w}=r,k=FY(),C=s||k,_=Dt({name:g||"Combobox",classes:vi,props:r,classNames:n,styles:o,unstyled:a,attributes:x,vars:l,varsResolver:BIe}),T=()=>{u?.(),C.closeDropdown()};return y.jsx(DIe,{value:{getStyles:_,store:C,onOptionSubmit:c,size:d,resetSelectionOnOptionHover:f,readOnly:b},children:y.jsx(Rr,{opened:C.dropdownOpened,preventPositionChangeWhenVisible:!0,...w,onChange:A=>!A&&T(),withRoles:!1,unstyled:a,children:i})})}const FIe=e=>e;lo.extend=FIe,lo.classes=vi,lo.displayName="@mantine/core/Combobox",lo.Target=J7,lo.Dropdown=H2,lo.Options=V2,lo.Option=F0,lo.Search=Q7,lo.Empty=B0,lo.Chevron=Y7,lo.Footer=X7,lo.Header=Z7,lo.EventsTarget=LY,lo.DropdownTarget=jY,lo.Group=K7,lo.ClearButton=OY,lo.HiddenInput=BY;function HY({size:e,style:r,...n}){const o=e!==void 0?{width:Me(e),height:Me(e),...r}:r;return y.jsx("svg",{viewBox:"0 0 10 7",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:o,"aria-hidden":!0,...n,children:y.jsx("path",{d:"M4 4.586L1.707 2.293A1 1 0 1 0 .293 3.707l3 3a.997.997 0 0 0 1.414 0l5-5A1 1 0 1 0 8.293.293L4 4.586z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}var VY={root:"m_347db0ec","root--dot":"m_fbd81e3d",label:"m_5add502a",section:"m_91fdda9b"};const HIe=(e,{radius:r,color:n,gradient:o,variant:a,size:i,autoContrast:s})=>{const l=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:s});return{root:{"--badge-height":kr(i,"badge-height"),"--badge-padding-x":kr(i,"badge-padding-x"),"--badge-fz":kr(i,"badge-fz"),"--badge-radius":r===void 0?void 0:Pn(r),"--badge-bg":n||a?l.background:void 0,"--badge-color":n||a?l.color:void 0,"--badge-bd":n||a?l.border:void 0,"--badge-dot-color":a==="dot"?Ia(n,e):void 0}}},vl=so((e,r)=>{const n=He("Badge",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,radius:u,color:d,gradient:h,leftSection:f,rightSection:g,children:b,variant:x,fullWidth:w,autoContrast:k,circle:C,mod:_,attributes:T,...A}=n,R=Dt({name:"Badge",props:n,classes:VY,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:T,vars:c,varsResolver:HIe});return y.jsxs(Re,{variant:x,mod:[{block:w,circle:C,"with-right-section":!!g,"with-left-section":!!f},_],...R("root",{variant:x}),ref:r,...A,children:[f&&y.jsx("span",{...R("section"),"data-position":"left",children:f}),y.jsx("span",{...R("label"),children:b}),g&&y.jsx("span",{...R("section"),"data-position":"right",children:g})]})});vl.classes=VY,vl.displayName="@mantine/core/Badge";var qY={root:"m_8b3717df",breadcrumb:"m_f678d540",separator:"m_3b8f2208"};const VIe={separator:"/"},qIe=(e,{separatorMargin:r})=>({root:{"--bc-separator-margin":cc(r)}}),q2=ht((e,r)=>{const n=He("Breadcrumbs",VIe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,children:u,separator:d,separatorMargin:h,attributes:f,...g}=n,b=Dt({name:"Breadcrumbs",classes:qY,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:f,vars:c,varsResolver:qIe}),x=E.Children.toArray(u).reduce((w,k,C,_)=>{const T=ps(k)?E.cloneElement(k,{...b("breadcrumb",{className:k.props?.className}),key:C}):E.createElement("div",{...b("breadcrumb"),key:C},k);return w.push(T),C!==_.length-1&&w.push(E.createElement(Re,{...b("separator"),key:`separator-${C}`},d)),w},[]);return y.jsx(Re,{ref:r,...b("root"),...g,children:x})});q2.classes=qY,q2.displayName="@mantine/core/Breadcrumbs";var lm={root:"m_77c9d27d",inner:"m_80f1301b",label:"m_811560b9",section:"m_a74036a",loader:"m_a25b86ee",group:"m_80d6d844",groupSection:"m_70be2a01"};const UY={orientation:"horizontal"},UIe=(e,{borderWidth:r})=>({group:{"--button-border-width":Me(r)}}),eS=ht((e,r)=>{const n=He("ButtonGroup",UY,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,orientation:c,vars:u,borderWidth:d,variant:h,mod:f,attributes:g,...b}=He("ButtonGroup",UY,e),x=Dt({name:"ButtonGroup",props:n,classes:lm,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:u,varsResolver:UIe,rootSelector:"group"});return y.jsx(Re,{...x("group"),ref:r,variant:h,mod:[{"data-orientation":c},f],role:"group",...b})});eS.classes=lm,eS.displayName="@mantine/core/ButtonGroup";const WIe=(e,{radius:r,color:n,gradient:o,variant:a,autoContrast:i,size:s})=>{const l=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:i});return{groupSection:{"--section-height":kr(s,"section-height"),"--section-padding-x":kr(s,"section-padding-x"),"--section-fz":s?.includes("compact")?Io(s.replace("compact-","")):Io(s),"--section-radius":r===void 0?void 0:Pn(r),"--section-bg":n||a?l.background:void 0,"--section-color":l.color,"--section-bd":n||a?l.border:void 0}}},tS=ht((e,r)=>{const n=He("ButtonGroupSection",null,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,vars:c,variant:u,gradient:d,radius:h,autoContrast:f,attributes:g,...b}=n,x=Dt({name:"ButtonGroupSection",props:n,classes:lm,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:WIe,rootSelector:"groupSection"});return y.jsx(Re,{...x("groupSection"),ref:r,variant:u,...b})});tS.classes=lm,tS.displayName="@mantine/core/ButtonGroupSection";const YIe={in:{opacity:1,transform:`translate(-50%, calc(-50% + ${Me(1)}))`},out:{opacity:0,transform:"translate(-50%, -200%)"},common:{transformOrigin:"center"},transitionProperty:"transform, opacity"},GIe=(e,{radius:r,color:n,gradient:o,variant:a,size:i,justify:s,autoContrast:l})=>{const c=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:l});return{root:{"--button-justify":s,"--button-height":kr(i,"button-height"),"--button-padding-x":kr(i,"button-padding-x"),"--button-fz":i?.includes("compact")?Io(i.replace("compact-","")):Io(i),"--button-radius":r===void 0?void 0:Pn(r),"--button-bg":n||a?c.background:void 0,"--button-hover":n||a?c.hover:void 0,"--button-color":c.color,"--button-bd":n||a?c.border:void 0,"--button-hover-color":n||a?c.hoverColor:void 0}}},Kn=so((e,r)=>{const n=He("Button",null,e),{style:o,vars:a,className:i,color:s,disabled:l,children:c,leftSection:u,rightSection:d,fullWidth:h,variant:f,radius:g,loading:b,loaderProps:x,gradient:w,classNames:k,styles:C,unstyled:_,"data-disabled":T,autoContrast:A,mod:R,attributes:D,...N}=n,M=Dt({name:"Button",props:n,classes:lm,className:i,style:o,classNames:k,styles:C,unstyled:_,attributes:D,vars:a,varsResolver:GIe}),O=!!u,F=!!d;return y.jsxs(Er,{ref:r,...M("root",{active:!l&&!b&&!T}),unstyled:_,variant:f,disabled:l||b,mod:[{disabled:l||T,loading:b,block:h,"with-left-section":O,"with-right-section":F},R],...N,children:[typeof b=="boolean"&&y.jsx(Du,{mounted:b,transition:YIe,duration:150,children:L=>y.jsx(Re,{component:"span",...M("loader",{style:L}),"aria-hidden":!0,children:y.jsx(im,{color:"var(--button-color)",size:"calc(var(--button-height) / 1.8)",...x})})}),y.jsxs("span",{...M("inner"),children:[u&&y.jsx(Re,{component:"span",...M("section"),mod:{position:"left"},children:u}),y.jsx(Re,{component:"span",mod:{loading:b},...M("label"),children:c}),d&&y.jsx(Re,{component:"span",...M("section"),mod:{position:"right"},children:d})]})]})});Kn.classes=lm,Kn.displayName="@mantine/core/Button",Kn.Group=eS,Kn.GroupSection=tS;const[XIe,KIe]=hi("Card component was not found in tree");var rS={root:"m_e615b15f",section:"m_599a2148"};const U2=so((e,r)=>{const n=He("CardSection",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,withBorder:c,inheritPadding:u,mod:d,...h}=n,f=KIe();return y.jsx(Re,{ref:r,mod:[{"with-border":c,"inherit-padding":u},d],...f.getStyles("section",{className:a,style:i,styles:s,classNames:o}),...h})});U2.classes=rS,U2.displayName="@mantine/core/CardSection";const ZIe=(e,{padding:r})=>({root:{"--card-padding":cc(r)}}),W2=so((e,r)=>{const n=He("Card",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,children:u,padding:d,attributes:h,...f}=n,g=Dt({name:"Card",props:n,classes:rS,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:ZIe}),b=E.Children.toArray(u),x=b.map((w,k)=>typeof w=="object"&&w&&"type"in w&&w.type===U2?E.cloneElement(w,{"data-first-section":k===0||void 0,"data-last-section":k===b.length-1||void 0}):w);return y.jsx(XIe,{value:{getStyles:g},children:y.jsx(om,{ref:r,unstyled:l,...g("root"),...f,children:x})})});W2.classes=rS,W2.displayName="@mantine/core/Card",W2.Section=U2;var WY={root:"m_de3d2490",colorOverlay:"m_862f3d1b",shadowOverlay:"m_98ae7f22",alphaOverlay:"m_95709ac0",childrenOverlay:"m_93e74e3"};const YY={withShadow:!0},QIe=(e,{radius:r,size:n})=>({root:{"--cs-radius":r===void 0?void 0:Pn(r),"--cs-size":Me(n)}}),H0=so((e,r)=>{const n=He("ColorSwatch",YY,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,size:d,radius:h,withShadow:f,children:g,variant:b,attributes:x,...w}=He("ColorSwatch",YY,n),k=Dt({name:"ColorSwatch",props:n,classes:WY,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:x,vars:c,varsResolver:QIe});return y.jsxs(Re,{ref:r,variant:b,size:d,...k("root",{focusable:!0}),...w,children:[y.jsx("span",{...k("alphaOverlay")}),f&&y.jsx("span",{...k("shadowOverlay")}),y.jsx("span",{...k("colorOverlay",{style:{backgroundColor:u}})}),y.jsx("span",{...k("childrenOverlay"),children:g})]})});H0.classes=WY,H0.displayName="@mantine/core/ColorSwatch";const JIe={timeout:1e3};function GY(e){const{children:r,timeout:n,value:o,...a}=He("CopyButton",JIe,e),i=GDe({timeout:n});return y.jsx(y.Fragment,{children:r({copy:()=>i.copy(o),copied:i.copied,...a})})}GY.displayName="@mantine/core/CopyButton";var XY={root:"m_3eebeb36",label:"m_9e365f20"};const eOe={orientation:"horizontal"},tOe=(e,{color:r,variant:n,size:o})=>({root:{"--divider-color":r?Ia(r,e):void 0,"--divider-border-style":n,"--divider-size":kr(o,"divider-size")}}),kp=ht((e,r)=>{const n=He("Divider",eOe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,orientation:d,label:h,labelPosition:f,mod:g,attributes:b,...x}=n,w=Dt({name:"Divider",classes:XY,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:c,varsResolver:tOe});return y.jsx(Re,{ref:r,mod:[{orientation:d,"with-label":!!h},g],...w("root"),...x,role:"separator",children:h&&y.jsx(Re,{component:"span",mod:{position:f},...w("label"),children:h})})});kp.classes=XY,kp.displayName="@mantine/core/Divider";const[KY,ZY]=hi("Grid component was not found in tree"),nS=(e,r)=>e==="content"?"auto":e==="auto"?"0rem":e?`${100/(r/e)}%`:void 0,QY=(e,r,n)=>n||e==="auto"?"100%":e==="content"?"unset":nS(e,r),JY=(e,r)=>{if(e)return e==="auto"||r?"1":"auto"},eG=(e,r)=>e===0?"0":e?`${100/(r/e)}%`:void 0;function rOe({span:e,order:r,offset:n,selector:o}){const a=vo(),i=ZY(),s=i.breakpoints||a.breakpoints,l=D0(e)===void 0?12:D0(e),c=Uf({"--col-order":D0(r)?.toString(),"--col-flex-grow":JY(l,i.grow),"--col-flex-basis":nS(l,i.columns),"--col-width":l==="content"?"auto":void 0,"--col-max-width":QY(l,i.columns,i.grow),"--col-offset":eG(D0(n),i.columns)}),u=zo(s).reduce((h,f)=>(h[f]||(h[f]={}),typeof r=="object"&&r[f]!==void 0&&(h[f]["--col-order"]=r[f]?.toString()),typeof e=="object"&&e[f]!==void 0&&(h[f]["--col-flex-grow"]=JY(e[f],i.grow),h[f]["--col-flex-basis"]=nS(e[f],i.columns),h[f]["--col-width"]=e[f]==="content"?"auto":void 0,h[f]["--col-max-width"]=QY(e[f],i.columns,i.grow)),typeof n=="object"&&n[f]!==void 0&&(h[f]["--col-offset"]=eG(n[f],i.columns)),h),{}),d=gU(zo(u),s).filter(h=>zo(u[h.value]).length>0).map(h=>({query:i.type==="container"?`mantine-grid (min-width: ${s[h.value]})`:`(min-width: ${s[h.value]})`,styles:u[h.value]}));return y.jsx(c2,{styles:c,media:i.type==="container"?void 0:d,container:i.type==="container"?d:void 0,selector:o})}var oS={container:"m_8478a6da",root:"m_410352e9",inner:"m_dee7bd2f",col:"m_96bdd299"};const nOe={span:12},_p=ht((e,r)=>{const n=He("GridCol",nOe,e),{classNames:o,className:a,style:i,styles:s,vars:l,span:c,order:u,offset:d,...h}=n,f=ZY(),g=u2();return y.jsxs(y.Fragment,{children:[y.jsx(rOe,{selector:`.${g}`,span:c,order:u,offset:d}),y.jsx(Re,{ref:r,...f.getStyles("col",{className:hs(a,g),style:i,classNames:o,styles:s}),...h})]})});_p.classes=oS,_p.displayName="@mantine/core/GridCol";function tG({gutter:e,selector:r,breakpoints:n,type:o}){const a=vo(),i=n||a.breakpoints,s=Uf({"--grid-gutter":cc(D0(e))}),l=zo(i).reduce((u,d)=>(u[d]||(u[d]={}),typeof e=="object"&&e[d]!==void 0&&(u[d]["--grid-gutter"]=cc(e[d])),u),{}),c=gU(zo(l),i).filter(u=>zo(l[u.value]).length>0).map(u=>({query:o==="container"?`mantine-grid (min-width: ${i[u.value]})`:`(min-width: ${i[u.value]})`,styles:l[u.value]}));return y.jsx(c2,{styles:s,media:o==="container"?void 0:c,container:o==="container"?c:void 0,selector:r})}const oOe={gutter:"md",grow:!1,columns:12},aOe=(e,{justify:r,align:n,overflow:o})=>({root:{"--grid-justify":r,"--grid-align":n,"--grid-overflow":o}}),V0=ht((e,r)=>{const n=He("Grid",oOe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,grow:u,gutter:d,columns:h,align:f,justify:g,children:b,breakpoints:x,type:w,attributes:k,...C}=n,_=Dt({name:"Grid",classes:oS,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:k,vars:c,varsResolver:aOe}),T=u2();return w==="container"&&x?y.jsxs(KY,{value:{getStyles:_,grow:u,columns:h,breakpoints:x,type:w},children:[y.jsx(tG,{selector:`.${T}`,...n}),y.jsx("div",{..._("container"),children:y.jsx(Re,{ref:r,..._("root",{className:T}),...C,children:y.jsx("div",{..._("inner"),children:b})})})]}):y.jsxs(KY,{value:{getStyles:_,grow:u,columns:h,breakpoints:x,type:w},children:[y.jsx(tG,{selector:`.${T}`,...n}),y.jsx(Re,{ref:r,..._("root",{className:T}),...C,children:y.jsx("div",{..._("inner"),children:b})})]})});V0.classes=oS,V0.displayName="@mantine/core/Grid",V0.Col=_p;function rG({color:e,theme:r,defaultShade:n}){const o=Au({color:e,theme:r});return o.isThemeColor?o.shade===void 0?`var(--mantine-color-${o.color}-${n})`:`var(${o.variable})`:e}var nG={root:"m_bcb3f3c2"};const iOe={color:"yellow"},sOe=(e,{color:r})=>({root:{"--mark-bg-dark":rG({color:r,theme:e,defaultShade:5}),"--mark-bg-light":rG({color:r,theme:e,defaultShade:2})}}),aS=ht((e,r)=>{const n=He("Mark",iOe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,variant:d,attributes:h,...f}=n,g=Dt({name:"Mark",props:n,className:a,style:i,classes:nG,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:sOe});return y.jsx(Re,{component:"mark",ref:r,variant:d,...g("root"),...f})});aS.classes=nG,aS.displayName="@mantine/core/Mark";function oG(e){return e.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&")}function lOe(e,r){if(r==null)return[{chunk:e,highlighted:!1}];const n=Array.isArray(r)?r.map(oG):oG(r);if(!(Array.isArray(n)?n.filter(i=>i.trim().length>0).length>0:n.trim()!==""))return[{chunk:e,highlighted:!1}];const o=typeof n=="string"?n.trim():n.filter(i=>i.trim().length!==0).map(i=>i.trim()).sort((i,s)=>s.length-i.length).join("|"),a=new RegExp(`(${o})`,"gi");return e.split(a).map(i=>({chunk:i,highlighted:a.test(i)})).filter(({chunk:i})=>i)}const gc=so((e,r)=>{const{unstyled:n,children:o,highlight:a,highlightStyles:i,color:s,...l}=He("Highlight",null,e),c=lOe(o,a);return y.jsx(ft,{unstyled:n,ref:r,...l,__staticSelector:"Highlight",children:c.map(({chunk:u,highlighted:d},h)=>d?y.jsx(aS,{unstyled:n,color:s,style:i,"data-highlight":u,children:u},h):y.jsx("span",{children:u},h))})});gc.classes=ft.classes,gc.displayName="@mantine/core/Highlight";const[cOe,aG]=hi("HoverCard component was not found in the tree"),iG=E.createContext(!1),uOe=iG.Provider,iS=()=>E.useContext(iG);function sS(e){const{children:r,onMouseEnter:n,onMouseLeave:o,...a}=He("HoverCardDropdown",null,e),i=aG();if(iS()&&i.getFloatingProps&&i.floating){const c=i.getFloatingProps();return y.jsx(Rr.Dropdown,{ref:i.floating,...c,onMouseEnter:zn(n,c.onMouseEnter),onMouseLeave:zn(o,c.onMouseLeave),...a,children:r})}const s=zn(n,i.openDropdown),l=zn(o,i.closeDropdown);return y.jsx(Rr.Dropdown,{onMouseEnter:s,onMouseLeave:l,...a,children:r})}sS.displayName="@mantine/core/HoverCardDropdown";const dOe={openDelay:0,closeDelay:0};function lS(e){const{openDelay:r,closeDelay:n,children:o}=He("HoverCardGroup",dOe,e);return y.jsx(uOe,{value:!0,children:y.jsx(UW,{delay:{open:r,close:n},children:o})})}lS.displayName="@mantine/core/HoverCardGroup",lS.extend=e=>e;const pOe={refProp:"ref"},cS=E.forwardRef((e,r)=>{const{children:n,refProp:o,eventPropsWrapperName:a,...i}=He("HoverCardTarget",pOe,e);if(!ps(n))throw new Error("HoverCard.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const s=aG();if(iS()&&s.getReferenceProps&&s.reference){const d=s.getReferenceProps();return y.jsx(Rr.Target,{refProp:o,ref:r,...i,children:E.cloneElement(n,a?{[a]:{...d,ref:s.reference}}:{...d,ref:s.reference})})}const l=zn(n.props.onMouseEnter,s.openDropdown),c=zn(n.props.onMouseLeave,s.closeDropdown),u={onMouseEnter:l,onMouseLeave:c};return y.jsx(Rr.Target,{refProp:o,ref:r,...i,children:E.cloneElement(n,a?{[a]:u}:u)})});cS.displayName="@mantine/core/HoverCardTarget";function hOe(e){const[r,n]=E.useState(e.defaultOpened),o=typeof e.opened=="boolean"?e.opened:r,a=iS(),i=fi(),s=E.useRef(-1),l=E.useRef(-1),c=E.useCallback(()=>{window.clearTimeout(s.current),window.clearTimeout(l.current)},[]),u=E.useCallback(C=>{n(C),C?(g(i),e.onOpen?.()):e.onClose?.()},[i,e.onOpen,e.onClose]),{context:d,refs:h}=A2({open:o,onOpenChange:u}),{delay:f,setCurrentId:g}=WW(d,{id:i}),{getReferenceProps:b,getFloatingProps:x}=XW([VW(d,{enabled:!0,delay:a?f:{open:e.openDelay,close:e.closeDelay}}),KW(d,{role:"dialog"}),GW(d,{enabled:a})]),w=E.useCallback(()=>{a||(c(),e.openDelay===0||e.openDelay===void 0?u(!0):s.current=window.setTimeout(()=>u(!0),e.openDelay))},[a,c,e.openDelay,u]),k=E.useCallback(()=>{a||(c(),e.closeDelay===0||e.closeDelay===void 0?u(!1):l.current=window.setTimeout(()=>u(!1),e.closeDelay))},[a,c,e.closeDelay,u]);return E.useEffect(()=>()=>c(),[c]),{opened:o,reference:h.setReference,floating:h.setFloating,getReferenceProps:b,getFloatingProps:x,openDropdown:w,closeDropdown:k}}const fOe={openDelay:0,closeDelay:150,initiallyOpened:!1};function cm(e){const{children:r,onOpen:n,onClose:o,openDelay:a,closeDelay:i,initiallyOpened:s,...l}=He("HoverCard",fOe,e),c=hOe({openDelay:a,closeDelay:i,defaultOpened:s,onOpen:n,onClose:o});return y.jsx(cOe,{value:{openDropdown:c.openDropdown,closeDropdown:c.closeDropdown,getReferenceProps:c.getReferenceProps,getFloatingProps:c.getFloatingProps,reference:c.reference,floating:c.floating},children:y.jsx(Rr,{...l,opened:c.opened,__staticSelector:"HoverCard",children:r})})}cm.displayName="@mantine/core/HoverCard",cm.Target=cS,cm.Dropdown=sS,cm.Group=lS,cm.extend=e=>e;var mOe=E.useLayoutEffect;const[gOe,Mu]=hi("Menu component was not found in the tree");var Pu={dropdown:"m_dc9b7c9f",label:"m_9bfac126",divider:"m_efdf90cb",item:"m_99ac2aa1",itemLabel:"m_5476e0d3",itemSection:"m_8b75e504",chevron:"m_b85b0bed"};const uS=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=He("MenuDivider",null,e),c=Mu();return y.jsx(Re,{ref:r,...c.getStyles("divider",{className:o,style:a,styles:i,classNames:n}),...l})});uS.classes=Pu,uS.displayName="@mantine/core/MenuDivider";const q0=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,onMouseEnter:l,onMouseLeave:c,onKeyDown:u,children:d,...h}=He("MenuDropdown",null,e),f=E.useRef(null),g=Mu(),b=zn(u,k=>{(k.key==="ArrowUp"||k.key==="ArrowDown")&&(k.preventDefault(),f.current?.querySelectorAll("[data-menu-item]:not(:disabled)")[0]?.focus())}),x=zn(l,()=>(g.trigger==="hover"||g.trigger==="click-hover")&&g.openDropdown()),w=zn(c,()=>(g.trigger==="hover"||g.trigger==="click-hover")&&g.closeDropdown());return y.jsxs(Rr.Dropdown,{...h,onMouseEnter:x,onMouseLeave:w,role:"menu","aria-orientation":"vertical",ref:Hr(r,f),...g.getStyles("dropdown",{className:o,style:a,styles:i,classNames:n,withStaticClass:!1}),tabIndex:-1,"data-menu-dropdown":!0,onKeyDown:b,children:[g.withInitialFocusPlaceholder&&y.jsx("div",{tabIndex:-1,"data-autofocus":!0,"data-mantine-stop-propagation":!0,style:{outline:0}}),d]})});q0.classes=Pu,q0.displayName="@mantine/core/MenuDropdown";const[yOe,Y2]=R0(),U0=so((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,color:l,closeMenuOnClick:c,leftSection:u,rightSection:d,children:h,disabled:f,"data-disabled":g,...b}=He("MenuItem",null,e),x=Mu(),w=Y2(),k=vo(),{dir:C}=Ru(),_=E.useRef(null),T=b,A=zn(T.onClick,()=>{g||(typeof c=="boolean"?c&&x.closeDropdownImmediately():x.closeOnItemClick&&x.closeDropdownImmediately())}),R=l?k.variantColorResolver({color:l,theme:k,variant:"light"}):void 0,D=l?Au({color:l,theme:k}):null,N=zn(T.onKeyDown,M=>{M.key==="ArrowLeft"&&w&&(w.close(),w.focusParentItem())});return y.jsxs(Er,{onMouseDown:M=>M.preventDefault(),...b,unstyled:x.unstyled,tabIndex:x.menuItemTabIndex,...x.getStyles("item",{className:o,style:a,styles:i,classNames:n}),ref:Hr(_,r),role:"menuitem",disabled:f,"data-menu-item":!0,"data-disabled":f||g||void 0,"data-mantine-stop-propagation":!0,onClick:A,onKeyDown:N0({siblingSelector:"[data-menu-item]:not([data-disabled])",parentSelector:"[data-menu-dropdown]",activateOnFocus:!1,loop:x.loop,dir:C,orientation:"vertical",onKeyDown:N}),__vars:{"--menu-item-color":D?.isThemeColor&&D?.shade===void 0?`var(--mantine-color-${D.color}-6)`:R?.color,"--menu-item-hover":R?.hover},children:[u&&y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"left",children:u}),h&&y.jsx("div",{...x.getStyles("itemLabel",{styles:i,classNames:n}),children:h}),d&&y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"right",children:d})]})});U0.classes=Pu,U0.displayName="@mantine/core/MenuItem";const dS=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=He("MenuLabel",null,e),c=Mu();return y.jsx(Re,{ref:r,...c.getStyles("label",{className:o,style:a,styles:i,classNames:n}),...l})});dS.classes=Pu,dS.displayName="@mantine/core/MenuLabel";const pS=ht((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,onMouseEnter:l,onMouseLeave:c,onKeyDown:u,children:d,...h}=He("MenuSubDropdown",null,e),f=E.useRef(null),g=Mu(),b=Y2(),x=zn(l,b?.open),w=zn(c,b?.close);return y.jsx(Rr.Dropdown,{...h,onMouseEnter:x,onMouseLeave:w,role:"menu","aria-orientation":"vertical",ref:Hr(r,f),...g.getStyles("dropdown",{className:o,style:a,styles:i,classNames:n,withStaticClass:!1}),tabIndex:-1,"data-menu-dropdown":!0,children:d})});pS.classes=Pu,pS.displayName="@mantine/core/MenuSubDropdown";const hS=so((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,color:l,leftSection:c,rightSection:u,children:d,disabled:h,"data-disabled":f,closeMenuOnClick:g,...b}=He("MenuSubItem",null,e),x=Mu(),w=Y2(),k=vo(),{dir:C}=Ru(),_=E.useRef(null),T=b,A=l?k.variantColorResolver({color:l,theme:k,variant:"light"}):void 0,R=l?Au({color:l,theme:k}):null,D=zn(T.onKeyDown,F=>{F.key==="ArrowRight"&&(w?.open(),w?.focusFirstItem()),F.key==="ArrowLeft"&&w?.parentContext&&(w.parentContext.close(),w.parentContext.focusParentItem())}),N=zn(T.onClick,()=>{!f&&g&&x.closeDropdownImmediately()}),M=zn(T.onMouseEnter,w?.open),O=zn(T.onMouseLeave,w?.close);return y.jsxs(Er,{onMouseDown:F=>F.preventDefault(),...b,unstyled:x.unstyled,tabIndex:x.menuItemTabIndex,...x.getStyles("item",{className:o,style:a,styles:i,classNames:n}),ref:Hr(_,r),role:"menuitem",disabled:h,"data-menu-item":!0,"data-sub-menu-item":!0,"data-disabled":h||f||void 0,"data-mantine-stop-propagation":!0,onMouseEnter:M,onMouseLeave:O,onClick:N,onKeyDown:N0({siblingSelector:"[data-menu-item]:not([data-disabled])",parentSelector:"[data-menu-dropdown]",activateOnFocus:!1,loop:x.loop,dir:C,orientation:"vertical",onKeyDown:D}),__vars:{"--menu-item-color":R?.isThemeColor&&R?.shade===void 0?`var(--mantine-color-${R.color}-6)`:A?.color,"--menu-item-hover":A?.hover},children:[c&&y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"left",children:c}),d&&y.jsx("div",{...x.getStyles("itemLabel",{styles:i,classNames:n}),children:d}),y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"right",children:u||y.jsx(U7,{...x.getStyles("chevron"),size:14})})]})});hS.classes=Pu,hS.displayName="@mantine/core/MenuSubItem";function sG({children:e,refProp:r}){if(!ps(e))throw new Error("Menu.Sub.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");return Mu(),y.jsx(Rr.Target,{refProp:r,popupType:"menu",children:e})}sG.displayName="@mantine/core/MenuSubTarget";const bOe={offset:0,position:"right-start",transitionProps:{duration:0},middlewares:{shift:{crossAxis:!0}}};function um(e){const{children:r,closeDelay:n,...o}=He("MenuSub",bOe,e),a=fi(),[i,{open:s,close:l}]=w$e(!1),c=Y2(),{openDropdown:u,closeDropdown:d}=MY({open:s,close:l,closeDelay:n,openDelay:0});return y.jsx(yOe,{value:{opened:i,close:d,open:u,focusFirstItem:()=>window.setTimeout(()=>{document.getElementById(`${a}-dropdown`)?.querySelectorAll("[data-menu-item]:not([data-disabled])")[0]?.focus()},16),focusParentItem:()=>window.setTimeout(()=>{document.getElementById(`${a}-target`)?.focus()},16),parentContext:c},children:y.jsx(Rr,{opened:i,withinPortal:!1,withArrow:!1,id:a,...o,children:r})})}um.extend=e=>e,um.displayName="@mantine/core/MenuSub",um.Target=sG,um.Dropdown=pS,um.Item=hS;const vOe={refProp:"ref"},G2=E.forwardRef((e,r)=>{const{children:n,refProp:o,...a}=He("MenuTarget",vOe,e);if(!ps(n))throw new Error("Menu.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const i=Mu(),s=n.props,l=zn(s.onClick,()=>{i.trigger==="click"?i.toggleDropdown():i.trigger==="click-hover"&&(i.setOpenedViaClick(!0),i.opened||i.openDropdown())}),c=zn(s.onMouseEnter,()=>(i.trigger==="hover"||i.trigger==="click-hover")&&i.openDropdown()),u=zn(s.onMouseLeave,()=>{(i.trigger==="hover"||i.trigger==="click-hover"&&!i.openedViaClick)&&i.closeDropdown()});return y.jsx(Rr.Target,{refProp:o,popupType:"menu",ref:r,...a,children:E.cloneElement(n,{onClick:l,onMouseEnter:c,onMouseLeave:u,"data-expanded":i.opened?!0:void 0})})});G2.displayName="@mantine/core/MenuTarget";const xOe={trapFocus:!0,closeOnItemClick:!0,withInitialFocusPlaceholder:!0,clickOutsideEvents:["mousedown","touchstart","keydown"],loop:!0,trigger:"click",openDelay:0,closeDelay:100,menuItemTabIndex:-1};function hn(e){const r=He("Menu",xOe,e),{children:n,onOpen:o,onClose:a,opened:i,defaultOpened:s,trapFocus:l,onChange:c,closeOnItemClick:u,loop:d,closeOnEscape:h,trigger:f,openDelay:g,closeDelay:b,classNames:x,styles:w,unstyled:k,variant:C,vars:_,menuItemTabIndex:T,keepMounted:A,withInitialFocusPlaceholder:R,attributes:D,...N}=r,M=Dt({name:"Menu",classes:Pu,props:r,classNames:x,styles:w,unstyled:k,attributes:D}),[O,F]=uc({value:i,defaultValue:s,finalValue:!1,onChange:c}),[L,U]=E.useState(!1),P=()=>{F(!1),U(!1),O&&a?.()},V=()=>{F(!0),!O&&o?.()},I=()=>{O?P():V()},{openDropdown:H,closeDropdown:q}=MY({open:V,close:P,closeDelay:b,openDelay:g}),Z=K=>UDe("[data-menu-item]","[data-menu-dropdown]",K),{resolvedClassNames:W,resolvedStyles:G}=s7({classNames:x,styles:w,props:r});return y.jsx(gOe,{value:{getStyles:M,opened:O,toggleDropdown:I,getItemIndex:Z,openedViaClick:L,setOpenedViaClick:U,closeOnItemClick:u,closeDropdown:f==="click"?P:q,openDropdown:f==="click"?V:H,closeDropdownImmediately:P,loop:d,trigger:f,unstyled:k,menuItemTabIndex:T,withInitialFocusPlaceholder:R},children:y.jsx(Rr,{...N,opened:O,onChange:I,defaultOpened:s,trapFocus:A?!1:l,closeOnEscape:h,__staticSelector:"Menu",classNames:W,styles:G,unstyled:k,variant:C,keepMounted:A,children:n})})}hn.extend=e=>e,hn.withProps=jMe(hn),hn.classes=Pu,hn.displayName="@mantine/core/Menu",hn.Item=U0,hn.Label=dS,hn.Dropdown=q0,hn.Target=G2,hn.Divider=uS,hn.Sub=um;const[dkt,lG]=R0(),[wOe,kOe]=R0();var X2={root:"m_7cda1cd6","root--default":"m_44da308b","root--contrast":"m_e3a01f8",label:"m_1e0e6180",remove:"m_ae386778",group:"m_1dcfd90b"};const _Oe=(e,{gap:r},{size:n})=>({group:{"--pg-gap":r!==void 0?kr(r):kr(n,"pg-gap")}}),fS=ht((e,r)=>{const n=He("PillGroup",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,disabled:d,attributes:h,...f}=n,g=lG()?.size||u||void 0,b=Dt({name:"PillGroup",classes:X2,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:_Oe,stylesCtx:{size:g},rootSelector:"group"});return y.jsx(wOe,{value:{size:g,disabled:d},children:y.jsx(Re,{ref:r,size:g,...b("group"),...f})})});fS.classes=X2,fS.displayName="@mantine/core/PillGroup";const EOe={variant:"default"},SOe=(e,{radius:r},{size:n})=>({root:{"--pill-fz":kr(n,"pill-fz"),"--pill-height":kr(n,"pill-height"),"--pill-radius":r===void 0?void 0:Pn(r)}}),K2=ht((e,r)=>{const n=He("Pill",EOe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,variant:u,children:d,withRemoveButton:h,onRemove:f,removeButtonProps:g,radius:b,size:x,disabled:w,mod:k,attributes:C,..._}=n,T=kOe(),A=lG(),R=x||T?.size||void 0,D=A?.variant==="filled"?"contrast":u||"default",N=Dt({name:"Pill",classes:X2,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:C,vars:c,varsResolver:SOe,stylesCtx:{size:R}});return y.jsxs(Re,{component:"span",ref:r,variant:D,size:R,...N("root",{variant:D}),mod:[{"with-remove":h&&!w,disabled:w||T?.disabled},k],..._,children:[y.jsx("span",{...N("label"),children:d}),h&&y.jsx(wp,{variant:"transparent",radius:b,tabIndex:-1,"aria-hidden":!0,unstyled:l,...g,...N("remove",{className:g?.className,style:g?.style}),onMouseDown:M=>{M.preventDefault(),M.stopPropagation(),g?.onMouseDown?.(M)},onClick:M=>{M.stopPropagation(),f?.(),g?.onClick?.(M)}})]})});K2.classes=X2,K2.displayName="@mantine/core/Pill",K2.Group=fS;var cG={root:"m_f0824112",description:"m_57492dcc",section:"m_690090b5",label:"m_1f6ac4c4",body:"m_f07af9d2",children:"m_e17b862f",chevron:"m_1fd8a00b"};const COe=(e,{variant:r,color:n,childrenOffset:o,autoContrast:a})=>{const i=e.variantColorResolver({color:n||e.primaryColor,theme:e,variant:r||"light",autoContrast:a});return{root:{"--nl-bg":n||r?i.background:void 0,"--nl-hover":n||r?i.hover:void 0,"--nl-color":n||r?i.color:void 0},children:{"--nl-offset":cc(o)}}},mS=so((e,r)=>{const n=He("NavLink",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,opened:u,defaultOpened:d,onChange:h,children:f,active:g,disabled:b,leftSection:x,rightSection:w,label:k,description:C,disableRightSectionRotation:_,noWrap:T,childrenOffset:A,autoContrast:R,mod:D,attributes:N,onClick:M,onKeyDown:O,...F}=n,L=Dt({name:"NavLink",props:n,classes:cG,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:N,vars:c,varsResolver:COe}),[U,P]=uc({value:u,defaultValue:d,finalValue:!1,onChange:h}),V=!!f,I=H=>{M?.(H),V&&(H.preventDefault(),P(!U))};return y.jsxs(y.Fragment,{children:[y.jsxs(Er,{...L("root"),component:"a",ref:r,onClick:I,onKeyDown:H=>{O?.(H),H.nativeEvent.code==="Space"&&V&&(H.preventDefault(),P(!U))},unstyled:l,mod:[{disabled:b,active:g,expanded:U},D],...F,children:[x&&y.jsx(Re,{component:"span",...L("section"),mod:{position:"left"},children:x}),y.jsxs(Re,{...L("body"),mod:{"no-wrap":T},children:[y.jsx(Re,{component:"span",...L("label"),children:k}),y.jsx(Re,{component:"span",mod:{active:g},...L("description"),children:C})]}),(V||w!==void 0)&&y.jsx(Re,{...L("section"),component:"span",mod:{rotate:U&&!_,position:"right"},children:V?w!==void 0?w:y.jsx(U7,{...L("chevron")}):w})]}),V&&y.jsx(tW,{in:U,...L("collapse"),children:y.jsx("div",{...L("children"),children:f})})]})});mS.classes=cG,mS.displayName="@mantine/core/NavLink";var uG={root:"m_a513464",icon:"m_a4ceffb",loader:"m_b0920b15",body:"m_a49ed24",title:"m_3feedf16",description:"m_3d733a3a",closeButton:"m_919a4d88"};const TOe={withCloseButton:!0},AOe=(e,{radius:r,color:n})=>({root:{"--notification-radius":r===void 0?void 0:Pn(r),"--notification-color":n?Ia(n,e):void 0}}),Z2=ht((e,r)=>{const n=He("Notification",TOe,e),{className:o,color:a,radius:i,loading:s,withCloseButton:l,withBorder:c,title:u,icon:d,children:h,onClose:f,closeButtonProps:g,classNames:b,style:x,styles:w,unstyled:k,variant:C,vars:_,mod:T,loaderProps:A,role:R,attributes:D,...N}=n,M=Dt({name:"Notification",classes:uG,props:n,className:o,style:x,classNames:b,styles:w,unstyled:k,attributes:D,vars:_,varsResolver:AOe});return y.jsxs(Re,{...M("root"),mod:[{"data-with-icon":!!d||s,"data-with-border":c},T],ref:r,variant:C,role:R||"alert",...N,children:[d&&!s&&y.jsx("div",{...M("icon"),children:d}),s&&y.jsx(im,{size:28,color:a,...A,...M("loader")}),y.jsxs("div",{...M("body"),children:[u&&y.jsx("div",{...M("title"),children:u}),y.jsx(Re,{...M("description"),mod:{"data-with-title":!!u},children:h})]}),l&&y.jsx(wp,{iconSize:16,color:"gray",...g,unstyled:k,onClick:f,...M("closeButton")})]})});Z2.classes=uG,Z2.displayName="@mantine/core/Notification";const ROe={duration:100,transition:"fade"};function dG(e,r){return{...ROe,...r,...e}}function NOe({offset:e,position:r,defaultOpened:n}){const[o,a]=E.useState(n),i=E.useRef(null),{x:s,y:l,elements:c,refs:u,update:d,placement:h}=A2({placement:r,middleware:[A7({crossAxis:!0,padding:5,rootBoundary:"document"})]}),f=h.includes("right")?e:r.includes("left")?e*-1:0,g=h.includes("bottom")?e:r.includes("top")?e*-1:0,b=E.useCallback(({clientX:x,clientY:w})=>{u.setPositionReference({getBoundingClientRect(){return{width:0,height:0,x,y:w,left:x+f,top:w+g,right:x,bottom:w}}})},[c.reference]);return E.useEffect(()=>{if(u.floating.current){const x=i.current;x.addEventListener("mousemove",b);const w=hc(u.floating.current);return w.forEach(k=>{k.addEventListener("scroll",d)}),()=>{x.removeEventListener("mousemove",b),w.forEach(k=>{k.removeEventListener("scroll",d)})}}},[c.reference,u.floating.current,d,b,o]),{handleMouseMove:b,x:s,y:l,opened:o,setOpened:a,boundaryRef:i,floating:u.setFloating}}var Q2={tooltip:"m_1b3c8819",arrow:"m_f898399f"};const DOe={refProp:"ref",withinPortal:!0,offset:10,position:"right",zIndex:J3("popover")},$Oe=(e,{radius:r,color:n})=>({tooltip:{"--tooltip-radius":r===void 0?void 0:Pn(r),"--tooltip-bg":n?Ia(n,e):void 0,"--tooltip-color":n?"var(--mantine-color-white)":void 0}}),gS=ht((e,r)=>{const n=He("TooltipFloating",DOe,e),{children:o,refProp:a,withinPortal:i,style:s,className:l,classNames:c,styles:u,unstyled:d,radius:h,color:f,label:g,offset:b,position:x,multiline:w,zIndex:k,disabled:C,defaultOpened:_,variant:T,vars:A,portalProps:R,attributes:D,...N}=n,M=vo(),O=Dt({name:"TooltipFloating",props:n,classes:Q2,className:l,style:s,classNames:c,styles:u,unstyled:d,attributes:D,rootSelector:"tooltip",vars:A,varsResolver:$Oe}),{handleMouseMove:F,x:L,y:U,opened:P,boundaryRef:V,floating:I,setOpened:H}=NOe({offset:b,position:x,defaultOpened:_});if(!ps(o))throw new Error("[@mantine/core] Tooltip.Floating component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported");const q=Hr(V,r2(o),r),Z=o.props,W=K=>{Z.onMouseEnter?.(K),F(K),H(!0)},G=K=>{Z.onMouseLeave?.(K),H(!1)};return y.jsxs(y.Fragment,{children:[y.jsx(am,{...R,withinPortal:i,children:y.jsx(Re,{...N,...O("tooltip",{style:{...p7(s,M),zIndex:k,display:!C&&P?"block":"none",top:(U&&Math.round(U))??"",left:(L&&Math.round(L))??""}}),variant:T,ref:I,mod:{multiline:w},children:g})}),E.cloneElement(o,{...Z,[a]:q,onMouseEnter:W,onMouseLeave:G})]})});gS.classes=Q2,gS.displayName="@mantine/core/TooltipFloating";const pG=E.createContext(!1),MOe=pG.Provider,POe=()=>E.useContext(pG),zOe={openDelay:0,closeDelay:0};function Ep(e){const{openDelay:r,closeDelay:n,children:o}=He("TooltipGroup",zOe,e);return y.jsx(MOe,{value:!0,children:y.jsx(UW,{delay:{open:r,close:n},children:o})})}Ep.displayName="@mantine/core/TooltipGroup",Ep.extend=e=>e;function IOe(e){if(e===void 0)return{shift:!0,flip:!0};const r={...e};return e.shift===void 0&&(r.shift=!0),e.flip===void 0&&(r.flip=!0),r}function OOe(e){const r=IOe(e.middlewares),n=[MW(e.offset)];return r.shift&&n.push(A7(typeof r.shift=="boolean"?{padding:8}:{padding:8,...r.shift})),r.flip&&n.push(typeof r.flip=="boolean"?C2():C2(r.flip)),n.push(zW({element:e.arrowRef,padding:e.arrowOffset})),r.inline?n.push(typeof r.inline=="boolean"?O0():O0(r.inline)):e.inline&&n.push(O0()),n}function jOe(e){const[r,n]=E.useState(e.defaultOpened),o=typeof e.opened=="boolean"?e.opened:r,a=POe(),i=fi(),s=E.useCallback(T=>{n(T),T&&w(i)},[i]),{x:l,y:c,context:u,refs:d,placement:h,middlewareData:{arrow:{x:f,y:g}={}}}=A2({strategy:e.strategy,placement:e.position,open:o,onOpenChange:s,middleware:OOe(e),whileElementsMounted:_2}),{delay:b,currentId:x,setCurrentId:w}=WW(u,{id:i}),{getReferenceProps:k,getFloatingProps:C}=XW([VW(u,{enabled:e.events?.hover,delay:a?b:{open:e.openDelay,close:e.closeDelay},mouseOnly:!e.events?.touch}),kze(u,{enabled:e.events?.focus,visibleOnly:!0}),KW(u,{role:"tooltip"}),GW(u,{enabled:typeof e.opened>"u"})]);gp(()=>{e.onPositionChange?.(h)},[h]);const _=o&&x&&x!==i;return{x:l,y:c,arrowX:f,arrowY:g,reference:d.setReference,floating:d.setFloating,getFloatingProps:C,getReferenceProps:k,isGroupPhase:_,opened:o,placement:h}}const hG={position:"top",refProp:"ref",withinPortal:!0,arrowSize:4,arrowOffset:5,arrowRadius:0,arrowPosition:"side",offset:5,transitionProps:{duration:100,transition:"fade"},events:{hover:!0,focus:!1,touch:!1},zIndex:J3("popover"),positionDependencies:[],middlewares:{flip:!0,shift:!0,inline:!1}},LOe=(e,{radius:r,color:n,variant:o,autoContrast:a})=>{const i=e.variantColorResolver({theme:e,color:n||e.primaryColor,autoContrast:a,variant:o||"filled"});return{tooltip:{"--tooltip-radius":r===void 0?void 0:Pn(r),"--tooltip-bg":n?i.background:void 0,"--tooltip-color":n?i.color:void 0}}},co=ht((e,r)=>{const n=He("Tooltip",hG,e),{children:o,position:a,refProp:i,label:s,openDelay:l,closeDelay:c,onPositionChange:u,opened:d,defaultOpened:h,withinPortal:f,radius:g,color:b,classNames:x,styles:w,unstyled:k,style:C,className:_,withArrow:T,arrowSize:A,arrowOffset:R,arrowRadius:D,arrowPosition:N,offset:M,transitionProps:O,multiline:F,events:L,zIndex:U,disabled:P,positionDependencies:V,onClick:I,onMouseEnter:H,onMouseLeave:q,inline:Z,variant:W,keepMounted:G,vars:K,portalProps:j,mod:Y,floatingStrategy:Q,middlewares:J,autoContrast:ie,attributes:ne,target:re,...ge}=He("Tooltip",hG,n),{dir:De}=Ru(),he=E.useRef(null),me=jOe({position:mY(De,a),closeDelay:c,openDelay:l,onPositionChange:u,opened:d,defaultOpened:h,events:L,arrowRef:he,arrowOffset:R,offset:typeof M=="number"?M+(T?A/2:0):M,positionDependencies:[...V,re??o],inline:Z,strategy:Q,middlewares:J});E.useEffect(()=>{const Qe=re instanceof HTMLElement?re:typeof re=="string"?document.querySelector(re):re?.current||null;Qe&&me.reference(Qe)},[re,me]);const Te=Dt({name:"Tooltip",props:n,classes:Q2,className:_,style:C,classNames:x,styles:w,unstyled:k,attributes:ne,rootSelector:"tooltip",vars:K,varsResolver:LOe});if(!re&&!ps(o))return null;if(re){const Qe=dG(O,{duration:100,transition:"fade"});return y.jsx(y.Fragment,{children:y.jsx(am,{...j,withinPortal:f,children:y.jsx(Du,{...Qe,keepMounted:G,mounted:!P&&!!me.opened,duration:me.isGroupPhase?10:Qe.duration,children:Pt=>y.jsxs(Re,{...ge,"data-fixed":Q==="fixed"||void 0,variant:W,mod:[{multiline:F},Y],...me.getFloatingProps({ref:me.floating,className:Te("tooltip").className,style:{...Te("tooltip").style,...Pt,zIndex:U,top:me.y??0,left:me.x??0}}),children:[s,y.jsx($2,{ref:he,arrowX:me.arrowX,arrowY:me.arrowY,visible:T,position:me.placement,arrowSize:A,arrowOffset:R,arrowRadius:D,arrowPosition:N,...Te("arrow")})]})})})})}const Ie=o,Ze=Ie.props,rt=Hr(me.reference,r2(Ie),r),Rt=dG(O,{duration:100,transition:"fade"});return y.jsxs(y.Fragment,{children:[y.jsx(am,{...j,withinPortal:f,children:y.jsx(Du,{...Rt,keepMounted:G,mounted:!P&&!!me.opened,duration:me.isGroupPhase?10:Rt.duration,children:Qe=>y.jsxs(Re,{...ge,"data-fixed":Q==="fixed"||void 0,variant:W,mod:[{multiline:F},Y],...me.getFloatingProps({ref:me.floating,className:Te("tooltip").className,style:{...Te("tooltip").style,...Qe,zIndex:U,top:me.y??0,left:me.x??0}}),children:[s,y.jsx($2,{ref:he,arrowX:me.arrowX,arrowY:me.arrowY,visible:T,position:me.placement,arrowSize:A,arrowOffset:R,arrowRadius:D,arrowPosition:N,...Te("arrow")})]})})}),E.cloneElement(Ie,me.getReferenceProps({onClick:I,onMouseEnter:H,onMouseLeave:q,onMouseMove:n.onMouseMove,onPointerDown:n.onPointerDown,onPointerEnter:n.onPointerEnter,className:hs(_,Ze.className),...Ze,[i]:rt}))]})});co.classes=Q2,co.displayName="@mantine/core/Tooltip",co.Floating=gS,co.Group=Ep;var fG={root:"m_cf365364",indicator:"m_9e182ccd",label:"m_1738fcb2",input:"m_1714d588",control:"m_69686b9b",innerLabel:"m_78882f40"};const BOe={withItemsBorders:!0},FOe=(e,{radius:r,color:n,transitionDuration:o,size:a,transitionTimingFunction:i})=>({root:{"--sc-radius":r===void 0?void 0:Pn(r),"--sc-color":n?Ia(n,e):void 0,"--sc-shadow":n?void 0:"var(--mantine-shadow-xs)","--sc-transition-duration":o===void 0?void 0:`${o}ms`,"--sc-transition-timing-function":i,"--sc-padding":kr(a,"sc-padding"),"--sc-font-size":Io(a)}}),dm=ht((e,r)=>{const n=He("SegmentedControl",BOe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,data:u,value:d,defaultValue:h,onChange:f,size:g,name:b,disabled:x,readOnly:w,fullWidth:k,orientation:C,radius:_,color:T,transitionDuration:A,transitionTimingFunction:R,variant:D,autoContrast:N,withItemsBorders:M,mod:O,attributes:F,...L}=n,U=Dt({name:"SegmentedControl",props:n,classes:fG,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:F,vars:c,varsResolver:FOe}),P=vo(),V=u.map(re=>typeof re=="string"?{label:re,value:re}:re),I=E$e(),[H,q]=E.useState(U9()),[Z,W]=E.useState(null),[G,K]=E.useState({}),j=(re,ge)=>{G[ge]=re,K(G)},[Y,Q]=uc({value:d,defaultValue:h,finalValue:Array.isArray(u)?V.find(re=>!re.disabled)?.value??u[0]?.value??null:null,onChange:f}),J=fi(b),ie=V.map(re=>E.createElement(Re,{...U("control"),mod:{active:Y===re.value,orientation:C},key:re.value},E.createElement("input",{...U("input"),disabled:x||re.disabled,type:"radio",name:J,value:re.value,id:`${J}-${re.value}`,checked:Y===re.value,onChange:()=>!w&&Q(re.value),"data-focus-ring":P.focusRing,key:`${re.value}-input`}),E.createElement(Re,{component:"label",...U("label"),mod:{active:Y===re.value&&!(x||re.disabled),disabled:x||re.disabled,"read-only":w},htmlFor:`${J}-${re.value}`,ref:ge=>j(ge,re.value),__vars:{"--sc-label-color":T!==void 0?o7({color:T,theme:P,autoContrast:N}):void 0},key:`${re.value}-label`},y.jsx("span",{...U("innerLabel"),children:re.label})))),ne=Hr(r,re=>W(re));return f$e(()=>{q(U9())},[u.length]),u.length===0?null:y.jsxs(Re,{...U("root"),variant:D,size:g,ref:ne,mod:[{"full-width":k,orientation:C,initialized:I,"with-items-borders":M},O],...L,role:"radiogroup","data-disabled":x,children:[typeof Y=="string"&&y.jsx(B2,{target:G[Y],parent:Z,component:"span",transitionDuration:"var(--sc-transition-duration)",...U("indicator")},H),ie]})});dm.classes=fG,dm.displayName="@mantine/core/SegmentedControl";const[HOe,J2]=hi("SliderProvider was not found in tree"),mG=E.forwardRef(({size:e,disabled:r,variant:n,color:o,thumbSize:a,radius:i,...s},l)=>{const{getStyles:c}=J2();return y.jsx(Re,{tabIndex:-1,variant:n,size:e,ref:l,...c("root"),...s})});mG.displayName="@mantine/core/SliderRoot";const gG=E.forwardRef(({max:e,min:r,value:n,position:o,label:a,dragging:i,onMouseDown:s,onKeyDownCapture:l,labelTransitionProps:c,labelAlwaysOn:u,thumbLabel:d,onFocus:h,onBlur:f,showLabelOnHover:g,isHovered:b,children:x=null,disabled:w},k)=>{const{getStyles:C}=J2(),[_,T]=E.useState(!1),A=u||i||_||g&&b;return y.jsxs(Re,{tabIndex:0,role:"slider","aria-label":d,"aria-valuemax":e,"aria-valuemin":r,"aria-valuenow":n,ref:k,__vars:{"--slider-thumb-offset":`${o}%`},...C("thumb",{focusable:!0}),mod:{dragging:i,disabled:w},onFocus:R=>{T(!0),typeof h=="function"&&h(R)},onBlur:R=>{T(!1),typeof f=="function"&&f(R)},onTouchStart:s,onMouseDown:s,onKeyDownCapture:l,onClick:R=>R.stopPropagation(),children:[x,y.jsx(Du,{mounted:a!=null&&!!A,transition:"fade",duration:0,...c,children:R=>y.jsx("div",{...C("label",{style:R}),children:a})})]})});gG.displayName="@mantine/core/SliderThumb";function yG({value:e,min:r,max:n}){const o=(e-r)/(n-r)*100;return Math.min(Math.max(o,0),100)}function VOe({mark:e,offset:r,value:n,inverted:o=!1}){return o?typeof r=="number"&&e.value<=r||e.value>=n:typeof r=="number"?e.value>=r&&e.value<=n:e.value<=n}function bG({marks:e,min:r,max:n,disabled:o,value:a,offset:i,inverted:s}){const{getStyles:l}=J2();if(!e)return null;const c=e.map((u,d)=>E.createElement(Re,{...l("markWrapper"),__vars:{"--mark-offset":`${yG({value:u.value,min:r,max:n})}%`},key:d},y.jsx(Re,{...l("mark"),mod:{filled:VOe({mark:u,value:a,offset:i,inverted:s}),disabled:o}}),u.label&&y.jsx("div",{...l("markLabel"),children:u.label})));return y.jsx("div",{children:c})}bG.displayName="@mantine/core/SliderMarks";function vG({filled:e,children:r,offset:n,disabled:o,marksOffset:a,inverted:i,containerProps:s,...l}){const{getStyles:c}=J2();return y.jsx(Re,{...c("trackContainer"),mod:{disabled:o},...s,children:y.jsxs(Re,{...c("track"),mod:{inverted:i,disabled:o},children:[y.jsx(Re,{mod:{inverted:i,disabled:o},__vars:{"--slider-bar-width":`calc(${e}% + 2 * var(--slider-size))`,"--slider-bar-offset":`calc(${n}% - var(--slider-size))`},...c("bar")}),r,y.jsx(bG,{...l,offset:a,disabled:o,inverted:i})]})})}vG.displayName="@mantine/core/SliderTrack";function qOe({value:e,containerWidth:r,min:n,max:o,step:a,precision:i}){const s=(r?Math.min(Math.max(e,0),r)/r:e)*(o-n),l=(s!==0?Math.round(s/a)*a:0)+n,c=Math.max(l,n);return i!==void 0?Number(c.toFixed(i)):c}function ew(e,r){return parseFloat(e.toFixed(r))}function UOe(e){if(!e)return 0;const r=e.toString().split(".");return r.length>1?r[1].length:0}function yS(e,r){const n=[...r].sort((o,a)=>o.value-a.value).find(o=>o.value>e);return n?n.value:e}function bS(e,r){const n=[...r].sort((o,a)=>a.value-o.value).find(o=>o.valuen.value-o.value);return r.length>0?r[0].value:0}function wG(e){const r=[...e].sort((n,o)=>n.value-o.value);return r.length>0?r[r.length-1].value:100}var kG={root:"m_dd36362e",label:"m_c9357328",thumb:"m_c9a9a60a",trackContainer:"m_a8645c2",track:"m_c9ade57f",bar:"m_38aeed47",markWrapper:"m_b7b0423a",mark:"m_dd33bc19",markLabel:"m_68c77a5b"};const WOe={radius:"xl",min:0,max:100,step:1,marks:[],label:e=>e,labelTransitionProps:{transition:"fade",duration:0},thumbLabel:"",showLabelOnHover:!0,scale:e=>e,size:"md"},YOe=(e,{size:r,color:n,thumbSize:o,radius:a})=>({root:{"--slider-size":kr(r,"slider-size"),"--slider-color":n?Ia(n,e):void 0,"--slider-radius":a===void 0?void 0:Pn(a),"--slider-thumb-size":o!==void 0?Me(o):"calc(var(--slider-size) * 2)"}}),vS=ht((e,r)=>{const n=He("Slider",WOe,e),{classNames:o,styles:a,value:i,onChange:s,onChangeEnd:l,size:c,min:u,max:d,domain:h,step:f,precision:g,defaultValue:b,name:x,marks:w,label:k,labelTransitionProps:C,labelAlwaysOn:_,thumbLabel:T,showLabelOnHover:A,thumbChildren:R,disabled:D,unstyled:N,scale:M,inverted:O,className:F,style:L,vars:U,hiddenInputProps:P,restrictToMarks:V,thumbProps:I,attributes:H,...q}=n,Z=Dt({name:"Slider",props:n,classes:kG,classNames:o,className:F,styles:a,style:L,attributes:H,vars:U,varsResolver:YOe,unstyled:N}),{dir:W}=Ru(),[G,K]=E.useState(!1),[j,Y]=uc({value:typeof i=="number"?Cu(i,u,d):i,defaultValue:typeof b=="number"?Cu(b,u,d):b,finalValue:Cu(0,u,d),onChange:s}),Q=E.useRef(j),J=E.useRef(l);E.useEffect(()=>{J.current=l},[l]);const ie=E.useRef(null),ne=E.useRef(null),[re,ge]=h||[u,d],De=yG({value:j,min:re,max:ge}),he=M(j),me=typeof k=="function"?k(he):k,Te=g??UOe(f),Ie=E.useCallback(({x:Ke})=>{if(!D){const Ge=qOe({value:Ke,min:re,max:ge,step:f,precision:Te}),ct=Cu(Ge,u,d);Y(V&&w?.length?PU(ct,w.map(ut=>ut.value)):ct),Q.current=ct}},[D,u,d,re,ge,f,Te,Y,w,V]),Ze=E.useCallback(()=>{if(!D&&J.current){const Ke=V&&w?.length?PU(Q.current,w.map(Ge=>Ge.value)):Q.current;J.current(Ke)}},[D,w,V]),{ref:rt,active:Rt}=CU(Ie,{onScrubEnd:Ze},W),Qe=E.useCallback(Ke=>{!D&&J.current&&J.current(Ke)},[D]),Pt=Ke=>{if(!D)switch(Ke.key){case"ArrowUp":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=yS(j,w);Y(ct),Qe(ct);break}const Ge=ew(Math.min(Math.max(j+f,u),d),Te);Y(Ge),Qe(Ge);break}case"ArrowRight":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=W==="rtl"?bS(j,w):yS(j,w);Y(ct),Qe(ct);break}const Ge=ew(Math.min(Math.max(W==="rtl"?j-f:j+f,u),d),Te);Y(Ge),Qe(Ge);break}case"ArrowDown":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=bS(j,w);Y(ct),Qe(ct);break}const Ge=ew(Math.min(Math.max(j-f,u),d),Te);Y(Ge),Qe(Ge);break}case"ArrowLeft":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=W==="rtl"?yS(j,w):bS(j,w);Y(ct),Qe(ct);break}const Ge=ew(Math.min(Math.max(W==="rtl"?j+f:j-f,u),d),Te);Y(Ge),Qe(Ge);break}case"Home":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){Y(xG(w)),Qe(xG(w));break}Y(u),Qe(u);break}case"End":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){Y(wG(w)),Qe(wG(w));break}Y(d),Qe(d);break}}};return y.jsx(HOe,{value:{getStyles:Z},children:y.jsxs(mG,{...q,ref:Hr(r,ie),onKeyDownCapture:Pt,onMouseDownCapture:()=>ie.current?.focus(),size:c,disabled:D,children:[y.jsx(vG,{inverted:O,offset:0,filled:De,marks:w,min:re,max:ge,value:he,disabled:D,containerProps:{ref:rt,onMouseEnter:A?()=>K(!0):void 0,onMouseLeave:A?()=>K(!1):void 0},children:y.jsx(gG,{max:ge,min:re,value:he,position:De,dragging:Rt,label:me,ref:ne,labelTransitionProps:C,labelAlwaysOn:_,thumbLabel:T,showLabelOnHover:A,isHovered:G,disabled:D,...I,children:R})}),y.jsx("input",{type:"hidden",name:x,value:he,...P})]})})});vS.classes=kG,vS.displayName="@mantine/core/Slider";const xS=ht((e,r)=>{const{w:n,h:o,miw:a,mih:i,...s}=He("Space",null,e);return y.jsx(Re,{ref:r,...s,w:n,miw:a??n,h:o,mih:i??o})});xS.displayName="@mantine/core/Space";var _G={root:"m_6d731127"};const GOe={gap:"md",align:"stretch",justify:"flex-start"},XOe=(e,{gap:r,align:n,justify:o})=>({root:{"--stack-gap":cc(r),"--stack-align":n,"--stack-justify":o}}),Xo=ht((e,r)=>{const n=He("Stack",GOe,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,align:u,justify:d,gap:h,variant:f,attributes:g,...b}=n,x=Dt({name:"Stack",props:n,classes:_G,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:XOe});return y.jsx(Re,{ref:r,...x("root"),variant:f,...b})});Xo.classes=_G,Xo.displayName="@mantine/core/Stack";const[KOe,wS]=hi("Tabs component was not found in the tree");var W0={root:"m_89d60db1","list--default":"m_576c9d4",list:"m_89d33d6d",tab:"m_4ec4dce6",panel:"m_b0c91715",tabSection:"m_fc420b1f",tabLabel:"m_42bbd1ae","tab--default":"m_539e827b","list--outline":"m_6772fbd5","tab--outline":"m_b59ab47c","tab--pills":"m_c3381914"};const Y0=ht((e,r)=>{const n=He("TabsList",null,e),{children:o,className:a,grow:i,justify:s,classNames:l,styles:c,style:u,mod:d,...h}=n,f=wS();return y.jsx(Re,{...h,...f.getStyles("list",{className:a,style:u,classNames:l,styles:c,props:n,variant:f.variant}),ref:r,role:"tablist",variant:f.variant,mod:[{grow:i,orientation:f.orientation,placement:f.orientation==="vertical"&&f.placement,inverted:f.inverted},d],"aria-orientation":f.orientation,__vars:{"--tabs-justify":s},children:o})});Y0.classes=W0,Y0.displayName="@mantine/core/TabsList";const yc=ht((e,r)=>{const n=He("TabsPanel",null,e),{children:o,className:a,value:i,classNames:s,styles:l,style:c,mod:u,keepMounted:d,...h}=n,f=wS(),g=f.value===i,b=f.keepMounted||d||g?o:null;return y.jsx(Re,{...f.getStyles("panel",{className:a,classNames:s,styles:l,style:[c,g?void 0:{display:"none"}],props:n}),ref:r,mod:[{orientation:f.orientation},u],role:"tabpanel",id:f.getPanelId(i),"aria-labelledby":f.getTabId(i),...h,children:b})});yc.classes=W0,yc.displayName="@mantine/core/TabsPanel";const pm=ht((e,r)=>{const n=He("TabsTab",null,e),{className:o,children:a,rightSection:i,leftSection:s,value:l,onClick:c,onKeyDown:u,disabled:d,color:h,style:f,classNames:g,styles:b,vars:x,mod:w,tabIndex:k,...C}=n,_=vo(),{dir:T}=Ru(),A=wS(),R=l===A.value,D=M=>{A.onChange(A.allowTabDeactivation&&l===A.value?null:l),c?.(M)},N={classNames:g,styles:b,props:n};return y.jsxs(Er,{...A.getStyles("tab",{className:o,style:f,variant:A.variant,...N}),disabled:d,unstyled:A.unstyled,variant:A.variant,mod:[{active:R,disabled:d,orientation:A.orientation,inverted:A.inverted,placement:A.orientation==="vertical"&&A.placement},w],ref:r,role:"tab",id:A.getTabId(l),"aria-selected":R,tabIndex:k!==void 0?k:R||A.value===null?0:-1,"aria-controls":A.getPanelId(l),onClick:D,__vars:{"--tabs-color":h?Ia(h,_):void 0},onKeyDown:N0({siblingSelector:'[role="tab"]',parentSelector:'[role="tablist"]',activateOnFocus:A.activateTabWithKeyboard,loop:A.loop,orientation:A.orientation||"horizontal",dir:T,onKeyDown:u}),...C,children:[s&&y.jsx("span",{...A.getStyles("tabSection",N),"data-position":"left",children:s}),a&&y.jsx("span",{...A.getStyles("tabLabel",N),children:a}),i&&y.jsx("span",{...A.getStyles("tabSection",N),"data-position":"right",children:i})]})});pm.classes=W0,pm.displayName="@mantine/core/TabsTab";const EG="Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value",ZOe={keepMounted:!0,orientation:"horizontal",loop:!0,activateTabWithKeyboard:!0,variant:"default",placement:"left"},QOe=(e,{radius:r,color:n,autoContrast:o})=>({root:{"--tabs-radius":Pn(r),"--tabs-color":Ia(n,e),"--tabs-text-color":gMe(o,e)?o7({color:n,theme:e,autoContrast:o}):void 0}}),Sp=ht((e,r)=>{const n=He("Tabs",ZOe,e),{defaultValue:o,value:a,onChange:i,orientation:s,children:l,loop:c,id:u,activateTabWithKeyboard:d,allowTabDeactivation:h,variant:f,color:g,radius:b,inverted:x,placement:w,keepMounted:k,classNames:C,styles:_,unstyled:T,className:A,style:R,vars:D,autoContrast:N,mod:M,attributes:O,...F}=n,L=fi(u),[U,P]=uc({value:a,defaultValue:o,finalValue:null,onChange:i}),V=Dt({name:"Tabs",props:n,classes:W0,className:A,style:R,classNames:C,styles:_,unstyled:T,attributes:O,vars:D,varsResolver:QOe});return y.jsx(KOe,{value:{placement:w,value:U,orientation:s,id:L,loop:c,activateTabWithKeyboard:d,getTabId:hU(`${L}-tab`,EG),getPanelId:hU(`${L}-panel`,EG),onChange:P,allowTabDeactivation:h,variant:f,color:g,radius:b,inverted:x,keepMounted:k,unstyled:T,getStyles:V},children:y.jsx(Re,{ref:r,id:L,variant:f,mod:[{orientation:s,inverted:s==="horizontal"&&x,placement:s==="vertical"&&w},M],...V("root"),...F,children:l})})});Sp.classes=W0,Sp.displayName="@mantine/core/Tabs",Sp.Tab=pm,Sp.Panel=yc,Sp.List=Y0;var SG={root:"m_7341320d"};const JOe=(e,{size:r,radius:n,variant:o,gradient:a,color:i,autoContrast:s})=>{const l=e.variantColorResolver({color:i||e.primaryColor,theme:e,gradient:a,variant:o||"filled",autoContrast:s});return{root:{"--ti-size":kr(r,"ti-size"),"--ti-radius":n===void 0?void 0:Pn(n),"--ti-bg":i||o?l.background:void 0,"--ti-color":i||o?l.color:void 0,"--ti-bd":i||o?l.border:void 0}}},Ba=ht((e,r)=>{const n=He("ThemeIcon",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,autoContrast:u,attributes:d,...h}=n,f=Dt({name:"ThemeIcon",classes:SG,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:d,vars:c,varsResolver:JOe});return y.jsx(Re,{ref:r,...f("root"),...h})});Ba.classes=SG,Ba.displayName="@mantine/core/ThemeIcon";const eje=["h1","h2","h3","h4","h5","h6"],tje=["xs","sm","md","lg","xl"];function rje(e,r){const n=r!==void 0?r:`h${e}`;return eje.includes(n)?{fontSize:`var(--mantine-${n}-font-size)`,fontWeight:`var(--mantine-${n}-font-weight)`,lineHeight:`var(--mantine-${n}-line-height)`}:tje.includes(n)?{fontSize:`var(--mantine-font-size-${n})`,fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}:{fontSize:Me(n),fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}}var CG={root:"m_8a5d1357"};const nje={order:1},oje=(e,{order:r,size:n,lineClamp:o,textWrap:a})=>{const i=rje(r||1,n);return{root:{"--title-fw":i.fontWeight,"--title-lh":i.lineHeight,"--title-fz":i.fontSize,"--title-line-clamp":typeof o=="number"?o.toString():void 0,"--title-text-wrap":a}}},Cp=ht((e,r)=>{const n=He("Title",nje,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,order:c,vars:u,size:d,variant:h,lineClamp:f,textWrap:g,mod:b,attributes:x,...w}=n,k=Dt({name:"Title",props:n,classes:CG,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:x,vars:u,varsResolver:oje});return[1,2,3,4,5,6].includes(c)?y.jsx(Re,{...k("root"),component:`h${c}`,variant:h,ref:r,mod:[{order:c,"data-line-clamp":typeof f=="number"},b],size:d,...w}):null});Cp.classes=CG,Cp.displayName="@mantine/core/Title";function TG(e,r,n){if(!e||!r)return[];const o=n.indexOf(e),a=n.indexOf(r),i=Math.min(o,a),s=Math.max(o,a);return n.slice(i,s+1)}function kS({node:e,getStyles:r,rootIndex:n,controller:o,expandOnClick:a,selectOnClick:i,isSubtree:s,level:l=1,renderNode:c,flatValues:u,allowRangeSelection:d,expandOnSpace:h,checkOnSpace:f}){const g=E.useRef(null),b=(e.children||[]).map(_=>y.jsx(kS,{node:_,flatValues:u,getStyles:r,rootIndex:void 0,level:l+1,controller:o,expandOnClick:a,isSubtree:!0,renderNode:c,selectOnClick:i,allowRangeSelection:d,expandOnSpace:h,checkOnSpace:f},_.value)),x=_=>{if(_.nativeEvent.code==="ArrowRight"&&(_.stopPropagation(),_.preventDefault(),o.expandedState[e.value]?_.currentTarget.querySelector("[role=treeitem]")?.focus():o.expand(e.value)),_.nativeEvent.code==="ArrowLeft"&&(_.stopPropagation(),_.preventDefault(),o.expandedState[e.value]&&(e.children||[]).length>0?o.collapse(e.value):s&&Wf(_.currentTarget,"[role=treeitem]")?.focus()),_.nativeEvent.code==="ArrowDown"||_.nativeEvent.code==="ArrowUp"){const T=Wf(_.currentTarget,"[data-tree-root]");if(!T)return;_.stopPropagation(),_.preventDefault();const A=Array.from(T.querySelectorAll("[role=treeitem]")),R=A.indexOf(_.currentTarget);if(R===-1)return;const D=_.nativeEvent.code==="ArrowDown"?R+1:R-1;if(A[D]?.focus(),_.shiftKey){const N=A[D];N&&o.setSelectedState(TG(o.anchorNode,N.dataset.value,u))}}_.nativeEvent.code==="Space"&&(h&&(_.stopPropagation(),_.preventDefault(),o.toggleExpanded(e.value)),f&&(_.stopPropagation(),_.preventDefault(),o.isNodeChecked(e.value)?o.uncheckNode(e.value):o.checkNode(e.value)))},w=_=>{_.stopPropagation(),d&&_.shiftKey&&o.anchorNode?(o.setSelectedState(TG(o.anchorNode,e.value,u)),g.current?.focus()):(a&&o.toggleExpanded(e.value),i&&o.select(e.value),g.current?.focus())},k=o.selectedState.includes(e.value),C={...r("label"),onClick:w,"data-selected":k||void 0,"data-value":e.value,"data-hovered":o.hoveredNode===e.value||void 0};return y.jsxs("li",{...r("node",{style:{"--label-offset":`calc(var(--level-offset) * ${l-1})`}}),role:"treeitem","aria-selected":k,"data-value":e.value,"data-selected":k||void 0,"data-hovered":o.hoveredNode===e.value||void 0,"data-level":l,tabIndex:n===0?0:-1,onKeyDown:x,ref:g,onMouseOver:_=>{_.stopPropagation(),o.setHoveredNode(e.value)},onMouseLeave:_=>{_.stopPropagation(),o.setHoveredNode(null)},children:[typeof c=="function"?c({node:e,level:l,selected:k,tree:o,expanded:o.expandedState[e.value]||!1,hasChildren:Array.isArray(e.children)&&e.children.length>0,elementProps:C}):y.jsx("div",{...C,children:e.label}),o.expandedState[e.value]&&b.length>0&&y.jsx(Re,{component:"ul",role:"group",...r("subtree"),"data-level":l,children:b})]})}kS.displayName="@mantine/core/TreeNode";function tw(e,r,n=[]){const o=[];for(const a of e)if(Array.isArray(a.children)&&a.children.length>0){const i=tw(a.children,r,n);if(i.currentTreeChecked.length===a.children.length){const s=i.currentTreeChecked.every(c=>c.checked),l={checked:s,indeterminate:!s,value:a.value,hasChildren:!0};o.push(l),n.push(l)}else if(i.currentTreeChecked.length>0){const s={checked:!1,indeterminate:!0,value:a.value,hasChildren:!0};o.push(s),n.push(s)}}else if(r.includes(a.value)){const i={checked:!0,indeterminate:!1,value:a.value,hasChildren:!1};o.push(i),n.push(i)}return{result:n,currentTreeChecked:o}}function AG(e,r){for(const n of r){if(n.value===e)return n;if(Array.isArray(n.children)){const o=AG(e,n.children);if(o)return o}}return null}function rw(e,r,n=[]){const o=AG(e,r);return o?!Array.isArray(o.children)||o.children.length===0?[o.value]:(o.children.forEach(a=>{Array.isArray(a.children)&&a.children.length>0?rw(a.value,r,n):n.push(a.value)}),n):n}function RG(e){return e.reduce((r,n)=>(Array.isArray(n.children)&&n.children.length>0?r.push(...RG(n.children)):r.push(n.value),r),[])}function aje(e,r,n){return n.length===0?!1:n.includes(e)?!0:tw(r,n).result.some(o=>o.value===e&&o.checked)}const ije=MU(aje);function sje(e,r,n){return n.length===0?!1:tw(r,n).result.some(o=>o.value===e&&o.indeterminate)}const lje=MU(sje);function NG(e,r,n,o={}){return r.forEach(a=>{o[a.value]=a.value in e?e[a.value]:a.value===n,Array.isArray(a.children)&&NG(e,a.children,n,o)}),o}function cje(e,r){const n=[];return e.forEach(o=>n.push(...rw(o,r))),Array.from(new Set(n))}function G0({initialSelectedState:e=[],initialCheckedState:r=[],initialExpandedState:n={},multiple:o=!1,onNodeCollapse:a,onNodeExpand:i}={}){const[s,l]=E.useState([]),[c,u]=E.useState(n),[d,h]=E.useState(e),[f,g]=E.useState(r),[b,x]=E.useState(null),[w,k]=E.useState(null),C=E.useCallback(I=>{u(H=>NG(H,I,d)),g(H=>cje(H,I)),l(I)},[d,f]),_=E.useCallback(I=>{u(H=>{const q={...H,[I]:!H[I]};return q[I]?i?.(I):a?.(I),q})},[a,i]),T=E.useCallback(I=>{u(H=>(H[I]!==!1&&a?.(I),{...H,[I]:!1}))},[a]),A=E.useCallback(I=>{u(H=>(H[I]!==!0&&i?.(I),{...H,[I]:!0}))},[i]),R=E.useCallback(()=>{u(I=>{const H={...I};return Object.keys(H).forEach(q=>{H[q]=!0}),H})},[]),D=E.useCallback(()=>{u(I=>{const H={...I};return Object.keys(H).forEach(q=>{H[q]=!1}),H})},[]),N=E.useCallback(I=>h(H=>o?H.includes(I)?(x(null),H.filter(q=>q!==I)):(x(I),[...H,I]):H.includes(I)?(x(null),[]):(x(I),[I])),[]),M=E.useCallback(I=>{x(I),h(H=>o?H.includes(I)?H:[...H,I]:[I])},[]),O=E.useCallback(I=>{b===I&&x(null),h(H=>H.filter(q=>q!==I))},[]),F=E.useCallback(()=>{h([]),x(null)},[]),L=E.useCallback(I=>{const H=rw(I,s);g(q=>Array.from(new Set([...q,...H])))},[s]),U=E.useCallback(I=>{const H=rw(I,s);g(q=>q.filter(Z=>!H.includes(Z)))},[s]),P=E.useCallback(()=>{g(()=>RG(s))},[s]),V=E.useCallback(()=>{g([])},[]);return{multiple:o,expandedState:c,selectedState:d,checkedState:f,anchorNode:b,initialize:C,toggleExpanded:_,collapse:T,expand:A,expandAllNodes:R,collapseAllNodes:D,setExpandedState:u,checkNode:L,uncheckNode:U,checkAllNodes:P,uncheckAllNodes:V,setCheckedState:g,toggleSelected:N,select:M,deselect:O,clearSelected:F,setSelectedState:h,hoveredNode:w,setHoveredNode:k,getCheckedNodes:()=>tw(s,f).result,isNodeChecked:I=>ije(I,s,f),isNodeIndeterminate:I=>lje(I,s,f)}}var DG={root:"m_f698e191",subtree:"m_75f3ecf",node:"m_f6970eb1",label:"m_dc283425"};function $G(e){return e.reduce((r,n)=>(r.push(n.value),n.children&&r.push(...$G(n.children)),r),[])}const uje={expandOnClick:!0,allowRangeSelection:!0,expandOnSpace:!0},dje=(e,{levelOffset:r})=>({root:{"--level-offset":cc(r)}}),hm=ht((e,r)=>{const n=He("Tree",uje,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,data:u,expandOnClick:d,tree:h,renderNode:f,selectOnClick:g,clearSelectionOnOutsideClick:b,allowRangeSelection:x,expandOnSpace:w,levelOffset:k,checkOnSpace:C,attributes:_,...T}=n,A=G0(),R=h||A,D=Dt({name:"Tree",classes:DG,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:_,vars:c,varsResolver:dje}),N=yU(()=>b&&R.clearSelected()),M=Hr(r,N),O=E.useMemo(()=>$G(u),[u]);E.useEffect(()=>{R.initialize(u)},[u]);const F=u.map((L,U)=>y.jsx(kS,{node:L,getStyles:D,rootIndex:U,expandOnClick:d,selectOnClick:g,controller:R,renderNode:f,flatValues:O,allowRangeSelection:x,expandOnSpace:w,checkOnSpace:C},L.value));return y.jsx(Re,{component:"ul",ref:M,...D("root"),...T,role:"tree","aria-multiselectable":R.multiple,"data-tree-root":!0,children:F})});hm.displayName="@mantine/core/Tree",hm.classes=DG;const _S=E.createContext(null);function MG(){const e=E.useContext(_S);if(!e)throw new Error("useRootContainer must be used within a RootContainer");return e}function pje(){return MG().ref}function hje(){return MG().ref.current}const PG=E.createContext(null);function fje(){const e=E.useContext(PG);return e===null&&console.warn("ReduceGraphicsMode is not provided"),e??!1}const[mje,gje]=hi("PanningAtomSafeCtx is not provided");function yje({id:e,className:r,reduceGraphics:n=!1,children:o}){const[a,i]=E.useState(!1),s=E.useRef(null),l=E.useRef(null);l.current||(l.current=JNe(!1)),VE(()=>{i(!0)},[]),E.useEffect(()=>l.current?.subscribe(u=>{s.current?.setAttribute("data-likec4-diagram-panning",u?"true":"false")}),[]);const c=E.useMemo(()=>({id:e,ref:s}),[e,s]);return y.jsx(mje,{value:l.current,children:y.jsx(PG.Provider,{value:n,children:y.jsx("div",{id:e,className:et("likec4-root",r),ref:s,...n&&{"data-likec4-reduced-graphics":!0},children:a&&!!c.ref.current&&y.jsx(_S.Provider,{value:c,children:o})})})})}var bje=Object.getOwnPropertyNames,vje=Object.getOwnPropertySymbols,xje=Object.prototype.hasOwnProperty;function zG(e,r){return function(n,o,a){return e(n,o,a)&&r(n,o,a)}}function nw(e){return function(r,n,o){if(!r||!n||typeof r!="object"||typeof n!="object")return e(r,n,o);var a=o.cache,i=a.get(r),s=a.get(n);if(i&&s)return i===n&&s===r;a.set(r,n),a.set(n,r);var l=e(r,n,o);return a.delete(r),a.delete(n),l}}function wje(e){return e?.[Symbol.toStringTag]}function IG(e){return bje(e).concat(vje(e))}var kje=Object.hasOwn||(function(e,r){return xje.call(e,r)});function Tp(e,r){return e===r||!e&&!r&&e!==e&&r!==r}var _je="__v",Eje="__o",Sje="_owner",OG=Object.getOwnPropertyDescriptor,jG=Object.keys;function Cje(e,r,n){var o=e.length;if(r.length!==o)return!1;for(;o-- >0;)if(!n.equals(e[o],r[o],o,o,e,r,n))return!1;return!0}function Tje(e,r){return Tp(e.getTime(),r.getTime())}function Aje(e,r){return e.name===r.name&&e.message===r.message&&e.cause===r.cause&&e.stack===r.stack}function Rje(e,r){return e===r}function LG(e,r,n){var o=e.size;if(o!==r.size)return!1;if(!o)return!0;for(var a=new Array(o),i=e.entries(),s,l,c=0;(s=i.next())&&!s.done;){for(var u=r.entries(),d=!1,h=0;(l=u.next())&&!l.done;){if(a[h]){h++;continue}var f=s.value,g=l.value;if(n.equals(f[0],g[0],c,h,e,r,n)&&n.equals(f[1],g[1],f[0],g[0],e,r,n)){d=a[h]=!0;break}h++}if(!d)return!1;c++}return!0}var Nje=Tp;function Dje(e,r,n){var o=jG(e),a=o.length;if(jG(r).length!==a)return!1;for(;a-- >0;)if(!FG(e,r,n,o[a]))return!1;return!0}function X0(e,r,n){var o=IG(e),a=o.length;if(IG(r).length!==a)return!1;for(var i,s,l;a-- >0;)if(i=o[a],!FG(e,r,n,i)||(s=OG(e,i),l=OG(r,i),(s||l)&&(!s||!l||s.configurable!==l.configurable||s.enumerable!==l.enumerable||s.writable!==l.writable)))return!1;return!0}function $je(e,r){return Tp(e.valueOf(),r.valueOf())}function Mje(e,r){return e.source===r.source&&e.flags===r.flags}function BG(e,r,n){var o=e.size;if(o!==r.size)return!1;if(!o)return!0;for(var a=new Array(o),i=e.values(),s,l;(s=i.next())&&!s.done;){for(var c=r.values(),u=!1,d=0;(l=c.next())&&!l.done;){if(!a[d]&&n.equals(s.value,l.value,s.value,l.value,e,r,n)){u=a[d]=!0;break}d++}if(!u)return!1}return!0}function Pje(e,r){var n=e.length;if(r.length!==n)return!1;for(;n-- >0;)if(e[n]!==r[n])return!1;return!0}function zje(e,r){return e.hostname===r.hostname&&e.pathname===r.pathname&&e.protocol===r.protocol&&e.port===r.port&&e.hash===r.hash&&e.username===r.username&&e.password===r.password}function FG(e,r,n,o){return(o===Sje||o===Eje||o===_je)&&(e.$$typeof||r.$$typeof)?!0:kje(r,o)&&n.equals(e[o],r[o],o,o,e,r,n)}var Ije="[object Arguments]",Oje="[object Boolean]",jje="[object Date]",Lje="[object Error]",Bje="[object Map]",Fje="[object Number]",Hje="[object Object]",Vje="[object RegExp]",qje="[object Set]",Uje="[object String]",Wje="[object URL]",Yje=Array.isArray,HG=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,VG=Object.assign,Gje=Object.prototype.toString.call.bind(Object.prototype.toString);function Xje(e){var r=e.areArraysEqual,n=e.areDatesEqual,o=e.areErrorsEqual,a=e.areFunctionsEqual,i=e.areMapsEqual,s=e.areNumbersEqual,l=e.areObjectsEqual,c=e.arePrimitiveWrappersEqual,u=e.areRegExpsEqual,d=e.areSetsEqual,h=e.areTypedArraysEqual,f=e.areUrlsEqual,g=e.unknownTagComparators;return function(b,x,w){if(b===x)return!0;if(b==null||x==null)return!1;var k=typeof b;if(k!==typeof x)return!1;if(k!=="object")return k==="number"?s(b,x,w):k==="function"?a(b,x,w):!1;var C=b.constructor;if(C!==x.constructor)return!1;if(C===Object)return l(b,x,w);if(Yje(b))return r(b,x,w);if(HG!=null&&HG(b))return h(b,x,w);if(C===Date)return n(b,x,w);if(C===RegExp)return u(b,x,w);if(C===Map)return i(b,x,w);if(C===Set)return d(b,x,w);var _=Gje(b);if(_===jje)return n(b,x,w);if(_===Vje)return u(b,x,w);if(_===Bje)return i(b,x,w);if(_===qje)return d(b,x,w);if(_===Hje)return typeof b.then!="function"&&typeof x.then!="function"&&l(b,x,w);if(_===Wje)return f(b,x,w);if(_===Lje)return o(b,x,w);if(_===Ije)return l(b,x,w);if(_===Oje||_===Fje||_===Uje)return c(b,x,w);if(g){var T=g[_];if(!T){var A=wje(b);A&&(T=g[A])}if(T)return T(b,x,w)}return!1}}function Kje(e){var r=e.circular,n=e.createCustomConfig,o=e.strict,a={areArraysEqual:o?X0:Cje,areDatesEqual:Tje,areErrorsEqual:Aje,areFunctionsEqual:Rje,areMapsEqual:o?zG(LG,X0):LG,areNumbersEqual:Nje,areObjectsEqual:o?X0:Dje,arePrimitiveWrappersEqual:$je,areRegExpsEqual:Mje,areSetsEqual:o?zG(BG,X0):BG,areTypedArraysEqual:o?X0:Pje,areUrlsEqual:zje,unknownTagComparators:void 0};if(n&&(a=VG({},a,n(a))),r){var i=nw(a.areArraysEqual),s=nw(a.areMapsEqual),l=nw(a.areObjectsEqual),c=nw(a.areSetsEqual);a=VG({},a,{areArraysEqual:i,areMapsEqual:s,areObjectsEqual:l,areSetsEqual:c})}return a}function Zje(e){return function(r,n,o,a,i,s,l){return e(r,n,l)}}function Qje(e){var r=e.circular,n=e.comparator,o=e.createState,a=e.equals,i=e.strict;if(o)return function(l,c){var u=o(),d=u.cache,h=d===void 0?r?new WeakMap:void 0:d,f=u.meta;return n(l,c,{cache:h,equals:a,meta:f,strict:i})};if(r)return function(l,c){return n(l,c,{cache:new WeakMap,equals:a,meta:void 0,strict:i})};var s={cache:void 0,equals:a,meta:void 0,strict:i};return function(l,c){return n(l,c,s)}}var lt=zu();zu({strict:!0}),zu({circular:!0}),zu({circular:!0,strict:!0});var an=zu({createInternalComparator:function(){return Tp}});zu({strict:!0,createInternalComparator:function(){return Tp}}),zu({circular:!0,createInternalComparator:function(){return Tp}}),zu({circular:!0,createInternalComparator:function(){return Tp},strict:!0});function zu(e){e===void 0&&(e={});var r=e.circular,n=r===void 0?!1:r,o=e.createInternalComparator,a=e.createState,i=e.strict,s=i===void 0?!1:i,l=Kje(e),c=Xje(l),u=o?o(c):Zje(c);return Qje({circular:n,comparator:c,createState:a,equals:u,strict:s})}const K0=E.createContext(null),ES=E.createContext(null);function Jje(){return E.useContext(K0)}function Ko(){const e=E.useContext(K0);if(!e)throw new Error("LikeC4Model not found. Make sure you have LikeC4ModelProvider.");return e}function eLe(){const e=Ko(),[r,n]=E.useState(e.$data.specification);return E.useEffect(()=>{n(o=>lt(o,e.$data.specification)?o:e.$data.specification)},[e]),r}const qG=E.createContext({}),tLe=I6e,rLe=e=>{const r=e.color;if(OB(e))return` + --colors-likec4-tag-bg: ${r}; + --colors-likec4-tag-bg-hover: color-mix(in srgb, ${r}, var(--colors-likec4-mix-color) 20%); + `;if(!tLe.includes(r))return"";let n="12";return["mint","grass","lime","yellow","amber"].includes(r)&&(n="dark-2"),` + --colors-likec4-tag-border: var(--colors-${r}-8); + --colors-likec4-tag-bg: var(--colors-${r}-9); + --colors-likec4-tag-bg-hover: var(--colors-${r}-10); + --colors-likec4-tag-text: var(--colors-${r}-${n}); + `};function nLe(e,r){return!e||fp(e)?"":En(M9(e),pNe(([n,o])=>[`:is(${r} [data-likec4-tag="${n}"]) {`,rLe(o),"}"]),qq(` +`))}function oLe({children:e,rootSelector:r}){const n=eLe().tags,o=nLe(n,r);return y.jsxs(qG.Provider,{value:n,children:[o!==""&&y.jsx(aLe,{stylesheet:o}),e]})}const aLe=E.memo(({stylesheet:e})=>{const r=yp()?.();return y.jsx("style",{"data-likec4-tags":!0,type:"text/css",dangerouslySetInnerHTML:{__html:e},nonce:r})});function iLe(e){return E.useContext(qG)[e]??{color:"tomato"}}function UG(){return fi().replace("mantine-","likec4-")}var sLe="css,pos,insetX,insetY,insetEnd,end,insetStart,start,flexDir,p,pl,pr,pt,pb,py,paddingY,paddingX,px,pe,paddingEnd,ps,paddingStart,ml,mr,mt,mb,m,my,marginY,mx,marginX,me,marginEnd,ms,marginStart,ringWidth,ringColor,ring,ringOffset,w,minW,maxW,h,minH,maxH,textShadowColor,bgPosition,bgPositionX,bgPositionY,bgAttachment,bgClip,bg,bgColor,bgOrigin,bgImage,bgRepeat,bgBlendMode,bgSize,bgGradient,bgLinear,bgRadial,bgConic,rounded,roundedTopLeft,roundedTopRight,roundedBottomRight,roundedBottomLeft,roundedTop,roundedRight,roundedBottom,roundedLeft,roundedStartStart,roundedStartEnd,roundedStart,roundedEndStart,roundedEndEnd,roundedEnd,borderX,borderXWidth,borderXColor,borderY,borderYWidth,borderYColor,borderStart,borderStartWidth,borderStartColor,borderEnd,borderEndWidth,borderEndColor,shadow,shadowColor,x,y,z,scrollMarginY,scrollMarginX,scrollPaddingY,scrollPaddingX,aspectRatio,boxDecorationBreak,zIndex,boxSizing,objectPosition,objectFit,overscrollBehavior,overscrollBehaviorX,overscrollBehaviorY,position,top,left,inset,insetInline,insetBlock,insetBlockEnd,insetBlockStart,insetInlineEnd,insetInlineStart,right,bottom,float,visibility,display,hideFrom,hideBelow,flexBasis,flex,flexDirection,flexGrow,flexShrink,gridTemplateColumns,gridTemplateRows,gridColumn,gridRow,gridColumnStart,gridColumnEnd,gridAutoFlow,gridAutoColumns,gridAutoRows,gap,gridGap,gridRowGap,gridColumnGap,rowGap,columnGap,justifyContent,alignContent,alignItems,alignSelf,padding,paddingLeft,paddingRight,paddingTop,paddingBottom,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingInline,paddingInlineEnd,paddingInlineStart,marginLeft,marginRight,marginTop,marginBottom,margin,marginBlock,marginBlockEnd,marginBlockStart,marginInline,marginInlineEnd,marginInlineStart,spaceX,spaceY,outlineWidth,outlineColor,outline,outlineOffset,focusRing,focusVisibleRing,focusRingColor,focusRingOffset,focusRingWidth,focusRingStyle,divideX,divideY,divideColor,divideStyle,width,inlineSize,minWidth,minInlineSize,maxWidth,maxInlineSize,height,blockSize,minHeight,minBlockSize,maxHeight,maxBlockSize,boxSize,color,fontFamily,fontSize,fontSizeAdjust,fontPalette,fontKerning,fontFeatureSettings,fontWeight,fontSmoothing,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariationSettings,fontVariantNumeric,letterSpacing,lineHeight,textAlign,textDecoration,textDecorationColor,textEmphasisColor,textDecorationStyle,textDecorationThickness,textUnderlineOffset,textTransform,textIndent,textShadow,textOverflow,verticalAlign,wordBreak,textWrap,truncate,lineClamp,listStyleType,listStylePosition,listStyleImage,listStyle,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundAttachment,backgroundClip,background,backgroundColor,backgroundOrigin,backgroundImage,backgroundRepeat,backgroundBlendMode,backgroundSize,backgroundGradient,backgroundLinear,backgroundRadial,backgroundConic,textGradient,gradientFromPosition,gradientToPosition,gradientFrom,gradientTo,gradientVia,gradientViaPosition,borderRadius,borderTopLeftRadius,borderTopRightRadius,borderBottomRightRadius,borderBottomLeftRadius,borderTopRadius,borderRightRadius,borderBottomRadius,borderLeftRadius,borderStartStartRadius,borderStartEndRadius,borderStartRadius,borderEndStartRadius,borderEndEndRadius,borderEndRadius,border,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,borderBlockStartWidth,borderBlockEndWidth,borderColor,borderInline,borderInlineWidth,borderInlineColor,borderBlock,borderBlockWidth,borderBlockColor,borderLeft,borderLeftColor,borderInlineStart,borderInlineStartWidth,borderInlineStartColor,borderRight,borderRightColor,borderInlineEnd,borderInlineEndWidth,borderInlineEndColor,borderTop,borderTopColor,borderBottom,borderBottomColor,borderBlockEnd,borderBlockEndColor,borderBlockStart,borderBlockStartColor,opacity,boxShadow,boxShadowColor,mixBlendMode,filter,brightness,contrast,grayscale,hueRotate,invert,saturate,sepia,dropShadow,blur,backdropFilter,backdropBlur,backdropBrightness,backdropContrast,backdropGrayscale,backdropHueRotate,backdropInvert,backdropOpacity,backdropSaturate,backdropSepia,borderCollapse,borderSpacing,borderSpacingX,borderSpacingY,tableLayout,transitionTimingFunction,transitionDelay,transitionDuration,transitionProperty,transition,animation,animationName,animationTimingFunction,animationDuration,animationDelay,animationPlayState,animationComposition,animationFillMode,animationDirection,animationIterationCount,animationRange,animationState,animationRangeStart,animationRangeEnd,animationTimeline,transformOrigin,transformBox,transformStyle,transform,rotate,rotateX,rotateY,rotateZ,scale,scaleX,scaleY,translate,translateX,translateY,translateZ,accentColor,caretColor,scrollBehavior,scrollbar,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollMargin,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollMarginBottom,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollPaddingBottom,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollSnapStrictness,scrollSnapMargin,scrollSnapMarginTop,scrollSnapMarginBottom,scrollSnapMarginLeft,scrollSnapMarginRight,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,touchAction,userSelect,overflow,overflowWrap,overflowX,overflowY,overflowAnchor,overflowBlock,overflowInline,overflowClipBox,overflowClipMargin,overscrollBehaviorBlock,overscrollBehaviorInline,fill,stroke,strokeWidth,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,srOnly,debug,appearance,backfaceVisibility,clipPath,hyphens,mask,maskImage,maskSize,textSizeAdjust,container,containerName,containerType,cursor,colorPalette,_hover,_focus,_focusWithin,_focusVisible,_disabled,_active,_visited,_target,_readOnly,_readWrite,_empty,_checked,_enabled,_expanded,_highlighted,_complete,_incomplete,_dragging,_before,_after,_firstLetter,_firstLine,_marker,_selection,_file,_backdrop,_first,_last,_only,_even,_odd,_firstOfType,_lastOfType,_onlyOfType,_peerFocus,_peerHover,_peerActive,_peerFocusWithin,_peerFocusVisible,_peerDisabled,_peerChecked,_peerInvalid,_peerExpanded,_peerPlaceholderShown,_groupFocus,_groupHover,_groupActive,_groupFocusWithin,_groupFocusVisible,_groupDisabled,_groupChecked,_groupExpanded,_groupInvalid,_indeterminate,_required,_valid,_invalid,_autofill,_inRange,_outOfRange,_placeholder,_placeholderShown,_pressed,_selected,_grabbed,_underValue,_overValue,_atValue,_default,_optional,_open,_closed,_fullscreen,_loading,_hidden,_current,_currentPage,_currentStep,_today,_unavailable,_rangeStart,_rangeEnd,_now,_topmost,_motionReduce,_motionSafe,_print,_landscape,_portrait,_dark,_light,_osDark,_osLight,_highContrast,_lessContrast,_moreContrast,_ltr,_rtl,_scrollbar,_scrollbarThumb,_scrollbarTrack,_horizontal,_vertical,_icon,_starting,_noscript,_invertedColors,_shapeSizeXs,_shapeSizeSm,_shapeSizeMd,_shapeSizeLg,_shapeSizeXl,_shapeRectangle,_shapePerson,_shapeBrowser,_shapeMobile,_shapeCylinder,_shapeStorage,_shapeQueue,_notDisabled,_reduceGraphics,_reduceGraphicsOnPan,_noReduceGraphics,_whenPanning,_smallZoom,_compoundTransparent,_edgeActive,_whenHovered,_whenSelectable,_whenSelected,_whenDimmed,_whenFocused,_p3,_srgb,_rec2020,xs,xsOnly,xsDown,sm,smOnly,smDown,md,mdOnly,mdDown,lg,lgOnly,lgDown,xl,xlOnly,xlDown,xsToSm,xsToMd,xsToLg,xsToXl,smToMd,smToLg,smToXl,mdToLg,mdToXl,lgToXl,@/xs,@/sm,@/md,@/lg,@likec4-root/xs,@likec4-root/sm,@likec4-root/md,@likec4-root/lg,@likec4-dialog/xs,@likec4-dialog/sm,@likec4-dialog/md,@likec4-dialog/lg,textStyle,layerStyle,animationStyle",lLe=sLe.split(","),cLe="WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,WebkitUserSelect,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,anchorName,anchorScope,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationRange,animationRangeEnd,animationRangeStart,animationTimeline,animationTimingFunction,appearance,aspectRatio,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockSize,border,borderBlock,borderBlockColor,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBlockStyle,borderBlockWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineColor,borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderInlineStyle,borderInlineWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,clipRule,color,colorInterpolationFilters,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,cx,cy,d,direction,display,dominantBaseline,emptyCells,fieldSizing,fill,fillOpacity,fillRule,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,floodColor,floodOpacity,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontSynthesisPosition,fontSynthesisSmallCaps,fontSynthesisStyle,fontSynthesisWeight,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontVariationSettings,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,interpolateSize,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lightingColor,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,marker,markerEnd,markerMid,markerStart,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,printColorAdjust,quotes,r,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,rx,ry,scale,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,scrollbarColor,scrollbarGutter,scrollbarWidth,shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,tabSize,tableLayout,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,viewTransitionName,visibility,whiteSpace,whiteSpaceCollapse,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,x,y,zIndex,zoom,alignmentBaseline,baselineShift,colorInterpolation,colorRendering,glyphOrientationVertical",uLe=cLe.split(",").concat(lLe),dLe=new Map(uLe.map(e=>[e,!0])),pLe=/&|@/,WG=go(e=>dLe.has(e)||e.startsWith("--")||pLe.test(e));const hLe=(e,r)=>!r.includes(e)&&!WG(e),fLe=(e,r)=>e.__shouldForwardProps__&&r?n=>e.__shouldForwardProps__(n)&&r(n):r,mLe=(e,r)=>{if(e&&!r)return e;if(!e&&r)return r;if(e.__cva__&&r.__cva__||e.__recipe__&&r.__recipe__)return e.merge(r);const n=new TypeError("Cannot merge cva with recipe. Please use either cva or recipe.");throw TypeError.captureStackTrace?.(n),n},gLe=e=>typeof e=="string"?e:e?.displayName||e?.name||"Component";function SS(e,r={},n={}){const o=r.__cva__||r.__recipe__?r:o0(r),a=n.shouldForwardProp||hLe,i=f=>n.forwardProps?.includes(f)?!0:a(f,o.variantKeys),s=Object.assign(n.dataAttr&&r.__name__?{"data-recipe":r.__name__}:{},n.defaultProps),l=mLe(e.__cva__,o),c=fLe(e,i),u=e.__base__||e,d=E.forwardRef(function(f,g){const{as:b=u,unstyled:x,children:w,...k}=f,C=E.useMemo(()=>Object.assign({},s,k),[k]),[_,T,A,R,D]=E.useMemo(()=>oo(C,LE.keys,c,l.variantKeys,WG),[C]);function N(){const{css:F,...L}=R,U=l.__getCompoundVariantCss__?.(A);return et(l(A,!1),be(U,L,F),C.className)}function M(){const{css:F,...L}=R,U=l.raw(A);return et(be(U,L,F),C.className)}const O=()=>{if(x){const{css:F,...L}=R;return et(be(L,F),C.className)}return r.__recipe__?N():M()};return E.createElement(b,{ref:g,...T,...D,...LE(_),className:O()},w??C.children)}),h=gLe(u);return d.displayName=`styled.${h}`,d.__cva__=l,d.__base__=u,d.__shouldForwardProps__=i,d}function yLe(){const e=new Map;return new Proxy(SS,{apply(r,n,o){return SS(...o)},get(r,n){return e.has(n)||e.set(n,SS(n)),e.get(n)}})}const Iu=yLe(),YG={transform(e){return e}},bLe=(e={})=>{const r=n0(YG,e);return YG.transform(r,r0)},zr=E.forwardRef(function(e,r){const[n,o]=oo(e,[]),a=bLe(n),i={ref:r,...a,...o};return E.createElement(Iu.div,i)}),GG={transform(e){const{justify:r,gap:n,...o}=e;return{display:"flex",alignItems:"center",justifyContent:r,gap:n,flexDirection:"column",...o}},defaultValues:{alignItems:"stretch",gap:"sm"}},CS=(e={})=>{const r=n0(GG,e);return GG.transform(r,r0)},Z0=e=>be(CS(e));Z0.raw=CS;const Ap=E.forwardRef(function(e,r){const[n,o]=oo(e,["justify","gap"]),a=CS(n),i={ref:r,...a,...o};return E.createElement(Iu.div,i)}),XG={transform(e){const{justify:r,gap:n,...o}=e;return{display:"flex",alignItems:"center",justifyContent:r,gap:n,flexDirection:"row",...o}},defaultValues:{gap:"sm"}},TS=(e={})=>{const r=n0(XG,e);return XG.transform(r,r0)},Zn=e=>be(TS(e));Zn.raw=TS;const sn=E.forwardRef(function(e,r){const[n,o]=oo(e,["justify","gap"]),a=TS(n),i={ref:r,...a,...o};return E.createElement(Iu.div,i)}),KG={transform(e){return{position:"relative",maxWidth:"8xl",mx:"auto",px:{base:"4",md:"6",lg:"8"},...e}}},ZG=(e={})=>{const r=n0(KG,e);return KG.transform(r,r0)},QG=e=>be(ZG(e));QG.raw=ZG;const JG={transform(e,{map:r,isCssUnit:n,isCssVar:o}){const{inline:a,block:i,...s}=e,l=c=>n(c)||o(c)?c:`token(spacing.${c}, ${c})`;return{"--bleed-x":r(a,l),"--bleed-y":r(i,l),marginInline:"calc(var(--bleed-x, 0) * -1)",marginBlock:"calc(var(--bleed-y, 0) * -1)",...s}},defaultValues:{inline:"0",block:"0"}},eX=(e={})=>{const r=n0(JG,e);return JG.transform(r,r0)},tX=e=>be(eX(e));tX.raw=eX;const vLe=E.createContext(null),AS={didCatch:!1,error:null};let RS=class extends E.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=AS}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){const{error:e}=this.state;if(e!==null){for(var r,n,o=arguments.length,a=new Array(o),i=0;i0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e.length!==r.length||e.some((n,o)=>!Object.is(n,r[o]))}const wLe=[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]],Rp=Nt("outline","x","X",wLe);function NS({error:e,resetErrorBoundary:r}){const n=e instanceof Error?e.message:"Unknown error",o=E.useRef(null);return E.useEffect(()=>{o.current?.showModal()},[]),y.jsx("dialog",{ref:o,className:be({margin:"0",padding:"0",position:"fixed",top:"10",left:"10",width:"[calc(100vw - ({spacing.10} * 2))]",height:"max-content",maxHeight:"[calc(100vh - ({spacing.10} * 3))]",background:"likec4.overlay.body",rounded:"sm",borderWidth:3,borderColor:"likec4.overlay.border",shadow:"xl",outline:"none",_backdrop:{cursor:"zoom-out",backdropFilter:"blur(18px)",bg:"[color-mix(in oklab, {colors.likec4.overlay.backdrop} 60%, transparent)]"}}),onClick:a=>{if(a.stopPropagation(),a.target?.nodeName?.toUpperCase()==="DIALOG"){o.current?.close();return}},onClose:a=>{a.stopPropagation(),r()},children:y.jsxs(sn,{p:"xl",gap:"lg",alignItems:"flex-start",flexWrap:"nowrap",children:[y.jsx(Ba,{size:"md",radius:"xl",color:"red",children:y.jsx(Rp,{style:{width:20,height:20}})}),y.jsxs(Ap,{flex:"1",children:[y.jsx(ft,{fz:"md",children:"Oops, something went wrong"}),y.jsx(pa,{maw:"100%",mah:400,type:"auto",children:y.jsx(ft,{fz:"md",c:"red",style:{whiteSpace:"pre-wrap",userSelect:"all"},children:n})}),y.jsxs(sn,{gap:"md",mt:"md",children:[y.jsx(Kn,{size:"sm",variant:"default",onClick:()=>r(),children:"Reset"}),y.jsx(ft,{fz:"sm",c:"dimmed",children:"See console for more details and report the issue if it persists."})]})]})]})})}function rX(e){return y.jsx(RS,{FallbackComponent:NS,onError:(r,n)=>{console.error(r,n)},...e})}const nX={enableReadOnly:!0,enableCompareWithLatest:!1,enableControls:!1,enableDynamicViewWalkthrough:!1,enableElementDetails:!1,enableFocusMode:!1,enableNavigateTo:!1,enableNotations:!1,enableRelationshipBrowser:!1,enableRelationshipDetails:!1,enableSearch:!1,enableNavigationButtons:!1,enableFitView:!1,enableVscode:!1,enableElementTags:!1},DS=E.createContext(nX);function Np({children:e,features:r,overrides:n}){const o=E.useContext(DS),[a,i]=E.useState(o);return E.useEffect(()=>{i(s=>{const l={...o,...r,...n};return an(s,l)?s:l})},[o,r,n]),y.jsx(DS.Provider,{value:a,children:e})}const kLe={enableControls:!1,enableReadOnly:!0,enableCompareWithLatest:!1};Np.Overlays=({children:e})=>y.jsx(Np,{overrides:kLe,children:e});function _r(){return E.useContext(DS)}function _Le({feature:e,children:r,and:n=!0}){return _r()[`enable${e}`]===!0&&n?y.jsx(y.Fragment,{children:r}):null}function ELe(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global}function SLe(){const e=ELe();if(e.__xstate__)return e.__xstate__}const CLe=e=>{if(typeof window>"u")return;const r=SLe();r&&r.register(e)};class oX{constructor(r){this._process=r,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(r){const n={value:r,next:null};if(this._current){this._last.next=n,this._last=n;return}this._current=n,this._last=n,this._active&&this.flush()}flush(){for(;this._current;){const r=this._current;this._process(r.value),this._current=r.next}this._last=null}}const aX=".",TLe="",iX="",ALe="#",RLe="*",sX="xstate.init",NLe="xstate.error",Q0="xstate.stop";function DLe(e,r){return{type:`xstate.after.${e}.${r}`}}function $S(e,r){return{type:`xstate.done.state.${e}`,output:r}}function $Le(e,r){return{type:`xstate.done.actor.${e}`,output:r,actorId:e}}function lX(e,r){return{type:`xstate.error.actor.${e}`,error:r,actorId:e}}function cX(e){return{type:sX,input:e}}function xl(e){setTimeout(()=>{throw e})}const MLe=typeof Symbol=="function"&&Symbol.observable||"@@observable";function uX(e,r){const n=dX(e),o=dX(r);return typeof o=="string"?typeof n=="string"?o===n:!1:typeof n=="string"?n in o:Object.keys(n).every(a=>a in o?uX(n[a],o[a]):!1)}function MS(e){if(fX(e))return e;const r=[];let n="";for(let o=0;otypeof r>"u"||typeof r=="string"?{target:r}:r)}function mX(e){if(!(e===void 0||e===TLe))return bc(e)}function ow(e,r,n){const o=typeof e=="object",a=o?e:void 0;return{next:(o?e.next:e)?.bind(a),error:(o?e.error:r)?.bind(a),complete:(o?e.complete:n)?.bind(a)}}function gX(e,r){return`${r}.${e}`}function zS(e,r){const n=r.match(/^xstate\.invoke\.(\d+)\.(.*)/);if(!n)return e.implementations.actors[r];const[,o,a]=n,i=e.getStateNodeById(a).config.invoke;return(Array.isArray(i)?i[o]:i).src}function yX(e,r){return`${e.sessionId}.${r}`}let ILe=0;function OLe(e,r){const n=new Map,o=new Map,a=new WeakMap,i=new Set,s={},{clock:l,logger:c}=r,u={schedule:(f,g,b,x,w=Math.random().toString(36).slice(2))=>{const k={source:f,target:g,event:b,delay:x,id:w,startedAt:Date.now()},C=yX(f,w);h._snapshot._scheduledEvents[C]=k;const _=l.setTimeout(()=>{delete s[C],delete h._snapshot._scheduledEvents[C],h._relay(f,g,b)},x);s[C]=_},cancel:(f,g)=>{const b=yX(f,g),x=s[b];delete s[b],delete h._snapshot._scheduledEvents[b],x!==void 0&&l.clearTimeout(x)},cancelAll:f=>{for(const g in h._snapshot._scheduledEvents){const b=h._snapshot._scheduledEvents[g];b.source===f&&u.cancel(f,b.id)}}},d=f=>{if(!i.size)return;const g={...f,rootId:e.sessionId};i.forEach(b=>b.next?.(g))},h={_snapshot:{_scheduledEvents:(r?.snapshot&&r.snapshot.scheduler)??{}},_bookId:()=>`x:${ILe++}`,_register:(f,g)=>(n.set(f,g),f),_unregister:f=>{n.delete(f.sessionId);const g=a.get(f);g!==void 0&&(o.delete(g),a.delete(f))},get:f=>o.get(f),getAll:()=>Object.fromEntries(o.entries()),_set:(f,g)=>{const b=o.get(f);if(b&&b!==g)throw new Error(`Actor with system ID '${f}' already exists.`);o.set(f,g),a.set(g,f)},inspect:f=>{const g=ow(f);return i.add(g),{unsubscribe(){i.delete(g)}}},_sendInspectionEvent:d,_relay:(f,g,b)=>{h._sendInspectionEvent({type:"@xstate.event",sourceRef:f,actorRef:g,event:b}),g._send(b)},scheduler:u,getSnapshot:()=>({_scheduledEvents:{...h._snapshot._scheduledEvents}}),start:()=>{const f=h._snapshot._scheduledEvents;h._snapshot._scheduledEvents={};for(const g in f){const{source:b,target:x,event:w,delay:k,id:C}=f[g];u.schedule(b,x,w,k,C)}},_clock:l,_logger:c};return h}let IS=!1;const OS=1;let ha=(function(e){return e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped",e})({});const jLe={clock:{setTimeout:(e,r)=>setTimeout(e,r),clearTimeout:e=>clearTimeout(e)},logger:console.log.bind(console),devTools:!1};class LLe{constructor(r,n){this.logic=r,this._snapshot=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new oX(this._process.bind(this)),this.observers=new Set,this.eventListeners=new Map,this.logger=void 0,this._processingStatus=ha.NotStarted,this._parent=void 0,this._syncSnapshot=void 0,this.ref=void 0,this._actorScope=void 0,this.systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];const o={...jLe,...n},{clock:a,logger:i,parent:s,syncSnapshot:l,id:c,systemId:u,inspect:d}=o;this.system=s?s.system:OLe(this,{clock:a,logger:i}),d&&!s&&this.system.inspect(ow(d)),this.sessionId=this.system._bookId(),this.id=c??this.sessionId,this.logger=n?.logger??this.system._logger,this.clock=n?.clock??this.system._clock,this._parent=s,this._syncSnapshot=l,this.options=o,this.src=o.src??r,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:h=>{this._deferred.push(h)},system:this.system,stopChild:h=>{if(h._parent!==this)throw new Error(`Cannot stop child actor ${h.id} of ${this.id} because it is not a child`);h._stop()},emit:h=>{const f=this.eventListeners.get(h.type),g=this.eventListeners.get("*");if(!f&&!g)return;const b=[...f?f.values():[],...g?g.values():[]];for(const x of b)try{x(h)}catch(w){xl(w)}},actionExecutor:h=>{const f=()=>{if(this._actorScope.system._sendInspectionEvent({type:"@xstate.action",actorRef:this,action:{type:h.type,params:h.params}}),!h.exec)return;const g=IS;try{IS=!0,h.exec(h.info,h.params)}finally{IS=g}};this._processingStatus===ha.Running?f():this._deferred.push(f)}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:"@xstate.actor",actorRef:this}),u&&(this.systemId=u,this.system._set(u,this)),this._initState(n?.snapshot??n?.state),u&&this._snapshot.status!=="active"&&this.system._unregister(this)}_initState(r){try{this._snapshot=r?this.logic.restoreSnapshot?this.logic.restoreSnapshot(r,this._actorScope):r:this.logic.getInitialSnapshot(this._actorScope,this.options?.input)}catch(n){this._snapshot={status:"error",output:void 0,error:n}}}update(r,n){this._snapshot=r;let o;for(;o=this._deferred.shift();)try{o()}catch(a){this._deferred.length=0,this._snapshot={...r,status:"error",error:a}}switch(this._snapshot.status){case"active":for(const a of this.observers)try{a.next?.(r)}catch(i){xl(i)}break;case"done":for(const a of this.observers)try{a.next?.(r)}catch(i){xl(i)}this._stopProcedure(),this._complete(),this._doneEvent=$Le(this.id,this._snapshot.output),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case"error":this._error(this._snapshot.error);break}this.system._sendInspectionEvent({type:"@xstate.snapshot",actorRef:this,event:n,snapshot:r})}subscribe(r,n,o){const a=ow(r,n,o);if(this._processingStatus!==ha.Stopped)this.observers.add(a);else switch(this._snapshot.status){case"done":try{a.complete?.()}catch(i){xl(i)}break;case"error":{const i=this._snapshot.error;if(!a.error)xl(i);else try{a.error(i)}catch(s){xl(s)}break}}return{unsubscribe:()=>{this.observers.delete(a)}}}on(r,n){let o=this.eventListeners.get(r);o||(o=new Set,this.eventListeners.set(r,o));const a=n.bind(void 0);return o.add(a),{unsubscribe:()=>{o.delete(a)}}}start(){if(this._processingStatus===ha.Running)return this;this._syncSnapshot&&this.subscribe({next:n=>{n.status==="active"&&this.system._relay(this,this._parent,{type:`xstate.snapshot.${this.id}`,snapshot:n})},error:()=>{}}),this.system._register(this.sessionId,this),this.systemId&&this.system._set(this.systemId,this),this._processingStatus=ha.Running;const r=cX(this.options.input);switch(this.system._sendInspectionEvent({type:"@xstate.event",sourceRef:this._parent,actorRef:this,event:r}),this._snapshot.status){case"done":return this.update(this._snapshot,r),this;case"error":return this._error(this._snapshot.error),this}if(this._parent||this.system.start(),this.logic.start)try{this.logic.start(this._snapshot,this._actorScope)}catch(n){return this._snapshot={...this._snapshot,status:"error",error:n},this._error(n),this}return this.update(this._snapshot,r),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(r){let n,o;try{n=this.logic.transition(this._snapshot,r,this._actorScope)}catch(a){o={err:a}}if(o){const{err:a}=o;this._snapshot={...this._snapshot,status:"error",error:a},this._error(a);return}this.update(n,r),r.type===Q0&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===ha.Stopped?this:(this.mailbox.clear(),this._processingStatus===ha.NotStarted?(this._processingStatus=ha.Stopped,this):(this.mailbox.enqueue({type:Q0}),this))}stop(){if(this._parent)throw new Error("A non-root actor cannot be stopped directly.");return this._stop()}_complete(){for(const r of this.observers)try{r.complete?.()}catch(n){xl(n)}this.observers.clear()}_reportError(r){if(!this.observers.size){this._parent||xl(r);return}let n=!1;for(const o of this.observers){const a=o.error;n||=!a;try{a?.(r)}catch(i){xl(i)}}this.observers.clear(),n&&xl(r)}_error(r){this._stopProcedure(),this._reportError(r),this._parent&&this.system._relay(this,this._parent,lX(this.id,r))}_stopProcedure(){return this._processingStatus!==ha.Running?this:(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new oX(this._process.bind(this)),this._processingStatus=ha.Stopped,this.system._unregister(this),this)}_send(r){this._processingStatus!==ha.Stopped&&this.mailbox.enqueue(r)}send(r){this.system._relay(void 0,this,r)}attachDevTools(){const{devTools:r}=this.options;r&&(typeof r=="function"?r:CLe)(this)}toJSON(){return{xstate$$type:OS,id:this.id}}getPersistedSnapshot(r){return this.logic.getPersistedSnapshot(this._snapshot,r)}[MLe](){return this}getSnapshot(){return this._snapshot}}function mm(e,...[r]){return new LLe(e,r)}function BLe(e,r,n,o,{sendId:a}){const i=typeof a=="function"?a(n,o):a;return[r,{sendId:i},void 0]}function FLe(e,r){e.defer(()=>{e.system.scheduler.cancel(e.self,r.sendId)})}function wi(e){function r(n,o){}return r.type="xstate.cancel",r.sendId=e,r.resolve=BLe,r.execute=FLe,r}function HLe(e,r,n,o,{id:a,systemId:i,src:s,input:l,syncSnapshot:c}){const u=typeof s=="string"?zS(r.machine,s):s,d=typeof a=="function"?a(n):a;let h,f;return u&&(f=typeof l=="function"?l({context:r.context,event:n.event,self:e.self}):l,h=mm(u,{id:d,src:s,parent:e.self,syncSnapshot:c,systemId:i,input:f})),[Mp(r,{children:{...r.children,[d]:h}}),{id:a,systemId:i,actorRef:h,src:s,input:f},void 0]}function VLe(e,{actorRef:r}){r&&e.defer(()=>{r._processingStatus!==ha.Stopped&&r.start()})}function aw(...[e,{id:r,systemId:n,input:o,syncSnapshot:a=!1}={}]){function i(s,l){}return i.type="xstate.spawnChild",i.id=r,i.systemId=n,i.src=e,i.input=o,i.syncSnapshot=a,i.resolve=HLe,i.execute=VLe,i}function qLe(e,r,n,o,{actorRef:a}){const i=typeof a=="function"?a(n,o):a,s=typeof i=="string"?r.children[i]:i;let l=r.children;return s&&(l={...l},delete l[s.id]),[Mp(r,{children:l}),s,void 0]}function ULe(e,r){if(r){if(e.system._unregister(r),r._processingStatus!==ha.Running){e.stopChild(r);return}e.defer(()=>{e.stopChild(r)})}}function J0(e){function r(n,o){}return r.type="xstate.stopChild",r.actorRef=e,r.resolve=qLe,r.execute=ULe,r}function iw(e,r,n,o){const{machine:a}=o,i=typeof e=="function",s=i?e:a.implementations.guards[typeof e=="string"?e:e.type];if(!i&&!s)throw new Error(`Guard '${typeof e=="string"?e:e.type}' is not implemented.'.`);if(typeof s!="function")return iw(s,r,n,o);const l={context:r,event:n},c=i||typeof e=="string"?void 0:"params"in e?typeof e.params=="function"?e.params({context:r,event:n}):e.params:void 0;return"check"in s?s.check(o,l,s):s(l,c)}const jS=e=>e.type==="atomic"||e.type==="final";function gm(e){return Object.values(e.states).filter(r=>r.type!=="history")}function ey(e,r){const n=[];if(r===e)return n;let o=e.parent;for(;o&&o!==r;)n.push(o),o=o.parent;return n}function sw(e){const r=new Set(e),n=vX(r);for(const o of r)if(o.type==="compound"&&(!n.get(o)||!n.get(o).length))kX(o).forEach(a=>r.add(a));else if(o.type==="parallel"){for(const a of gm(o))if(a.type!=="history"&&!r.has(a)){const i=kX(a);for(const s of i)r.add(s)}}for(const o of r){let a=o.parent;for(;a;)r.add(a),a=a.parent}return r}function bX(e,r){const n=r.get(e);if(!n)return{};if(e.type==="compound"){const a=n[0];if(a){if(jS(a))return a.key}else return{}}const o={};for(const a of n)o[a.key]=bX(a,r);return o}function vX(e){const r=new Map;for(const n of e)r.has(n)||r.set(n,[]),n.parent&&(r.has(n.parent)||r.set(n.parent,[]),r.get(n.parent).push(n));return r}function xX(e,r){const n=sw(r);return bX(e,vX(n))}function LS(e,r){return r.type==="compound"?gm(r).some(n=>n.type==="final"&&e.has(n)):r.type==="parallel"?gm(r).every(n=>LS(e,n)):r.type==="final"}const lw=e=>e[0]===ALe;function WLe(e,r){return e.transitions.get(r)||[...e.transitions.keys()].filter(n=>{if(n===RLe)return!0;if(!n.endsWith(".*"))return!1;const o=n.split("."),a=r.split(".");for(let i=0;io.length-n.length).flatMap(n=>e.transitions.get(n))}function YLe(e){const r=e.config.after;if(!r)return[];const n=o=>{const a=DLe(o,e.id),i=a.type;return e.entry.push(fa(a,{id:i,delay:o})),e.exit.push(wi(i)),i};return Object.keys(r).flatMap(o=>{const a=r[o],i=typeof a=="string"?{target:a}:a,s=Number.isNaN(+o)?o:+o,l=n(s);return bc(i).map(c=>({...c,event:l,delay:s}))}).map(o=>{const{delay:a}=o;return{...Dp(e,o.event,o),delay:a}})}function Dp(e,r,n){const o=mX(n.target),a=n.reenter??!1,i=KLe(e,o),s={...n,actions:bc(n.actions),guard:n.guard,target:i,source:e,reenter:a,eventType:r,toJSON:()=>({...s,source:`#${e.id}`,target:i?i.map(l=>`#${l.id}`):void 0})};return s}function GLe(e){const r=new Map;if(e.config.on)for(const n of Object.keys(e.config.on)){if(n===iX)throw new Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');const o=e.config.on[n];r.set(n,fm(o).map(a=>Dp(e,n,a)))}if(e.config.onDone){const n=`xstate.done.state.${e.id}`;r.set(n,fm(e.config.onDone).map(o=>Dp(e,n,o)))}for(const n of e.invoke){if(n.onDone){const o=`xstate.done.actor.${n.id}`;r.set(o,fm(n.onDone).map(a=>Dp(e,o,a)))}if(n.onError){const o=`xstate.error.actor.${n.id}`;r.set(o,fm(n.onError).map(a=>Dp(e,o,a)))}if(n.onSnapshot){const o=`xstate.snapshot.${n.id}`;r.set(o,fm(n.onSnapshot).map(a=>Dp(e,o,a)))}}for(const n of e.after){let o=r.get(n.eventType);o||(o=[],r.set(n.eventType,o)),o.push(n)}return r}function XLe(e,r){const n=typeof r=="string"?e.states[r]:r?e.states[r.target]:void 0;if(!n&&r)throw new Error(`Initial state node "${r}" not found on parent state node #${e.id}`);const o={source:e,actions:!r||typeof r=="string"?[]:bc(r.actions),eventType:null,reenter:!1,target:n?[n]:[],toJSON:()=>({...o,source:`#${e.id}`,target:n?[`#${n.id}`]:[]})};return o}function KLe(e,r){if(r!==void 0)return r.map(n=>{if(typeof n!="string")return n;if(lw(n))return e.machine.getStateNodeById(n);const o=n[0]===aX;if(o&&!e.parent)return cw(e,n.slice(1));const a=o?e.key+n:n;if(e.parent)try{return cw(e.parent,a)}catch(i){throw new Error(`Invalid transition definition for state node '${e.id}': +${i.message}`)}else throw new Error(`Invalid target: "${n}" is not a valid target from the root node. Did you mean ".${n}"?`)})}function wX(e){const r=mX(e.config.target);return r?{target:r.map(n=>typeof n=="string"?cw(e.parent,n):n)}:e.parent.initial}function $p(e){return e.type==="history"}function kX(e){const r=_X(e);for(const n of r)for(const o of ey(n,e))r.add(o);return r}function _X(e){const r=new Set;function n(o){if(!r.has(o)){if(r.add(o),o.type==="compound")n(o.initial.target[0]);else if(o.type==="parallel")for(const a of gm(o))n(a)}}return n(e),r}function ym(e,r){if(lw(r))return e.machine.getStateNodeById(r);if(!e.states)throw new Error(`Unable to retrieve child state '${r}' from '${e.id}'; no child states exist.`);const n=e.states[r];if(!n)throw new Error(`Child state '${r}' does not exist on '${e.id}'`);return n}function cw(e,r){if(typeof r=="string"&&lw(r))try{return e.machine.getStateNodeById(r)}catch{}const n=MS(r).slice();let o=e;for(;n.length;){const a=n.shift();if(!a.length)break;o=ym(o,a)}return o}function uw(e,r){if(typeof r=="string"){const a=e.states[r];if(!a)throw new Error(`State '${r}' does not exist on '${e.id}'`);return[e,a]}const n=Object.keys(r),o=n.map(a=>ym(e,a)).filter(Boolean);return[e.machine.root,e].concat(o,n.reduce((a,i)=>{const s=ym(e,i);if(!s)return a;const l=uw(s,r[i]);return a.concat(l)},[]))}function ZLe(e,r,n,o){const a=ym(e,r).next(n,o);return!a||!a.length?e.next(n,o):a}function QLe(e,r,n,o){const a=Object.keys(r),i=ym(e,a[0]),s=BS(i,r[a[0]],n,o);return!s||!s.length?e.next(n,o):s}function JLe(e,r,n,o){const a=[];for(const i of Object.keys(r)){const s=r[i];if(!s)continue;const l=ym(e,i),c=BS(l,s,n,o);c&&a.push(...c)}return a.length?a:e.next(n,o)}function BS(e,r,n,o){return typeof r=="string"?ZLe(e,r,n,o):Object.keys(r).length===1?QLe(e,r,n,o):JLe(e,r,n,o)}function eBe(e){return Object.keys(e.states).map(r=>e.states[r]).filter(r=>r.type==="history")}function Ou(e,r){let n=e;for(;n.parent&&n.parent!==r;)n=n.parent;return n.parent===r}function tBe(e,r){const n=new Set(e),o=new Set(r);for(const a of n)if(o.has(a))return!0;for(const a of o)if(n.has(a))return!0;return!1}function EX(e,r,n){const o=new Set;for(const a of e){let i=!1;const s=new Set;for(const l of o)if(tBe(HS([a],r,n),HS([l],r,n)))if(Ou(a.source,l.source))s.add(l);else{i=!0;break}if(!i){for(const l of s)o.delete(l);o.add(a)}}return Array.from(o)}function rBe(e){const[r,...n]=e;for(const o of ey(r,void 0))if(n.every(a=>Ou(a,o)))return o}function FS(e,r){if(!e.target)return[];const n=new Set;for(const o of e.target)if($p(o))if(r[o.id])for(const a of r[o.id])n.add(a);else for(const a of FS(wX(o),r))n.add(a);else n.add(o);return[...n]}function SX(e,r){const n=FS(e,r);if(!n)return;if(!e.reenter&&n.every(a=>a===e.source||Ou(a,e.source)))return e.source;const o=rBe(n.concat(e.source));if(o)return o;if(!e.reenter)return e.source.machine.root}function HS(e,r,n){const o=new Set;for(const a of e)if(a.target?.length){const i=SX(a,n);a.reenter&&a.source===i&&o.add(i);for(const s of r)Ou(s,i)&&o.add(s)}return[...o]}function nBe(e,r){if(e.length!==r.size)return!1;for(const n of e)if(!r.has(n))return!1;return!0}function VS(e,r,n,o,a,i){if(!e.length)return r;const s=new Set(r._nodes);let l=r.historyValue;const c=EX(e,s,l);let u=r;a||([u,l]=sBe(u,o,n,c,s,l,i,n.actionExecutor)),u=vm(u,o,n,c.flatMap(h=>h.actions),i,void 0),u=aBe(u,o,n,c,s,i,l,a);const d=[...s];u.status==="done"&&(u=vm(u,o,n,d.sort((h,f)=>f.order-h.order).flatMap(h=>h.exit),i,void 0));try{return l===r.historyValue&&nBe(r._nodes,s)?u:Mp(u,{_nodes:d,historyValue:l})}catch(h){throw h}}function oBe(e,r,n,o,a){if(o.output===void 0)return;const i=$S(a.id,a.output!==void 0&&a.parent?PS(a.output,e.context,r,n.self):void 0);return PS(o.output,e.context,i,n.self)}function aBe(e,r,n,o,a,i,s,l){let c=e;const u=new Set,d=new Set;iBe(o,s,d,u),l&&d.add(e.machine.root);const h=new Set;for(const f of[...u].sort((g,b)=>g.order-b.order)){a.add(f);const g=[];g.push(...f.entry);for(const b of f.invoke)g.push(aw(b.src,{...b,syncSnapshot:!!b.onSnapshot}));if(d.has(f)){const b=f.initial.actions;g.push(...b)}if(c=vm(c,r,n,g,i,f.invoke.map(b=>b.id)),f.type==="final"){const b=f.parent;let x=b?.type==="parallel"?b:b?.parent,w=x||f;for(b?.type==="compound"&&i.push($S(b.id,f.output!==void 0?PS(f.output,c.context,r,n.self):void 0));x?.type==="parallel"&&!h.has(x)&&LS(a,x);)h.add(x),i.push($S(x.id)),w=x,x=x.parent;if(x)continue;c=Mp(c,{status:"done",output:oBe(c,r,n,c.machine.root,w)})}}return c}function iBe(e,r,n,o){for(const a of e){const i=SX(a,r);for(const l of a.target||[])!$p(l)&&(a.source!==l||a.source!==i||a.reenter)&&(o.add(l),n.add(l)),bm(l,r,n,o);const s=FS(a,r);for(const l of s){const c=ey(l,i);i?.type==="parallel"&&c.push(i),CX(o,r,n,c,!a.source.parent&&a.reenter?void 0:i)}}}function bm(e,r,n,o){if($p(e))if(r[e.id]){const a=r[e.id];for(const i of a)o.add(i),bm(i,r,n,o);for(const i of a)qS(i,e.parent,o,r,n)}else{const a=wX(e);for(const i of a.target)o.add(i),a===e.parent?.initial&&n.add(e.parent),bm(i,r,n,o);for(const i of a.target)qS(i,e.parent,o,r,n)}else if(e.type==="compound"){const[a]=e.initial.target;$p(a)||(o.add(a),n.add(a)),bm(a,r,n,o),qS(a,e,o,r,n)}else if(e.type==="parallel")for(const a of gm(e).filter(i=>!$p(i)))[...o].some(i=>Ou(i,a))||($p(a)||(o.add(a),n.add(a)),bm(a,r,n,o))}function CX(e,r,n,o,a){for(const i of o)if((!a||Ou(i,a))&&e.add(i),i.type==="parallel")for(const s of gm(i).filter(l=>!$p(l)))[...e].some(l=>Ou(l,s))||(e.add(s),bm(s,r,n,e))}function qS(e,r,n,o,a){CX(n,o,a,ey(e,r))}function sBe(e,r,n,o,a,i,s,l){let c=e;const u=HS(o,a,i);u.sort((h,f)=>f.order-h.order);let d;for(const h of u)for(const f of eBe(h)){let g;f.history==="deep"?g=b=>jS(b)&&Ou(b,h):g=b=>b.parent===h,d??={...i},d[f.id]=Array.from(a).filter(g)}for(const h of u)c=vm(c,r,n,[...h.exit,...h.invoke.map(f=>J0(f.id))],s,void 0),a.delete(h);return[c,d||i]}function lBe(e,r){return e.implementations.actions[r]}function TX(e,r,n,o,a,i){const{machine:s}=e;let l=e;for(const c of o){const u=typeof c=="function",d=u?c:lBe(s,typeof c=="string"?c:c.type),h={context:l.context,event:r,self:n.self,system:n.system},f=u||typeof c=="string"?void 0:"params"in c?typeof c.params=="function"?c.params({context:l.context,event:r}):c.params:void 0;if(!d||!("resolve"in d)){n.actionExecutor({type:typeof c=="string"?c:typeof c=="object"?c.type:c.name||"(anonymous)",info:h,params:f,exec:d});continue}const g=d,[b,x,w]=g.resolve(n,l,h,f,d,a);l=b,"retryResolve"in g&&i?.push([g,x]),"execute"in g&&n.actionExecutor({type:g.type,info:h,params:x,exec:g.execute.bind(null,n,x)}),w&&(l=TX(l,r,n,w,a,i))}return l}function vm(e,r,n,o,a,i){const s=i?[]:void 0,l=TX(e,r,n,o,{internalQueue:a,deferredActorIds:i},s);return s?.forEach(([c,u])=>{c.retryResolve(n,l,u)}),l}function US(e,r,n,o){let a=e;const i=[];function s(u,d,h){n.system._sendInspectionEvent({type:"@xstate.microstep",actorRef:n.self,event:d,snapshot:u,_transitions:h}),i.push(u)}if(r.type===Q0)return a=Mp(AX(a,r,n),{status:"stopped"}),s(a,r,[]),{snapshot:a,microstates:i};let l=r;if(l.type!==sX){const u=l,d=zLe(u),h=RX(u,a);if(d&&!h.length)return a=Mp(e,{status:"error",error:u.error}),s(a,u,[]),{snapshot:a,microstates:i};a=VS(h,e,n,l,!1,o),s(a,u,h)}let c=!0;for(;a.status==="active";){let u=c?cBe(a,l):[];const d=u.length?a:void 0;if(!u.length){if(!o.length)break;l=o.shift(),u=RX(l,a)}a=VS(u,a,n,l,!1,o),c=a!==d,s(a,l,u)}return a.status!=="active"&&AX(a,l,n),{snapshot:a,microstates:i}}function AX(e,r,n){return vm(e,r,n,Object.values(e.children).map(o=>J0(o)),[],void 0)}function RX(e,r){return r.machine.getTransitionData(r,e)}function cBe(e,r){const n=new Set,o=e._nodes.filter(jS);for(const a of o)e:for(const i of[a].concat(ey(a,void 0)))if(i.always){for(const s of i.always)if(s.guard===void 0||iw(s.guard,e.context,r,e)){n.add(s);break e}}return EX(Array.from(n),new Set(e._nodes),e.historyValue)}function uBe(e,r){const n=sw(uw(e,r));return xX(e,[...n])}function dBe(e){return!!e&&typeof e=="object"&&"machine"in e&&"value"in e}const pBe=function(e){return uX(e,this.value)},hBe=function(e){return this.tags.has(e)},fBe=function(e){const r=this.machine.getTransitionData(this,e);return!!r?.length&&r.some(n=>n.target!==void 0||n.actions.length)},mBe=function(){const{_nodes:e,tags:r,machine:n,getMeta:o,toJSON:a,can:i,hasTag:s,matches:l,...c}=this;return{...c,tags:Array.from(r)}},gBe=function(){return this._nodes.reduce((e,r)=>(r.meta!==void 0&&(e[r.id]=r.meta),e),{})};function dw(e,r){return{status:e.status,output:e.output,error:e.error,machine:r,context:e.context,_nodes:e._nodes,value:xX(r.root,e._nodes),tags:new Set(e._nodes.flatMap(n=>n.tags)),children:e.children,historyValue:e.historyValue||{},matches:pBe,hasTag:hBe,can:fBe,getMeta:gBe,toJSON:mBe}}function Mp(e,r={}){return dw({...e,...r},e.machine)}function yBe(e){if(typeof e!="object"||e===null)return{};const r={};for(const n in e){const o=e[n];Array.isArray(o)&&(r[n]=o.map(a=>({id:a.id})))}return r}function bBe(e,r){const{_nodes:n,tags:o,machine:a,children:i,context:s,can:l,hasTag:c,matches:u,getMeta:d,toJSON:h,...f}=e,g={};for(const b in i){const x=i[b];g[b]={snapshot:x.getPersistedSnapshot(r),src:x.src,systemId:x.systemId,syncSnapshot:x._syncSnapshot}}return{...f,context:NX(s),children:g,historyValue:yBe(f.historyValue)}}function NX(e){let r;for(const n in e){const o=e[n];if(o&&typeof o=="object")if("sessionId"in o&&"send"in o&&"ref"in o)r??=Array.isArray(e)?e.slice():{...e},r[n]={xstate$$type:OS,id:o.id};else{const a=NX(o);a!==o&&(r??=Array.isArray(e)?e.slice():{...e},r[n]=a)}}return r??e}function vBe(e,r,n,o,{event:a,id:i,delay:s},{internalQueue:l}){const c=r.machine.implementations.delays;if(typeof a=="string")throw new Error(`Only event objects may be used with raise; use raise({ type: "${a}" }) instead`);const u=typeof a=="function"?a(n,o):a;let d;if(typeof s=="string"){const h=c&&c[s];d=typeof h=="function"?h(n,o):h}else d=typeof s=="function"?s(n,o):s;return typeof d!="number"&&l.push(u),[r,{event:u,id:i,delay:d},void 0]}function xBe(e,r){const{event:n,delay:o,id:a}=r;if(typeof o=="number"){e.defer(()=>{const i=e.self;e.system.scheduler.schedule(i,i,n,o,a)});return}}function fa(e,r){function n(o,a){}return n.type="xstate.raise",n.event=e,n.id=r?.id,n.delay=r?.delay,n.resolve=vBe,n.execute=xBe,n}const DX=new WeakMap;function WS(e){return{config:e,start:(r,n)=>{const{self:o,system:a,emit:i}=n,s={receivers:void 0,dispose:void 0};DX.set(o,s),s.dispose=e({input:r.input,system:a,self:o,sendBack:l=>{o.getSnapshot().status!=="stopped"&&o._parent&&a._relay(o,o._parent,l)},receive:l=>{s.receivers??=new Set,s.receivers.add(l)},emit:i})},transition:(r,n,o)=>{const a=DX.get(o.self);return n.type===Q0?(r={...r,status:"stopped",error:void 0},a.dispose?.(),r):(a.receivers?.forEach(i=>i(n)),r)},getInitialSnapshot:(r,n)=>({status:"active",output:void 0,error:void 0,input:n}),getPersistedSnapshot:r=>r,restoreSnapshot:r=>r}}const $X="xstate.promise.resolve",MX="xstate.promise.reject",pw=new WeakMap;function wBe(e){return{config:e,transition:(r,n,o)=>{if(r.status!=="active")return r;switch(n.type){case $X:{const a=n.data;return{...r,status:"done",output:a,input:void 0}}case MX:return{...r,status:"error",error:n.data,input:void 0};case Q0:return pw.get(o.self)?.abort(),{...r,status:"stopped",input:void 0};default:return r}},start:(r,{self:n,system:o,emit:a})=>{if(r.status!=="active")return;const i=new AbortController;pw.set(n,i),Promise.resolve(e({input:r.input,system:o,self:n,signal:i.signal,emit:a})).then(s=>{n.getSnapshot().status==="active"&&(pw.delete(n),o._relay(n,n,{type:$X,data:s}))},s=>{n.getSnapshot().status==="active"&&(pw.delete(n),o._relay(n,n,{type:MX,data:s}))})},getInitialSnapshot:(r,n)=>({status:"active",output:void 0,error:void 0,input:n}),getPersistedSnapshot:r=>r,restoreSnapshot:r=>r}}function kBe(e,{machine:r,context:n},o,a){const i=(s,l)=>{if(typeof s=="string"){const c=zS(r,s);if(!c)throw new Error(`Actor logic '${s}' not implemented in machine '${r.id}'`);const u=mm(c,{id:l?.id,parent:e.self,syncSnapshot:l?.syncSnapshot,input:typeof l?.input=="function"?l.input({context:n,event:o,self:e.self}):l?.input,src:s,systemId:l?.systemId});return a[u.id]=u,u}else return mm(s,{id:l?.id,parent:e.self,syncSnapshot:l?.syncSnapshot,input:l?.input,src:s,systemId:l?.systemId})};return(s,l)=>{const c=i(s,l);return a[c.id]=c,e.defer(()=>{c._processingStatus!==ha.Stopped&&c.start()}),c}}function _Be(e,r,n,o,{assignment:a}){if(!r.context)throw new Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");const i={},s={context:r.context,event:n.event,spawn:kBe(e,r,n.event,i),self:e.self,system:e.system};let l={};if(typeof a=="function")l=a(s,o);else for(const u of Object.keys(a)){const d=a[u];l[u]=typeof d=="function"?d(s,o):d}const c=Object.assign({},r.context,l);return[Mp(r,{context:c,children:Object.keys(i).length?{...r.children,...i}:r.children}),void 0,void 0]}function Zt(e){function r(n,o){}return r.type="xstate.assign",r.assignment=e,r.resolve=_Be,r}const PX=new WeakMap;function xm(e,r,n){let o=PX.get(e);return o?r in o||(o[r]=n()):(o={[r]:n()},PX.set(e,o)),o[r]}const EBe={},ty=e=>typeof e=="string"?{type:e}:typeof e=="function"?"resolve"in e?{type:e.type}:{type:e.name}:e;class hw{constructor(r,n){if(this.config=r,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=n._parent,this.key=n._key,this.machine=n._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(aX),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?pX(this.config.states,(o,a)=>new hw(o,{_parent:this,_key:a,_machine:this.machine})):EBe,this.type==="compound"&&!this.config.initial)throw new Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=this.config.history===!0?"shallow":this.config.history||!1,this.entry=bc(this.config.entry).slice(),this.exit=bc(this.config.exit).slice(),this.meta=this.config.meta,this.output=this.type==="final"||!this.parent?this.config.output:void 0,this.tags=bc(r.tags).slice()}_initialize(){this.transitions=GLe(this),this.config.always&&(this.always=fm(this.config.always).map(r=>Dp(this,iX,r))),Object.keys(this.states).forEach(r=>{this.states[r]._initialize()})}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(ty),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map(r=>`#${r.id}`),source:`#${this.id}`,actions:this.initial.actions.map(ty),eventType:null})}:void 0,history:this.history,states:pX(this.states,r=>r.definition),on:this.on,transitions:[...this.transitions.values()].flat().map(r=>({...r,actions:r.actions.map(ty)})),entry:this.entry.map(ty),exit:this.exit.map(ty),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return xm(this,"invoke",()=>bc(this.config.invoke).map((r,n)=>{const{src:o,systemId:a}=r,i=r.id??gX(this.id,n),s=typeof o=="string"?o:`xstate.invoke.${gX(this.id,n)}`;return{...r,src:s,id:i,systemId:a,toJSON(){const{onDone:l,onError:c,...u}=r;return{...u,type:"xstate.invoke",src:s,id:i}}}}))}get on(){return xm(this,"on",()=>[...this.transitions].flatMap(([r,n])=>n.map(o=>[r,o])).reduce((r,[n,o])=>(r[n]=r[n]||[],r[n].push(o),r),{}))}get after(){return xm(this,"delayedTransitions",()=>YLe(this))}get initial(){return xm(this,"initial",()=>XLe(this,this.config.initial))}next(r,n){const o=n.type,a=[];let i;const s=xm(this,`candidates-${o}`,()=>WLe(this,o));for(const l of s){const{guard:c}=l,u=r.context;let d=!1;try{d=!c||iw(c,u,n,r)}catch(h){const f=typeof c=="string"?c:typeof c=="object"?c.type:void 0;throw new Error(`Unable to evaluate guard ${f?`'${f}' `:""}in transition for event '${o}' in state node '${this.id}': +${h.message}`)}if(d){a.push(...l.actions),i=l;break}}return i?[i]:void 0}get events(){return xm(this,"events",()=>{const{states:r}=this,n=new Set(this.ownEvents);if(r)for(const o of Object.keys(r)){const a=r[o];if(a.states)for(const i of a.events)n.add(`${i}`)}return Array.from(n)})}get ownEvents(){const r=new Set([...this.transitions.keys()].filter(n=>this.transitions.get(n).some(o=>!(!o.target&&!o.actions.length&&!o.reenter))));return Array.from(r)}}const SBe="#";class YS{constructor(r,n){this.config=r,this.version=void 0,this.schemas=void 0,this.implementations=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.id=r.id||"(machine)",this.implementations={actors:n?.actors??{},actions:n?.actions??{},delays:n?.delays??{},guards:n?.guards??{}},this.version=this.config.version,this.schemas=this.config.schemas,this.transition=this.transition.bind(this),this.getInitialSnapshot=this.getInitialSnapshot.bind(this),this.getPersistedSnapshot=this.getPersistedSnapshot.bind(this),this.restoreSnapshot=this.restoreSnapshot.bind(this),this.start=this.start.bind(this),this.root=new hw(r,{_key:this.id,_machine:this}),this.root._initialize(),this.states=this.root.states,this.events=this.root.events}provide(r){const{actions:n,guards:o,actors:a,delays:i}=this.implementations;return new YS(this.config,{actions:{...n,...r.actions},guards:{...o,...r.guards},actors:{...a,...r.actors},delays:{...i,...r.delays}})}resolveState(r){const n=uBe(this.root,r.value),o=sw(uw(this.root,n));return dw({_nodes:[...o],context:r.context||{},children:{},status:LS(o,this.root)?"done":r.status||"active",output:r.output,error:r.error,historyValue:r.historyValue},this)}transition(r,n,o){return US(r,n,o,[]).snapshot}microstep(r,n,o){return US(r,n,o,[]).microstates}getTransitionData(r,n){return BS(this.root,r.value,r,n)||[]}getPreInitialState(r,n,o){const{context:a}=this.config,i=dw({context:typeof a!="function"&&a?a:{},_nodes:[this.root],children:{},status:"active"},this);return typeof a=="function"?vm(i,n,r,[Zt(({spawn:s,event:l,self:c})=>a({spawn:s,input:l.input,self:c}))],o,void 0):i}getInitialSnapshot(r,n){const o=cX(n),a=[],i=this.getPreInitialState(r,o,a),s=VS([{target:[..._X(this.root)],source:this.root,reenter:!0,actions:[],eventType:null,toJSON:null}],i,r,o,!0,a),{snapshot:l}=US(s,o,r,a);return l}start(r){Object.values(r.children).forEach(n=>{n.getSnapshot().status==="active"&&n.start()})}getStateNodeById(r){const n=MS(r),o=n.slice(1),a=lw(n[0])?n[0].slice(SBe.length):n[0],i=this.idMap.get(a);if(!i)throw new Error(`Child state node '#${a}' does not exist on machine '${this.id}'`);return cw(i,o)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedSnapshot(r,n){return bBe(r,n)}restoreSnapshot(r,n){const o={},a=r.children;Object.keys(a).forEach(h=>{const f=a[h],g=f.snapshot,b=f.src,x=typeof b=="string"?zS(this,b):b;if(!x)return;const w=mm(x,{id:h,parent:n.self,syncSnapshot:f.syncSnapshot,snapshot:g,src:b,systemId:f.systemId});o[h]=w});function i(h,f){if(f instanceof hw)return f;try{return h.machine.getStateNodeById(f.id)}catch{}}function s(h,f){if(!f||typeof f!="object")return{};const g={};for(const b in f){const x=f[b];for(const w of x){const k=i(h,w);k&&(g[b]??=[],g[b].push(k))}}return g}const l=s(this.root,r.historyValue),c=dw({...r,children:o,_nodes:Array.from(sw(uw(this.root,r.value))),historyValue:l},this),u=new Set;function d(h,f){if(!u.has(h)){u.add(h);for(const g in h){const b=h[g];if(b&&typeof b=="object"){if("xstate$$type"in b&&b.xstate$$type===OS){h[g]=f[b.id];continue}d(b,f)}}}}return d(c.context,o),c}}function CBe(e,r,n,o,{event:a}){const i=typeof a=="function"?a(n,o):a;return[r,{event:i},void 0]}function TBe(e,{event:r}){e.defer(()=>e.emit(r))}function GS(e){function r(n,o){}return r.type="xstate.emit",r.event=e,r.resolve=CBe,r.execute=TBe,r}let XS=(function(e){return e.Parent="#_parent",e.Internal="#_internal",e})({});function ABe(e,r,n,o,{to:a,event:i,id:s,delay:l},c){const u=r.machine.implementations.delays;if(typeof i=="string")throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: "${i}" }) instead`);const d=typeof i=="function"?i(n,o):i;let h;if(typeof l=="string"){const b=u&&u[l];h=typeof b=="function"?b(n,o):b}else h=typeof l=="function"?l(n,o):l;const f=typeof a=="function"?a(n,o):a;let g;if(typeof f=="string"){if(f===XS.Parent?g=e.self._parent:f===XS.Internal?g=e.self:f.startsWith("#_")?g=r.children[f.slice(2)]:g=c.deferredActorIds?.includes(f)?f:r.children[f],!g)throw new Error(`Unable to send event to actor '${f}' from machine '${r.machine.id}'.`)}else g=f||e.self;return[r,{to:g,targetId:typeof f=="string"?f:void 0,event:d,id:s,delay:h},void 0]}function RBe(e,r,n){typeof n.to=="string"&&(n.to=r.children[n.to])}function NBe(e,r){e.defer(()=>{const{to:n,event:o,delay:a,id:i}=r;if(typeof a=="number"){e.system.scheduler.schedule(e.self,n,o,a,i);return}e.system._relay(e.self,n,o.type===NLe?lX(e.self.id,o.data):o)})}function fw(e,r,n){function o(a,i){}return o.type="xstate.sendTo",o.to=e,o.event=r,o.id=n?.id,o.delay=n?.delay,o.resolve=ABe,o.retryResolve=RBe,o.execute=NBe,o}function DBe(e,r){return fw(XS.Parent,e,r)}function $Be(e,r,n,o,{collect:a}){const i=[],s=function(l){i.push(l)};return s.assign=(...l)=>{i.push(Zt(...l))},s.cancel=(...l)=>{i.push(wi(...l))},s.raise=(...l)=>{i.push(fa(...l))},s.sendTo=(...l)=>{i.push(fw(...l))},s.sendParent=(...l)=>{i.push(DBe(...l))},s.spawnChild=(...l)=>{i.push(aw(...l))},s.stopChild=(...l)=>{i.push(J0(...l))},s.emit=(...l)=>{i.push(GS(...l))},a({context:n.context,event:n.event,enqueue:s,check:l=>iw(l,r.context,n.event,r),self:e.self,system:e.system},o),[r,void 0,i]}function Pp(e){function r(n,o){}return r.type="xstate.enqueueActions",r.collect=e,r.resolve=$Be,r}function MBe(e,r,n,o,{value:a,label:i}){return[r,{value:typeof a=="function"?a(n,o):a,label:i},void 0]}function PBe({logger:e},{value:r,label:n}){n?e(n,r):e(r)}function zBe(e=({context:n,event:o})=>({context:n,event:o}),r){function n(o,a){}return n.type="xstate.log",n.value=e,n.label=r,n.resolve=MBe,n.execute=PBe,n}function Tt(e,r){const n=bc(r);if(!n.includes(e.type)){const o=n.length===1?`type "${n[0]}"`:`one of types "${n.join('", "')}"`;throw new Error(`Expected event ${JSON.stringify(e)} to have ${o}`)}}function IBe(e,r){return new YS(e,r)}function wl({schemas:e,actors:r,actions:n,guards:o,delays:a}){return{assign:Zt,sendTo:fw,raise:fa,log:zBe,cancel:wi,stopChild:J0,enqueueActions:Pp,emit:GS,spawnChild:aw,createStateConfig:i=>i,createAction:i=>i,createMachine:i=>IBe({...i,schemas:e},{actors:r,actions:n,guards:o,delays:a}),extend:i=>wl({schemas:e,actors:r,actions:{...n,...i.actions},guards:{...o,...i.guards},delays:{...a,...i.delays}})}}AV();const zX=(e,r)=>{r(e);const n=e.getSnapshot().children;n&&Object.values(n).forEach(o=>{zX(o,r)})};function OBe(e){const r=[];zX(e,o=>{r.push([o,o.getSnapshot()]),o.observers=new Set});const n=e.system.getSnapshot?.();e.stop(),e.system._snapshot=n,r.forEach(([o,a])=>{o._processingStatus=0,o._snapshot=a})}function jBe(e,...[r]){let[[n,o],a]=E.useState(()=>{const i=mm(e,r);return[e.config,i]});if(e.config!==n){const i=mm(e,{...r,snapshot:o.getPersistedSnapshot({__unsafeAllowInlineActors:!0})});a([e.config,i]),o=i}return mOe(()=>{o.logic.implementations=e.implementations}),o}function KS(e,...[r,n]){const o=jBe(e,r);return E.useEffect(()=>{if(!n)return;const a=o.subscribe(ow(n));return()=>{a.unsubscribe()}},[n]),E.useEffect(()=>(o.start(),()=>{OBe(o)}),[o]),o}function LBe(e,r){return e===r}function fn(e,r,n=LBe){const o=E.useCallback(i=>{if(!e)return()=>{};const{unsubscribe:s}=e.subscribe(i);return s},[e]),a=E.useCallback(()=>e?.getSnapshot(),[e]);return DV.useSyncExternalStoreWithSelector(o,a,a,r,n)}const mw=E.createContext(null);mw.displayName="DiagramActorSafeContext";const BBe=mw.Provider;function zp(){const e=E.useContext(mw);if(e===null)throw new Error("DiagramActorRef is not provided");return e.actor}function Qt(){const e=E.useContext(mw);if(e===null)throw new Error("DiagramActorRef is not provided");return e}function ZS(e,r=an){const n=zp();return fn(n,e,r)}function vs(e,r=an,n){const o=zp(),a=E.useCallback(i=>e(i.context),n??[]);return fn(o,a,r)}function Fa(e,r){const n=zp(),o=E.useRef(r);o.current=r,E.useEffect(()=>{const a=n.on(e,i=>{o.current(i)});return()=>{a.unsubscribe()}},[n,e])}const FBe=e=>e.children.overlays;function IX(){return ZS(FBe,Object.is)}const HBe=e=>e.children.search??null;function VBe(){return ZS(HBe,Object.is)}function QS(e,r){e.indexOf(r)===-1&&e.push(r)}function gw(e,r){const n=e.indexOf(r);n>-1&&e.splice(n,1)}const vc=(e,r,n)=>n>r?r:n{};const xc={},OX=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);function jX(e){return typeof e=="object"&&e!==null}const LX=e=>/^0[^.\s]+$/u.test(e);function eC(e){let r;return()=>(r===void 0&&(r=e()),r)}const ki=e=>e,qBe=(e,r)=>n=>r(e(n)),ry=(...e)=>e.reduce(qBe),wm=(e,r,n)=>{const o=r-e;return o===0?1:(n-e)/o};class tC{constructor(){this.subscriptions=[]}add(r){return QS(this.subscriptions,r),()=>gw(this.subscriptions,r)}notify(r,n,o){const a=this.subscriptions.length;if(a)if(a===1)this.subscriptions[0](r,n,o);else for(let i=0;ie*1e3,_i=e=>e/1e3;function BX(e,r){return r?e*(1e3/r):0}const UBe=(e,r,n)=>{const o=r-e;return((n-e)%o+o)%o+e},FX=(e,r,n)=>(((1-3*n+3*r)*e+(3*n-6*r))*e+3*r)*e,WBe=1e-7,YBe=12;function GBe(e,r,n,o,a){let i,s,l=0;do s=r+(n-r)/2,i=FX(s,o,a)-e,i>0?n=s:r=s;while(Math.abs(i)>WBe&&++lGBe(i,0,1,e,n);return i=>i===0||i===1?i:FX(a(i),r,o)}const HX=e=>r=>r<=.5?e(2*r)/2:(2-e(2*(1-r)))/2,VX=e=>r=>1-e(1-r),qX=ny(.33,1.53,.69,.99),rC=VX(qX),UX=HX(rC),WX=e=>(e*=2)<1?.5*rC(e):.5*(2-Math.pow(2,-10*(e-1))),nC=e=>1-Math.sin(Math.acos(e)),YX=VX(nC),GX=HX(nC),XBe=ny(.42,0,1,1),KBe=ny(0,0,.58,1),XX=ny(.42,0,.58,1),KX=e=>Array.isArray(e)&&typeof e[0]!="number";function ZX(e,r){return KX(e)?e[UBe(0,e.length,r)]:e}const QX=e=>Array.isArray(e)&&typeof e[0]=="number",ZBe={linear:ki,easeIn:XBe,easeInOut:XX,easeOut:KBe,circIn:nC,circInOut:GX,circOut:YX,backIn:rC,backInOut:UX,backOut:qX,anticipate:WX},QBe=e=>typeof e=="string",JX=e=>{if(QX(e)){JS(e.length===4);const[r,n,o,a]=e;return ny(r,n,o,a)}else if(QBe(e))return ZBe[e];return e},yw=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function JBe(e,r){let n=new Set,o=new Set,a=!1,i=!1;const s=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function c(d){s.has(d)&&(u.schedule(d),e()),d(l)}const u={schedule:(d,h=!1,f=!1)=>{const g=f&&a?n:o;return h&&s.add(d),g.has(d)||g.add(d),d},cancel:d=>{o.delete(d),s.delete(d)},process:d=>{if(l=d,a){i=!0;return}a=!0,[n,o]=[o,n],n.forEach(c),n.clear(),a=!1,i&&(i=!1,u.process(d))}};return u}const eFe=40;function eK(e,r){let n=!1,o=!0;const a={delta:0,timestamp:0,isProcessing:!1},i=()=>n=!0,s=yw.reduce((k,C)=>(k[C]=JBe(i),k),{}),{setup:l,read:c,resolveKeyframes:u,preUpdate:d,update:h,preRender:f,render:g,postRender:b}=s,x=()=>{const k=xc.useManualTiming?a.timestamp:performance.now();n=!1,xc.useManualTiming||(a.delta=o?1e3/60:Math.max(Math.min(k-a.timestamp,eFe),1)),a.timestamp=k,a.isProcessing=!0,l.process(a),c.process(a),u.process(a),d.process(a),h.process(a),f.process(a),g.process(a),b.process(a),a.isProcessing=!1,n&&r&&(o=!1,e(x))},w=()=>{n=!0,o=!0,a.isProcessing||e(x)};return{schedule:yw.reduce((k,C)=>{const _=s[C];return k[C]=(T,A=!1,R=!1)=>(n||w(),_.schedule(T,A,R)),k},{}),cancel:k=>{for(let C=0;C(bw===void 0&&ma.set(xo.isProcessing||xc.useManualTiming?xo.timestamp:performance.now()),bw),set:e=>{bw=e,queueMicrotask(tFe)}},tK=e=>r=>typeof r=="string"&&r.startsWith(e),aC=tK("--"),rFe=tK("var(--"),iC=e=>rFe(e)?nFe.test(e.split("/*")[0].trim()):!1,nFe=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,km={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},oy={...km,transform:e=>vc(0,1,e)},vw={...km,default:1},ay=e=>Math.round(e*1e5)/1e5,sC=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function oFe(e){return e==null}const aFe=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,lC=(e,r)=>n=>!!(typeof n=="string"&&aFe.test(n)&&n.startsWith(e)||r&&!oFe(n)&&Object.prototype.hasOwnProperty.call(n,r)),rK=(e,r,n)=>o=>{if(typeof o!="string")return o;const[a,i,s,l]=o.match(sC);return{[e]:parseFloat(a),[r]:parseFloat(i),[n]:parseFloat(s),alpha:l!==void 0?parseFloat(l):1}},iFe=e=>vc(0,255,e),cC={...km,transform:e=>Math.round(iFe(e))},Ip={test:lC("rgb","red"),parse:rK("red","green","blue"),transform:({red:e,green:r,blue:n,alpha:o=1})=>"rgba("+cC.transform(e)+", "+cC.transform(r)+", "+cC.transform(n)+", "+ay(oy.transform(o))+")"};function sFe(e){let r="",n="",o="",a="";return e.length>5?(r=e.substring(1,3),n=e.substring(3,5),o=e.substring(5,7),a=e.substring(7,9)):(r=e.substring(1,2),n=e.substring(2,3),o=e.substring(3,4),a=e.substring(4,5),r+=r,n+=n,o+=o,a+=a),{red:parseInt(r,16),green:parseInt(n,16),blue:parseInt(o,16),alpha:a?parseInt(a,16)/255:1}}const uC={test:lC("#"),parse:sFe,transform:Ip.transform},iy=e=>({test:r=>typeof r=="string"&&r.endsWith(e)&&r.split(" ").length===1,parse:parseFloat,transform:r=>`${r}${e}`}),Lu=iy("deg"),kl=iy("%"),$t=iy("px"),lFe=iy("vh"),cFe=iy("vw"),nK={...kl,parse:e=>kl.parse(e)/100,transform:e=>kl.transform(e*100)},_m={test:lC("hsl","hue"),parse:rK("hue","saturation","lightness"),transform:({hue:e,saturation:r,lightness:n,alpha:o=1})=>"hsla("+Math.round(e)+", "+kl.transform(ay(r))+", "+kl.transform(ay(n))+", "+ay(oy.transform(o))+")"},In={test:e=>Ip.test(e)||uC.test(e)||_m.test(e),parse:e=>Ip.test(e)?Ip.parse(e):_m.test(e)?_m.parse(e):uC.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Ip.transform(e):_m.transform(e),getAnimatableNone:e=>{const r=In.parse(e);return r.alpha=0,In.transform(r)}},uFe=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function dFe(e){return isNaN(e)&&typeof e=="string"&&(e.match(sC)?.length||0)+(e.match(uFe)?.length||0)>0}const oK="number",aK="color",pFe="var",hFe="var(",iK="${}",fFe=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function sy(e){const r=e.toString(),n=[],o={color:[],number:[],var:[]},a=[];let i=0;const s=r.replace(fFe,l=>(In.test(l)?(o.color.push(i),a.push(aK),n.push(In.parse(l))):l.startsWith(hFe)?(o.var.push(i),a.push(pFe),n.push(l)):(o.number.push(i),a.push(oK),n.push(parseFloat(l))),++i,iK)).split(iK);return{values:n,split:s,indexes:o,types:a}}function sK(e){return sy(e).values}function lK(e){const{split:r,types:n}=sy(e),o=r.length;return a=>{let i="";for(let s=0;stypeof e=="number"?0:In.test(e)?In.getAnimatableNone(e):e;function gFe(e){const r=sK(e);return lK(e)(r.map(mFe))}const Bu={test:dFe,parse:sK,createTransformer:lK,getAnimatableNone:gFe};function dC(e,r,n){return n<0&&(n+=1),n>1&&(n-=1),n<.16666666666666666?e+(r-e)*6*n:n<.5?r:n<.6666666666666666?e+(r-e)*(.6666666666666666-n)*6:e}function yFe({hue:e,saturation:r,lightness:n,alpha:o}){e/=360,r/=100,n/=100;let a=0,i=0,s=0;if(!r)a=i=s=n;else{const l=n<.5?n*(1+r):n+r-n*r,c=2*n-l;a=dC(c,l,e+.3333333333333333),i=dC(c,l,e),s=dC(c,l,e-.3333333333333333)}return{red:Math.round(a*255),green:Math.round(i*255),blue:Math.round(s*255),alpha:o}}function xw(e,r){return n=>n>0?r:e}const Zr=(e,r,n)=>e+(r-e)*n,pC=(e,r,n)=>{const o=e*e,a=n*(r*r-o)+o;return a<0?0:Math.sqrt(a)},bFe=[uC,Ip,_m],vFe=e=>bFe.find(r=>r.test(e));function cK(e){const r=vFe(e);if(!r)return!1;let n=r.parse(e);return r===_m&&(n=yFe(n)),n}const uK=(e,r)=>{const n=cK(e),o=cK(r);if(!n||!o)return xw(e,r);const a={...n};return i=>(a.red=pC(n.red,o.red,i),a.green=pC(n.green,o.green,i),a.blue=pC(n.blue,o.blue,i),a.alpha=Zr(n.alpha,o.alpha,i),Ip.transform(a))},hC=new Set(["none","hidden"]);function xFe(e,r){return hC.has(e)?n=>n<=0?e:r:n=>n>=1?r:e}function wFe(e,r){return n=>Zr(e,r,n)}function fC(e){return typeof e=="number"?wFe:typeof e=="string"?iC(e)?xw:In.test(e)?uK:EFe:Array.isArray(e)?dK:typeof e=="object"?In.test(e)?uK:kFe:xw}function dK(e,r){const n=[...e],o=n.length,a=e.map((i,s)=>fC(i)(i,r[s]));return i=>{for(let s=0;s{for(const i in o)n[i]=o[i](a);return n}}function _Fe(e,r){const n=[],o={color:0,var:0,number:0};for(let a=0;a{const n=Bu.createTransformer(r),o=sy(e),a=sy(r);return o.indexes.var.length===a.indexes.var.length&&o.indexes.color.length===a.indexes.color.length&&o.indexes.number.length>=a.indexes.number.length?hC.has(e)&&!a.values.length||hC.has(r)&&!o.values.length?xFe(e,r):ry(dK(_Fe(o,a),a.values),n):xw(e,r)};function pK(e,r,n){return typeof e=="number"&&typeof r=="number"&&typeof n=="number"?Zr(e,r,n):fC(e)(e,r)}const SFe=e=>{const r=({timestamp:n})=>e(n);return{start:(n=!0)=>qr.update(r,n),stop:()=>ju(r),now:()=>xo.isProcessing?xo.timestamp:ma.now()}},hK=(e,r,n=10)=>{let o="";const a=Math.max(Math.round(r/n),2);for(let i=0;i=ww?1/0:r}function fK(e,r=100,n){const o=n({...e,keyframes:[0,r]}),a=Math.min(mC(o),ww);return{type:"keyframes",ease:i=>o.next(a*i).value/r,duration:_i(a)}}const CFe=5;function mK(e,r,n){const o=Math.max(r-CFe,0);return BX(n-e(o),r-o)}const mn={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},gC=.001;function TFe({duration:e=mn.duration,bounce:r=mn.bounce,velocity:n=mn.velocity,mass:o=mn.mass}){let a,i,s=1-r;s=vc(mn.minDamping,mn.maxDamping,s),e=vc(mn.minDuration,mn.maxDuration,_i(e)),s<1?(a=u=>{const d=u*s,h=d*e,f=d-n,g=yC(u,s),b=Math.exp(-h);return gC-f/g*b},i=u=>{const d=u*s*e,h=d*n+n,f=Math.pow(s,2)*Math.pow(u,2)*e,g=Math.exp(-d),b=yC(Math.pow(u,2),s);return(-a(u)+gC>0?-1:1)*((h-f)*g)/b}):(a=u=>{const d=Math.exp(-u*e),h=(u-n)*e+1;return-gC+d*h},i=u=>{const d=Math.exp(-u*e),h=(n-u)*(e*e);return d*h});const l=5/e,c=RFe(a,i,l);if(e=xs(e),isNaN(c))return{stiffness:mn.stiffness,damping:mn.damping,duration:e};{const u=Math.pow(c,2)*o;return{stiffness:u,damping:s*2*Math.sqrt(o*u),duration:e}}}const AFe=12;function RFe(e,r,n){let o=n;for(let a=1;ae[n]!==void 0)}function $Fe(e){let r={velocity:mn.velocity,stiffness:mn.stiffness,damping:mn.damping,mass:mn.mass,isResolvedFromDuration:!1,...e};if(!gK(e,DFe)&&gK(e,NFe))if(e.visualDuration){const n=e.visualDuration,o=2*Math.PI/(n*1.2),a=o*o,i=2*vc(.05,1,1-(e.bounce||0))*Math.sqrt(a);r={...r,mass:mn.mass,stiffness:a,damping:i}}else{const n=TFe(e);r={...r,...n,mass:mn.mass},r.isResolvedFromDuration=!0}return r}function ly(e=mn.visualDuration,r=mn.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:r}:e;let{restSpeed:o,restDelta:a}=n;const i=n.keyframes[0],s=n.keyframes[n.keyframes.length-1],l={done:!1,value:i},{stiffness:c,damping:u,mass:d,duration:h,velocity:f,isResolvedFromDuration:g}=$Fe({...n,velocity:-_i(n.velocity||0)}),b=f||0,x=u/(2*Math.sqrt(c*d)),w=s-i,k=_i(Math.sqrt(c/d)),C=Math.abs(w)<5;o||(o=C?mn.restSpeed.granular:mn.restSpeed.default),a||(a=C?mn.restDelta.granular:mn.restDelta.default);let _;if(x<1){const A=yC(k,x);_=R=>{const D=Math.exp(-x*k*R);return s-D*((b+x*k*w)/A*Math.sin(A*R)+w*Math.cos(A*R))}}else if(x===1)_=A=>s-Math.exp(-k*A)*(w+(b+k*w)*A);else{const A=k*Math.sqrt(x*x-1);_=R=>{const D=Math.exp(-x*k*R),N=Math.min(A*R,300);return s-D*((b+x*k*w)*Math.sinh(N)+A*w*Math.cosh(N))/A}}const T={calculatedDuration:g&&h||null,next:A=>{const R=_(A);if(g)l.done=A>=h;else{let D=A===0?b:0;x<1&&(D=A===0?xs(b):mK(_,A,R));const N=Math.abs(D)<=o,M=Math.abs(s-R)<=a;l.done=N&&M}return l.value=l.done?s:R,l},toString:()=>{const A=Math.min(mC(T),ww),R=hK(D=>T.next(A*D).value,A,30);return A+"ms "+R},toTransition:()=>{}};return T}ly.applyToOptions=e=>{const r=fK(e,100,ly);return e.ease=r.ease,e.duration=xs(r.duration),e.type="keyframes",e};function bC({keyframes:e,velocity:r=0,power:n=.8,timeConstant:o=325,bounceDamping:a=10,bounceStiffness:i=500,modifyTarget:s,min:l,max:c,restDelta:u=.5,restSpeed:d}){const h=e[0],f={done:!1,value:h},g=N=>l!==void 0&&Nc,b=N=>l===void 0?c:c===void 0||Math.abs(l-N)-x*Math.exp(-N/o),_=N=>k+C(N),T=N=>{const M=C(N),O=_(N);f.done=Math.abs(M)<=u,f.value=f.done?k:O};let A,R;const D=N=>{g(f.value)&&(A=N,R=ly({keyframes:[f.value,b(f.value)],velocity:mK(_,N,f.value),damping:a,stiffness:i,restDelta:u,restSpeed:d}))};return D(0),{calculatedDuration:null,next:N=>{let M=!1;return!R&&A===void 0&&(M=!0,T(N),D(N)),A!==void 0&&N>=A?R.next(N-A):(!M&&T(N),f)}}}function MFe(e,r,n){const o=[],a=n||xc.mix||pK,i=e.length-1;for(let s=0;sr[0];if(i===2&&r[0]===r[1])return()=>r[1];const s=e[0]===e[1];e[0]>e[i-1]&&(e=[...e].reverse(),r=[...r].reverse());const l=MFe(r,o,a),c=l.length,u=d=>{if(s&&d1)for(;hu(vc(e[0],e[i-1],d)):u}function yK(e,r){const n=e[e.length-1];for(let o=1;o<=r;o++){const a=wm(0,r,o);e.push(Zr(n,1,a))}}function bK(e){const r=[0];return yK(r,e.length-1),r}function zFe(e,r){return e.map(n=>n*r)}function IFe(e,r){return e.map(()=>r||XX).splice(0,e.length-1)}function cy({duration:e=300,keyframes:r,times:n,ease:o="easeInOut"}){const a=KX(o)?o.map(JX):JX(o),i={done:!1,value:r[0]},s=zFe(n&&n.length===r.length?n:bK(r),e),l=PFe(s,r,{ease:Array.isArray(a)?a:IFe(r,a)});return{calculatedDuration:e,next:c=>(i.value=l(c),i.done=c>=e,i)}}const OFe=e=>e!==null;function vC(e,{repeat:r,repeatType:n="loop"},o,a=1){const i=e.filter(OFe),s=a<0||r&&n!=="loop"&&r%2===1?0:i.length-1;return!s||o===void 0?i[s]:o}const jFe={decay:bC,inertia:bC,tween:cy,keyframes:cy,spring:ly};function vK(e){typeof e.type=="string"&&(e.type=jFe[e.type])}class xC{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(r=>{this.resolve=r})}notifyFinished(){this.resolve()}then(r,n){return this.finished.then(r,n)}}const LFe=e=>e/100;class wC extends xC{constructor(r){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{const{motionValue:n}=this.options;n&&n.updatedAt!==ma.now()&&this.tick(ma.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=r,this.initAnimation(),this.play(),r.autoplay===!1&&this.pause()}initAnimation(){const{options:r}=this;vK(r);const{type:n=cy,repeat:o=0,repeatDelay:a=0,repeatType:i,velocity:s=0}=r;let{keyframes:l}=r;const c=n||cy;c!==cy&&typeof l[0]!="number"&&(this.mixKeyframes=ry(LFe,pK(l[0],l[1])),l=[0,100]);const u=c({...r,keyframes:l});i==="mirror"&&(this.mirroredGenerator=c({...r,keyframes:[...l].reverse(),velocity:-s})),u.calculatedDuration===null&&(u.calculatedDuration=mC(u));const{calculatedDuration:d}=u;this.calculatedDuration=d,this.resolvedDuration=d+a,this.totalDuration=this.resolvedDuration*(o+1)-a,this.generator=u}updateTime(r){const n=Math.round(r-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(r,n=!1){const{generator:o,totalDuration:a,mixKeyframes:i,mirroredGenerator:s,resolvedDuration:l,calculatedDuration:c}=this;if(this.startTime===null)return o.next(0);const{delay:u=0,keyframes:d,repeat:h,repeatType:f,repeatDelay:g,type:b,onUpdate:x,finalKeyframe:w}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,r):this.speed<0&&(this.startTime=Math.min(r-a/this.speed,this.startTime)),n?this.currentTime=r:this.updateTime(r);const k=this.currentTime-u*(this.playbackSpeed>=0?1:-1),C=this.playbackSpeed>=0?k<0:k>a;this.currentTime=Math.max(k,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=a);let _=this.currentTime,T=o;if(h){const N=Math.min(this.currentTime,a)/l;let M=Math.floor(N),O=N%1;!O&&N>=1&&(O=1),O===1&&M--,M=Math.min(M,h+1),M%2&&(f==="reverse"?(O=1-O,g&&(O-=g/l)):f==="mirror"&&(T=s)),_=vc(0,1,O)*l}const A=C?{done:!1,value:d[0]}:T.next(_);i&&(A.value=i(A.value));let{done:R}=A;!C&&c!==null&&(R=this.playbackSpeed>=0?this.currentTime>=a:this.currentTime<=0);const D=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&R);return D&&b!==bC&&(A.value=vC(d,this.options,w,this.speed)),x&&x(A.value),D&&this.finish(),A}then(r,n){return this.finished.then(r,n)}get duration(){return _i(this.calculatedDuration)}get iterationDuration(){const{delay:r=0}=this.options||{};return this.duration+_i(r)}get time(){return _i(this.currentTime)}set time(r){r=xs(r),this.currentTime=r,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=r:this.driver&&(this.startTime=this.driver.now()-r/this.playbackSpeed),this.driver?.start(!1)}get speed(){return this.playbackSpeed}set speed(r){this.updateTime(ma.now());const n=this.playbackSpeed!==r;this.playbackSpeed=r,n&&(this.time=_i(this.currentTime))}play(){if(this.isStopped)return;const{driver:r=SFe,startTime:n}=this.options;this.driver||(this.driver=r(a=>this.tick(a))),this.options.onPlay?.();const o=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=o):this.holdTime!==null?this.startTime=o-this.holdTime:this.startTime||(this.startTime=n??o),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(ma.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(r){return this.startTime=0,this.tick(r,!0)}attachTimeline(r){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),r.observe(this)}}function BFe(e){for(let r=1;re*180/Math.PI,kC=e=>{const r=Op(Math.atan2(e[1],e[0]));return _C(r)},FFe={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:kC,rotateZ:kC,skewX:e=>Op(Math.atan(e[1])),skewY:e=>Op(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},_C=e=>(e=e%360,e<0&&(e+=360),e),xK=kC,wK=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),kK=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),HFe={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:wK,scaleY:kK,scale:e=>(wK(e)+kK(e))/2,rotateX:e=>_C(Op(Math.atan2(e[6],e[5]))),rotateY:e=>_C(Op(Math.atan2(-e[2],e[0]))),rotateZ:xK,rotate:xK,skewX:e=>Op(Math.atan(e[4])),skewY:e=>Op(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function EC(e){return e.includes("scale")?1:0}function SC(e,r){if(!e||e==="none")return EC(r);const n=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let o,a;if(n)o=HFe,a=n;else{const l=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);o=FFe,a=l}if(!a)return EC(r);const i=o[r],s=a[1].split(",").map(qFe);return typeof i=="function"?i(s):s[i]}const VFe=(e,r)=>{const{transform:n="none"}=getComputedStyle(e);return SC(n,r)};function qFe(e){return parseFloat(e.trim())}const Em=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Sm=new Set(Em),_K=e=>e===km||e===$t,UFe=new Set(["x","y","z"]),WFe=Em.filter(e=>!UFe.has(e));function YFe(e){const r=[];return WFe.forEach(n=>{const o=e.getValue(n);o!==void 0&&(r.push([n,o.get()]),o.set(n.startsWith("scale")?1:0))}),r}const jp={width:({x:e},{paddingLeft:r="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(r)-parseFloat(n),height:({y:e},{paddingTop:r="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(r)-parseFloat(n),top:(e,{top:r})=>parseFloat(r),left:(e,{left:r})=>parseFloat(r),bottom:({y:e},{top:r})=>parseFloat(r)+(e.max-e.min),right:({x:e},{left:r})=>parseFloat(r)+(e.max-e.min),x:(e,{transform:r})=>SC(r,"x"),y:(e,{transform:r})=>SC(r,"y")};jp.translateX=jp.x,jp.translateY=jp.y;const Lp=new Set;let CC=!1,TC=!1,AC=!1;function EK(){if(TC){const e=Array.from(Lp).filter(o=>o.needsMeasurement),r=new Set(e.map(o=>o.element)),n=new Map;r.forEach(o=>{const a=YFe(o);a.length&&(n.set(o,a),o.render())}),e.forEach(o=>o.measureInitialState()),r.forEach(o=>{o.render();const a=n.get(o);a&&a.forEach(([i,s])=>{o.getValue(i)?.set(s)})}),e.forEach(o=>o.measureEndState()),e.forEach(o=>{o.suspendedScrollY!==void 0&&window.scrollTo(0,o.suspendedScrollY)})}TC=!1,CC=!1,Lp.forEach(e=>e.complete(AC)),Lp.clear()}function SK(){Lp.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(TC=!0)})}function GFe(){AC=!0,SK(),EK(),AC=!1}class RC{constructor(r,n,o,a,i,s=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...r],this.onComplete=n,this.name=o,this.motionValue=a,this.element=i,this.isAsync=s}scheduleResolve(){this.state="scheduled",this.isAsync?(Lp.add(this),CC||(CC=!0,qr.read(SK),qr.resolveKeyframes(EK))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:r,name:n,element:o,motionValue:a}=this;if(r[0]===null){const i=a?.get(),s=r[r.length-1];if(i!==void 0)r[0]=i;else if(o&&n){const l=o.readValue(n,s);l!=null&&(r[0]=l)}r[0]===void 0&&(r[0]=s),a&&i===void 0&&a.set(r[0])}BFe(r)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(r=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,r),Lp.delete(this)}cancel(){this.state==="scheduled"&&(Lp.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const XFe=e=>e.startsWith("--");function KFe(e,r,n){XFe(r)?e.style.setProperty(r,n):e.style[r]=n}const ZFe=eC(()=>window.ScrollTimeline!==void 0),QFe={};function JFe(e,r){const n=eC(e);return()=>QFe[r]??n()}const CK=JFe(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),uy=([e,r,n,o])=>`cubic-bezier(${e}, ${r}, ${n}, ${o})`,TK={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:uy([0,.65,.55,1]),circOut:uy([.55,0,1,.45]),backIn:uy([.31,.01,.66,-.59]),backOut:uy([.33,1.53,.69,.99])};function AK(e,r){if(e)return typeof e=="function"?CK()?hK(e,r):"ease-out":QX(e)?uy(e):Array.isArray(e)?e.map(n=>AK(n,r)||TK.easeOut):TK[e]}function eHe(e,r,n,{delay:o=0,duration:a=300,repeat:i=0,repeatType:s="loop",ease:l="easeOut",times:c}={},u=void 0){const d={[r]:n};c&&(d.offset=c);const h=AK(l,a);Array.isArray(h)&&(d.easing=h);const f={delay:o,duration:a,easing:Array.isArray(h)?"linear":h,fill:"both",iterations:i+1,direction:s==="reverse"?"alternate":"normal"};return u&&(f.pseudoElement=u),e.animate(d,f)}function NC(e){return typeof e=="function"&&"applyToOptions"in e}function tHe({type:e,...r}){return NC(e)&&CK()?e.applyToOptions(r):(r.duration??(r.duration=300),r.ease??(r.ease="easeOut"),r)}class rHe extends xC{constructor(r){if(super(),this.finishedTime=null,this.isStopped=!1,!r)return;const{element:n,name:o,keyframes:a,pseudoElement:i,allowFlatten:s=!1,finalKeyframe:l,onComplete:c}=r;this.isPseudoElement=!!i,this.allowFlatten=s,this.options=r,JS(typeof r.type!="string");const u=tHe(r);this.animation=eHe(n,o,a,u,i),u.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!i){const d=vC(a,this.options,l,this.speed);this.updateMotionValue?this.updateMotionValue(d):KFe(n,o,d),this.animation.cancel()}c?.(),this.notifyFinished()}}play(){this.isStopped||(this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:r}=this;r==="idle"||r==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){this.isPseudoElement||this.animation.commitStyles?.()}get duration(){const r=this.animation.effect?.getComputedTiming?.().duration||0;return _i(Number(r))}get iterationDuration(){const{delay:r=0}=this.options||{};return this.duration+_i(r)}get time(){return _i(Number(this.animation.currentTime)||0)}set time(r){this.finishedTime=null,this.animation.currentTime=xs(r)}get speed(){return this.animation.playbackRate}set speed(r){r<0&&(this.finishedTime=null),this.animation.playbackRate=r}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return Number(this.animation.startTime)}set startTime(r){this.animation.startTime=r}attachTimeline({timeline:r,observe:n}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,r&&ZFe()?(this.animation.timeline=r,ki):n(this)}}const RK={anticipate:WX,backInOut:UX,circInOut:GX};function nHe(e){return e in RK}function oHe(e){typeof e.ease=="string"&&nHe(e.ease)&&(e.ease=RK[e.ease])}const NK=10;class aHe extends rHe{constructor(r){oHe(r),vK(r),super(r),r.startTime&&(this.startTime=r.startTime),this.options=r}updateMotionValue(r){const{motionValue:n,onUpdate:o,onComplete:a,element:i,...s}=this.options;if(!n)return;if(r!==void 0){n.set(r);return}const l=new wC({...s,autoplay:!1}),c=xs(this.finishedTime??this.time);n.setWithVelocity(l.sample(c-NK).value,l.sample(c).value,NK),l.stop()}}const DK=(e,r)=>r==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(Bu.test(e)||e==="0")&&!e.startsWith("url("));function iHe(e){const r=e[0];if(e.length===1)return!0;for(let n=0;nObject.hasOwnProperty.call(Element.prototype,"animate"));function uHe(e){const{motionValue:r,name:n,repeatDelay:o,repeatType:a,damping:i,type:s}=e;if(!(r?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:l,transformTemplate:c}=r.owner.getProps();return cHe()&&n&&lHe.has(n)&&(n!=="transform"||!c)&&!l&&!o&&a!=="mirror"&&i!==0&&s!=="inertia"}const dHe=40;class pHe extends xC{constructor({autoplay:r=!0,delay:n=0,type:o="keyframes",repeat:a=0,repeatDelay:i=0,repeatType:s="loop",keyframes:l,name:c,motionValue:u,element:d,...h}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=ma.now();const f={autoplay:r,delay:n,type:o,repeat:a,repeatDelay:i,repeatType:s,name:c,motionValue:u,element:d,...h},g=d?.KeyframeResolver||RC;this.keyframeResolver=new g(l,(b,x,w)=>this.onKeyframesResolved(b,x,f,!w),c,u,d),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(r,n,o,a){this.keyframeResolver=void 0;const{name:i,type:s,velocity:l,delay:c,isHandoff:u,onUpdate:d}=o;this.resolvedAt=ma.now(),sHe(r,i,s,l)||((xc.instantAnimations||!c)&&d?.(vC(r,o,n)),r[0]=r[r.length-1],DC(o),o.repeat=0);const h={startTime:a?this.resolvedAt?this.resolvedAt-this.createdAt>dHe?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...o,keyframes:r},f=!u&&uHe(h)?new aHe({...h,element:h.motionValue.owner.current}):new wC(h);f.finished.then(()=>this.notifyFinished()).catch(ki),this.pendingTimeline&&(this.stopTimeline=f.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=f}get finished(){return this._animation?this.animation.finished:this._finished}then(r,n){return this.finished.finally(r).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),GFe()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(r){this.animation.time=r}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(r){this.animation.speed=r}get startTime(){return this.animation.startTime}attachTimeline(r){return this._animation?this.stopTimeline=this.animation.attachTimeline(r):this.pendingTimeline=r,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}class hHe{constructor(r){this.stop=()=>this.runAll("stop"),this.animations=r.filter(Boolean)}get finished(){return Promise.all(this.animations.map(r=>r.finished))}getAll(r){return this.animations[0][r]}setAll(r,n){for(let o=0;oo.attachTimeline(r));return()=>{n.forEach((o,a)=>{o&&o(),this.animations[a].stop()})}}get time(){return this.getAll("time")}set time(r){this.setAll("time",r)}get speed(){return this.getAll("speed")}set speed(r){this.setAll("speed",r)}get state(){return this.getAll("state")}get startTime(){return this.getAll("startTime")}get duration(){return $K(this.animations,"duration")}get iterationDuration(){return $K(this.animations,"iterationDuration")}runAll(r){this.animations.forEach(n=>n[r]())}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}function $K(e,r){let n=0;for(let o=0;on&&(n=a)}return n}class fHe extends hHe{then(r,n){return this.finished.finally(r).then(()=>{})}}const mHe=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function gHe(e){const r=mHe.exec(e);if(!r)return[,];const[,n,o,a]=r;return[`--${n??o}`,a]}function MK(e,r,n=1){const[o,a]=gHe(e);if(!o)return;const i=window.getComputedStyle(r).getPropertyValue(o);if(i){const s=i.trim();return OX(s)?parseFloat(s):s}return iC(a)?MK(a,r,n+1):a}function $C(e,r){return e?.[r]??e?.default??e}const PK=new Set(["width","height","top","left","right","bottom",...Em]),yHe={test:e=>e==="auto",parse:e=>e},zK=e=>r=>r.test(e),IK=[km,$t,kl,Lu,cFe,lFe,yHe],OK=e=>IK.find(zK(e));function bHe(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||LX(e):!0}const vHe=new Set(["brightness","contrast","saturate","opacity"]);function xHe(e){const[r,n]=e.slice(0,-1).split("(");if(r==="drop-shadow")return e;const[o]=n.match(sC)||[];if(!o)return e;const a=n.replace(o,"");let i=vHe.has(r)?1:0;return o!==n&&(i*=100),r+"("+i+a+")"}const wHe=/\b([a-z-]*)\(.*?\)/gu,MC={...Bu,getAnimatableNone:e=>{const r=e.match(wHe);return r?r.map(xHe).join(" "):e}},jK={...km,transform:Math.round},kHe={rotate:Lu,rotateX:Lu,rotateY:Lu,rotateZ:Lu,scale:vw,scaleX:vw,scaleY:vw,scaleZ:vw,skew:Lu,skewX:Lu,skewY:Lu,distance:$t,translateX:$t,translateY:$t,translateZ:$t,x:$t,y:$t,z:$t,perspective:$t,transformPerspective:$t,opacity:oy,originX:nK,originY:nK,originZ:$t},PC={borderWidth:$t,borderTopWidth:$t,borderRightWidth:$t,borderBottomWidth:$t,borderLeftWidth:$t,borderRadius:$t,radius:$t,borderTopLeftRadius:$t,borderTopRightRadius:$t,borderBottomRightRadius:$t,borderBottomLeftRadius:$t,width:$t,maxWidth:$t,height:$t,maxHeight:$t,top:$t,right:$t,bottom:$t,left:$t,padding:$t,paddingTop:$t,paddingRight:$t,paddingBottom:$t,paddingLeft:$t,margin:$t,marginTop:$t,marginRight:$t,marginBottom:$t,marginLeft:$t,backgroundPositionX:$t,backgroundPositionY:$t,...kHe,zIndex:jK,fillOpacity:oy,strokeOpacity:oy,numOctaves:jK},_He={...PC,color:In,backgroundColor:In,outlineColor:In,fill:In,stroke:In,borderColor:In,borderTopColor:In,borderRightColor:In,borderBottomColor:In,borderLeftColor:In,filter:MC,WebkitFilter:MC},LK=e=>_He[e];function BK(e,r){let n=LK(e);return n!==MC&&(n=Bu),n.getAnimatableNone?n.getAnimatableNone(r):void 0}const EHe=new Set(["auto","none","0"]);function SHe(e,r,n){let o=0,a;for(;o{r.getValue(l).set(c)}),this.resolveNoneKeyframes()}}function FK(e,r,n){if(e instanceof EventTarget)return[e];if(typeof e=="string"){let o=document;const a=n?.[e]??o.querySelectorAll(e);return a?Array.from(a):[]}return Array.from(e)}const HK=(e,r)=>r&&typeof e=="number"?r.transform(e):e;function VK(e){return jX(e)&&"offsetHeight"in e}const qK=30,THe=e=>!isNaN(parseFloat(e));class AHe{constructor(r,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=o=>{const a=ma.now();if(this.updatedAt!==a&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(o),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const i of this.dependents)i.dirty()},this.hasAnimated=!1,this.setCurrent(r),this.owner=n.owner}setCurrent(r){this.current=r,this.updatedAt=ma.now(),this.canTrackVelocity===null&&r!==void 0&&(this.canTrackVelocity=THe(this.current))}setPrevFrameValue(r=this.current){this.prevFrameValue=r,this.prevUpdatedAt=this.updatedAt}onChange(r){return this.on("change",r)}on(r,n){this.events[r]||(this.events[r]=new tC);const o=this.events[r].add(n);return r==="change"?()=>{o(),qr.read(()=>{this.events.change.getSize()||this.stop()})}:o}clearListeners(){for(const r in this.events)this.events[r].clear()}attach(r,n){this.passiveEffect=r,this.stopPassiveEffect=n}set(r){this.passiveEffect?this.passiveEffect(r,this.updateAndNotify):this.updateAndNotify(r)}setWithVelocity(r,n,o){this.set(n),this.prev=void 0,this.prevFrameValue=r,this.prevUpdatedAt=this.updatedAt-o}jump(r,n=!0){this.updateAndNotify(r),this.prev=r,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(r){this.dependents||(this.dependents=new Set),this.dependents.add(r)}removeDependent(r){this.dependents&&this.dependents.delete(r)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const r=ma.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||r-this.updatedAt>qK)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,qK);return BX(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(r){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=r(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Bp(e,r){return new AHe(e,r)}const{schedule:zC}=eK(queueMicrotask,!1),ws={x:!1,y:!1};function UK(){return ws.x||ws.y}function RHe(e){return e==="x"||e==="y"?ws[e]?null:(ws[e]=!0,()=>{ws[e]=!1}):ws.x||ws.y?null:(ws.x=ws.y=!0,()=>{ws.x=ws.y=!1})}function WK(e,r){const n=FK(e),o=new AbortController,a={passive:!0,...r,signal:o.signal};return[n,a,()=>o.abort()]}function YK(e){return!(e.pointerType==="touch"||UK())}function NHe(e,r,n={}){const[o,a,i]=WK(e,n),s=l=>{if(!YK(l))return;const{target:c}=l,u=r(c,l);if(typeof u!="function"||!c)return;const d=h=>{YK(h)&&(u(h),c.removeEventListener("pointerleave",d))};c.addEventListener("pointerleave",d,a)};return o.forEach(l=>{l.addEventListener("pointerenter",s,a)}),i}const GK=(e,r)=>r?e===r?!0:GK(e,r.parentElement):!1,IC=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,DHe=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function $He(e){return DHe.has(e.tagName)||e.tabIndex!==-1}const kw=new WeakSet;function XK(e){return r=>{r.key==="Enter"&&e(r)}}function OC(e,r){e.dispatchEvent(new PointerEvent("pointer"+r,{isPrimary:!0,bubbles:!0}))}const MHe=(e,r)=>{const n=e.currentTarget;if(!n)return;const o=XK(()=>{if(kw.has(n))return;OC(n,"down");const a=XK(()=>{OC(n,"up")}),i=()=>OC(n,"cancel");n.addEventListener("keyup",a,r),n.addEventListener("blur",i,r)});n.addEventListener("keydown",o,r),n.addEventListener("blur",()=>n.removeEventListener("keydown",o),r)};function KK(e){return IC(e)&&!UK()}function PHe(e,r,n={}){const[o,a,i]=WK(e,n),s=l=>{const c=l.currentTarget;if(!KK(l))return;kw.add(c);const u=r(c,l),d=(g,b)=>{window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",f),kw.has(c)&&kw.delete(c),KK(g)&&typeof u=="function"&&u(g,{success:b})},h=g=>{d(g,c===window||c===document||n.useGlobalTarget||GK(c,g.target))},f=g=>{d(g,!1)};window.addEventListener("pointerup",h,a),window.addEventListener("pointercancel",f,a)};return o.forEach(l=>{(n.useGlobalTarget?window:l).addEventListener("pointerdown",s,a),VK(l)&&(l.addEventListener("focus",c=>MHe(c,a)),!$He(l)&&!l.hasAttribute("tabindex")&&(l.tabIndex=0))}),i}function jC(e){return jX(e)&&"ownerSVGElement"in e}function ZK(e){return jC(e)&&e.tagName==="svg"}const uo=e=>!!(e&&e.getVelocity),zHe=[...IK,In,Bu],IHe=e=>zHe.find(zK(e));function LC(e){return typeof e=="object"&&!Array.isArray(e)}function QK(e,r,n,o){return typeof e=="string"&&LC(r)?FK(e,n,o):e instanceof NodeList?Array.from(e):Array.isArray(e)?e:[e]}function OHe(e,r,n){return e*(r+1)}function JK(e,r,n,o){return typeof r=="number"?r:r.startsWith("-")||r.startsWith("+")?Math.max(0,e+parseFloat(r)):r==="<"?n:r.startsWith("<")?Math.max(0,n+parseFloat(r.slice(1))):o.get(r)??e}function jHe(e,r,n){for(let o=0;or&&a.at{const M=qHe(T),{delay:O=0,times:F=bK(M),type:L="keyframes",repeat:U,repeatType:P,repeatDelay:V=0,...I}=A;let{ease:H=r.ease||"easeOut",duration:q}=A;const Z=typeof O=="function"?O(D,N):O,W=M.length,G=NC(L)?L:a?.[L||"keyframes"];if(W<=2&&G){let Q=100;if(W===2&&YHe(M)){const ne=M[1]-M[0];Q=Math.abs(ne)}const J={...I};q!==void 0&&(J.duration=xs(q));const ie=fK(J,Q,G);H=ie.ease,q=ie.duration}q??(q=i);const K=h+Z;F.length===1&&F[0]===0&&(F[1]=1);const j=F.length-M.length;if(j>0&&yK(F,j),M.length===1&&M.unshift(null),U){q=OHe(q,U);const Q=[...M],J=[...F];H=Array.isArray(H)?[...H]:[H];const ie=[...H];for(let ne=0;ne{for(const x in g){const w=g[x];w.sort(FHe);const k=[],C=[],_=[];for(let A=0;Atypeof e=="number",YHe=e=>e.every(WHe),dy=new WeakMap,BC=e=>Array.isArray(e);function rZ(e){const r=[{},{}];return e?.values.forEach((n,o)=>{r[0][o]=n.get(),r[1][o]=n.getVelocity()}),r}function FC(e,r,n,o){if(typeof r=="function"){const[a,i]=rZ(o);r=r(n!==void 0?n:e.custom,a,i)}if(typeof r=="string"&&(r=e.variants&&e.variants[r]),typeof r=="function"){const[a,i]=rZ(o);r=r(n!==void 0?n:e.custom,a,i)}return r}function Cm(e,r,n){const o=e.getProps();return FC(o,r,n!==void 0?n:o.custom,e)}function GHe(e,r,n){e.hasValue(r)?e.getValue(r).set(n):e.addValue(r,Bp(n))}function XHe(e){return BC(e)?e[e.length-1]||0:e}function KHe(e,r){const n=Cm(e,r);let{transitionEnd:o={},transition:a={},...i}=n||{};i={...i,...o};for(const s in i){const l=XHe(i[s]);GHe(e,s,l)}}function ZHe(e){return!!(uo(e)&&e.add)}function HC(e,r){const n=e.getValue("willChange");if(ZHe(n))return n.add(r);if(!n&&xc.WillChange){const o=new xc.WillChange("auto");e.addValue("willChange",o),o.add(r)}}const VC=e=>e.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),QHe="framerAppearId",nZ="data-"+VC(QHe);function oZ(e){return e.props[nZ]}const JHe=e=>e!==null;function eVe(e,{repeat:r,repeatType:n="loop"},o){const a=e.filter(JHe),i=r&&n!=="loop"&&r%2===1?0:a.length-1;return a[i]}const tVe={type:"spring",stiffness:500,damping:25,restSpeed:10},rVe=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),nVe={type:"keyframes",duration:.8},oVe={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},aVe=(e,{keyframes:r})=>r.length>2?nVe:Sm.has(e)?e.startsWith("scale")?rVe(r[1]):tVe:oVe;function iVe({when:e,delay:r,delayChildren:n,staggerChildren:o,staggerDirection:a,repeat:i,repeatType:s,repeatDelay:l,from:c,elapsed:u,...d}){return!!Object.keys(d).length}const qC=(e,r,n,o={},a,i)=>s=>{const l=$C(o,e)||{},c=l.delay||o.delay||0;let{elapsed:u=0}=o;u=u-xs(c);const d={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:r.getVelocity(),...l,delay:-u,onUpdate:f=>{r.set(f),l.onUpdate&&l.onUpdate(f)},onComplete:()=>{s(),l.onComplete&&l.onComplete()},name:e,motionValue:r,element:i?void 0:a};iVe(l)||Object.assign(d,aVe(e,d)),d.duration&&(d.duration=xs(d.duration)),d.repeatDelay&&(d.repeatDelay=xs(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let h=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(DC(d),d.delay===0&&(h=!0)),(xc.instantAnimations||xc.skipAnimations)&&(h=!0,DC(d),d.delay=0),d.allowFlatten=!l.type&&!l.ease,h&&!i&&r.get()!==void 0){const f=eVe(d.keyframes,l);if(f!==void 0){qr.update(()=>{d.onUpdate(f),d.onComplete()});return}}return l.isSync?new wC(d):new pHe(d)};function sVe({protectedKeys:e,needsAnimating:r},n){const o=e.hasOwnProperty(n)&&r[n]!==!0;return r[n]=!1,o}function UC(e,r,{delay:n=0,transitionOverride:o,type:a}={}){let{transition:i=e.getDefaultTransition(),transitionEnd:s,...l}=r;o&&(i=o);const c=[],u=a&&e.animationState&&e.animationState.getState()[a];for(const d in l){const h=e.getValue(d,e.latestValues[d]??null),f=l[d];if(f===void 0||u&&sVe(u,d))continue;const g={delay:n,...$C(i||{},d)},b=h.get();if(b!==void 0&&!h.isAnimating&&!Array.isArray(f)&&f===b&&!g.velocity)continue;let x=!1;if(window.MotionHandoffAnimation){const k=oZ(e);if(k){const C=window.MotionHandoffAnimation(k,d,qr);C!==null&&(g.startTime=C,x=!0)}}HC(e,d),h.start(qC(d,h,f,e.shouldReduceMotion&&PK.has(d)?{type:!1}:g,e,x));const w=h.animation;w&&c.push(w)}return s&&Promise.all(c).then(()=>{qr.update(()=>{s&&KHe(e,s)})}),c}function aZ({top:e,left:r,right:n,bottom:o}){return{x:{min:r,max:n},y:{min:e,max:o}}}function lVe({x:e,y:r}){return{top:r.min,right:e.max,bottom:r.max,left:e.min}}function cVe(e,r){if(!r)return e;const n=r({x:e.left,y:e.top}),o=r({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:o.y,right:o.x}}function WC(e){return e===void 0||e===1}function YC({scale:e,scaleX:r,scaleY:n}){return!WC(e)||!WC(r)||!WC(n)}function Fp(e){return YC(e)||iZ(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function iZ(e){return sZ(e.x)||sZ(e.y)}function sZ(e){return e&&e!=="0%"}function _w(e,r,n){const o=e-n,a=r*o;return n+a}function lZ(e,r,n,o,a){return a!==void 0&&(e=_w(e,a,o)),_w(e,n,o)+r}function GC(e,r=0,n=1,o,a){e.min=lZ(e.min,r,n,o,a),e.max=lZ(e.max,r,n,o,a)}function cZ(e,{x:r,y:n}){GC(e.x,r.translate,r.scale,r.originPoint),GC(e.y,n.translate,n.scale,n.originPoint)}const uZ=.999999999999,dZ=1.0000000000001;function uVe(e,r,n,o=!1){const a=n.length;if(!a)return;r.x=r.y=1;let i,s;for(let l=0;luZ&&(r.x=1),r.yuZ&&(r.y=1)}function Tm(e,r){e.min=e.min+r,e.max=e.max+r}function pZ(e,r,n,o,a=.5){const i=Zr(e.min,e.max,a);GC(e,r,n,i,o)}function Am(e,r){pZ(e.x,r.x,r.scaleX,r.scale,r.originX),pZ(e.y,r.y,r.scaleY,r.scale,r.originY)}function hZ(e,r){return aZ(cVe(e.getBoundingClientRect(),r))}function dVe(e,r,n){const o=hZ(e,n),{scroll:a}=r;return a&&(Tm(o.x,a.offset.x),Tm(o.y,a.offset.y)),o}const fZ={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Rm={};for(const e in fZ)Rm[e]={isEnabled:r=>fZ[e].some(n=>!!r[n])};const mZ=()=>({translate:0,scale:1,origin:0,originPoint:0}),Nm=()=>({x:mZ(),y:mZ()}),gZ=()=>({min:0,max:0}),gn=()=>({x:gZ(),y:gZ()}),XC=typeof window<"u",Ew={current:null},KC={current:!1};function yZ(){if(KC.current=!0,!!XC)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),r=()=>Ew.current=e.matches;e.addEventListener("change",r),r()}else Ew.current=!1}function Sw(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function py(e){return typeof e=="string"||Array.isArray(e)}const ZC=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],QC=["initial",...ZC];function Cw(e){return Sw(e.animate)||QC.some(r=>py(e[r]))}function bZ(e){return!!(Cw(e)||e.variants)}function pVe(e,r,n){for(const o in r){const a=r[o],i=n[o];if(uo(a))e.addValue(o,a);else if(uo(i))e.addValue(o,Bp(a,{owner:e}));else if(i!==a)if(e.hasValue(o)){const s=e.getValue(o);s.liveStyle===!0?s.jump(a):s.hasAnimated||s.set(a)}else{const s=e.getStaticValue(o);e.addValue(o,Bp(s!==void 0?s:a,{owner:e}))}}for(const o in n)r[o]===void 0&&e.removeValue(o);return r}const vZ=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class xZ{scrapeMotionValuesFromProps(r,n,o){return{}}constructor({parent:r,props:n,presenceContext:o,reducedMotionConfig:a,blockInitialAnimation:i,visualState:s},l={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=RC,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const f=ma.now();this.renderScheduledAtthis.bindToMotionValue(o,n)),KC.current||yZ(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:Ew.current,this.parent?.addChild(this),this.update(this.props,this.presenceContext)}unmount(){this.projection&&this.projection.unmount(),ju(this.notifyUpdate),ju(this.render),this.valueSubscriptions.forEach(r=>r()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const r in this.events)this.events[r].clear();for(const r in this.features){const n=this.features[r];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(r){this.children.add(r),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(r)}removeChild(r){this.children.delete(r),this.enteringChildren&&this.enteringChildren.delete(r)}bindToMotionValue(r,n){this.valueSubscriptions.has(r)&&this.valueSubscriptions.get(r)();const o=Sm.has(r);o&&this.onBindTransform&&this.onBindTransform();const a=n.on("change",s=>{this.latestValues[r]=s,this.props.onUpdate&&qr.preRender(this.notifyUpdate),o&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let i;window.MotionCheckAppearSync&&(i=window.MotionCheckAppearSync(this,r,n)),this.valueSubscriptions.set(r,()=>{a(),i&&i(),n.owner&&n.stop()})}sortNodePosition(r){return!this.current||!this.sortInstanceNodePosition||this.type!==r.type?0:this.sortInstanceNodePosition(this.current,r.current)}updateFeatures(){let r="animation";for(r in Rm){const n=Rm[r];if(!n)continue;const{isEnabled:o,Feature:a}=n;if(!this.features[r]&&a&&o(this.props)&&(this.features[r]=new a(this)),this.features[r]){const i=this.features[r];i.isMounted?i.update():(i.mount(),i.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):gn()}getStaticValue(r){return this.latestValues[r]}setStaticValue(r,n){this.latestValues[r]=n}update(r,n){(r.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=r,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let o=0;on.variantChildren.delete(r)}addValue(r,n){const o=this.values.get(r);n!==o&&(o&&this.removeValue(r),this.bindToMotionValue(r,n),this.values.set(r,n),this.latestValues[r]=n.get())}removeValue(r){this.values.delete(r);const n=this.valueSubscriptions.get(r);n&&(n(),this.valueSubscriptions.delete(r)),delete this.latestValues[r],this.removeValueFromRenderState(r,this.renderState)}hasValue(r){return this.values.has(r)}getValue(r,n){if(this.props.values&&this.props.values[r])return this.props.values[r];let o=this.values.get(r);return o===void 0&&n!==void 0&&(o=Bp(n===null?void 0:n,{owner:this}),this.addValue(r,o)),o}readValue(r,n){let o=this.latestValues[r]!==void 0||!this.current?this.latestValues[r]:this.getBaseTargetFromProps(this.props,r)??this.readValueFromInstance(this.current,r,this.options);return o!=null&&(typeof o=="string"&&(OX(o)||LX(o))?o=parseFloat(o):!IHe(o)&&Bu.test(n)&&(o=BK(r,n)),this.setBaseTarget(r,uo(o)?o.get():o)),uo(o)?o.get():o}setBaseTarget(r,n){this.baseTarget[r]=n}getBaseTarget(r){const{initial:n}=this.props;let o;if(typeof n=="string"||typeof n=="object"){const i=FC(this.props,n,this.presenceContext?.custom);i&&(o=i[r])}if(n&&o!==void 0)return o;const a=this.getBaseTargetFromProps(this.props,r);return a!==void 0&&!uo(a)?a:this.initialValues[r]!==void 0&&o===void 0?void 0:this.baseTarget[r]}on(r,n){return this.events[r]||(this.events[r]=new tC),this.events[r].add(n)}notify(r,...n){this.events[r]&&this.events[r].notify(...n)}scheduleRenderMicrotask(){zC.render(this.render)}}class wZ extends xZ{constructor(){super(...arguments),this.KeyframeResolver=CHe}sortInstanceNodePosition(r,n){return r.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(r,n){return r.style?r.style[n]:void 0}removeValueFromRenderState(r,{vars:n,style:o}){delete n[r],delete o[r]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:r}=this.props;uo(r)&&(this.childSubscription=r.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}const hVe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},fVe=Em.length;function mVe(e,r,n){let o="",a=!0;for(let i=0;itypeof e=="string"&&e.toLowerCase()==="svg";function _Ve(e,r,n,o){kZ(e,r,void 0,o);for(const a in r.attrs)e.setAttribute(CZ.has(a)?a:VC(a),r.attrs[a])}function AZ(e,r,n){const o=eT(e,r,n);for(const a in e)if(uo(e[a])||uo(r[a])){const i=Em.indexOf(a)!==-1?"attr"+a.charAt(0).toUpperCase()+a.substring(1):a;o[i]=e[a]}return o}class RZ extends wZ{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=gn}getBaseTargetFromProps(r,n){return r[n]}readValueFromInstance(r,n){if(Sm.has(n)){const o=LK(n);return o&&o.default||0}return n=CZ.has(n)?n:VC(n),r.getAttribute(n)}scrapeMotionValuesFromProps(r,n,o){return AZ(r,n,o)}build(r,n,o){SZ(r,n,this.isSVGTag,o.transformTemplate,o.style)}renderInstance(r,n,o,a){_Ve(r,n,o,a)}mount(r){this.isSVGTag=TZ(r.tagName),super.mount(r)}}function EVe(e){const r={presenceContext:null,props:{},visualState:{renderState:{transform:{},transformOrigin:{},style:{},vars:{},attrs:{}},latestValues:{}}},n=jC(e)&&!ZK(e)?new RZ(r):new EZ(r);n.mount(e),dy.set(e,n)}function SVe(e){const r={presenceContext:null,props:{},visualState:{renderState:{output:{}},latestValues:{}}},n=new vVe(r);n.mount(e),dy.set(e,n)}function NZ(e,r,n){const o=uo(e)?e:Bp(e);return o.start(qC("",o,r,n)),o.animation}function CVe(e,r){return uo(e)||typeof e=="number"||typeof e=="string"&&!LC(r)}function DZ(e,r,n,o){const a=[];if(CVe(e,r))a.push(NZ(e,LC(r)&&r.default||r,n&&(n.default||n)));else{const i=QK(e,r,o),s=i.length;for(let l=0;l{o.push(...DZ(s,a,i))}),o}function AVe(e){return Array.isArray(e)&&e.some(Array.isArray)}function RVe(e){function r(n,o,a){let i=[],s;if(AVe(n))i=TVe(n,o,e);else{const{onComplete:c,...u}=a||{};typeof c=="function"&&(s=c),i=DZ(n,o,u,e)}const l=new fHe(i);return s&&l.finished.then(s),l}return r}const NVe=RVe();function DVe(e,r){const n=ma.now(),o=({timestamp:a})=>{const i=a-n;i>=r&&(ju(o),e(i-r))};return qr.setup(o,!0),()=>ju(o)}const $Z=(e,r)=>Math.abs(e-r);function $Ve(e,r){const n=$Z(e.x,r.x),o=$Z(e.y,r.y);return Math.sqrt(n**2+o**2)}const fy=E.createContext({});function Dm(e){const r=E.useRef(null);return r.current===null&&(r.current=e()),r.current}const tT=XC?E.useLayoutEffect:E.useEffect,Tw=E.createContext(null),Hp=E.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function MZ(e,r){if(typeof e=="function")return e(r);e!=null&&(e.current=r)}function MVe(...e){return r=>{let n=!1;const o=e.map(a=>{const i=MZ(a,r);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let a=0;a{const{width:u,height:d,top:h,left:f,right:g}=s.current;if(r||!i.current||!u||!d)return;const b=n==="left"?`left: ${f}`:`right: ${g}`;i.current.dataset.motionPopId=a;const x=document.createElement("style");l&&(x.nonce=l);const w=o??document.head;return w.appendChild(x),x.sheet&&x.sheet.insertRule(` + [data-motion-pop-id="${a}"] { + position: absolute !important; + width: ${u}px !important; + height: ${d}px !important; + ${b}px !important; + top: ${h}px !important; + } + `),()=>{w.contains(x)&&w.removeChild(x)}},[r]),y.jsx(zVe,{isPresent:r,childRef:i,sizeRef:s,children:E.cloneElement(e,{ref:c})})}const OVe=({children:e,initial:r,isPresent:n,onExitComplete:o,custom:a,presenceAffectsLayout:i,mode:s,anchorX:l,root:c})=>{const u=Dm(jVe),d=E.useId();let h=!0,f=E.useMemo(()=>(h=!1,{id:d,initial:r,isPresent:n,custom:a,onExitComplete:g=>{u.set(g,!0);for(const b of u.values())if(!b)return;o&&o()},register:g=>(u.set(g,!1),()=>u.delete(g))}),[n,u,o]);return i&&h&&(f={...f}),E.useMemo(()=>{u.forEach((g,b)=>u.set(b,!1))},[n]),E.useEffect(()=>{!n&&!u.size&&o&&o()},[n]),s==="popLayout"&&(e=y.jsx(IVe,{isPresent:n,anchorX:l,root:c,children:e})),y.jsx(Tw.Provider,{value:f,children:e})};function jVe(){return new Map}function PZ(e=!0){const r=E.useContext(Tw);if(r===null)return[!0,null];const{isPresent:n,onExitComplete:o,register:a}=r,i=E.useId();E.useEffect(()=>{if(e)return a(i)},[e]);const s=E.useCallback(()=>e&&o&&o(i),[i,o,e]);return!n&&o?[!1,s]:[!0]}const Aw=e=>e.key||"";function zZ(e){const r=[];return E.Children.forEach(e,n=>{E.isValidElement(n)&&r.push(n)}),r}const Qn=({children:e,custom:r,initial:n=!0,onExitComplete:o,presenceAffectsLayout:a=!0,mode:i="sync",propagate:s=!1,anchorX:l="left",root:c})=>{const[u,d]=PZ(s),h=E.useMemo(()=>zZ(e),[e]),f=s&&!u?[]:h.map(Aw),g=E.useRef(!0),b=E.useRef(h),x=Dm(()=>new Map),[w,k]=E.useState(h),[C,_]=E.useState(h);tT(()=>{g.current=!1,b.current=h;for(let R=0;R{const D=Aw(R),N=s&&!u?!1:h===C||f.includes(D),M=()=>{if(x.has(D))x.set(D,!0);else return;let O=!0;x.forEach(F=>{F||(O=!1)}),O&&(A?.(),_(b.current),s&&d?.(),o&&o())};return y.jsx(OVe,{isPresent:N,initial:!g.current||n?void 0:!1,custom:r,presenceAffectsLayout:a,mode:i,root:c,onExitComplete:N?void 0:M,anchorX:l,children:R},D)})})},LVe=E.createContext(null);function BVe(){const e=E.useRef(!1);return tT(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function FVe(){const e=BVe(),[r,n]=E.useState(0),o=E.useCallback(()=>{e.current&&n(r+1)},[r]);return[E.useCallback(()=>qr.postRender(o),[o]),r]}const HVe=e=>!e.isLayoutDirty&&e.willUpdate(!1);function VVe(){const e=new Set,r=new WeakMap,n=()=>e.forEach(HVe);return{add:o=>{e.add(o),r.set(o,o.addEventListener("willUpdate",n))},remove:o=>{e.delete(o);const a=r.get(o);a&&(a(),r.delete(o)),n()},dirty:n}}const IZ=e=>e===!0,qVe=e=>IZ(e===!0)||e==="id",$m=({children:e,id:r,inherit:n=!0})=>{const o=E.useContext(fy),a=E.useContext(LVe),[i,s]=FVe(),l=E.useRef(null),c=o.id||a;l.current===null&&(qVe(n)&&c&&(r=r?c+"-"+r:c),l.current={id:r,group:IZ(n)&&o.group||VVe()});const u=E.useMemo(()=>({...l.current,forceRender:i}),[s]);return y.jsx(fy.Provider,{value:u,children:e})},rT=E.createContext({strict:!1});function nT(e){for(const r in e)Rm[r]={...Rm[r],...e[r]}}function UVe({children:e,features:r,strict:n=!1}){const[,o]=E.useState(!oT(r)),a=E.useRef(void 0);if(!oT(r)){const{renderer:i,...s}=r;a.current=i,nT(s)}return E.useEffect(()=>{oT(r)&&r().then(({renderer:i,...s})=>{nT(s),a.current=i,o(!0)})},[]),y.jsx(rT.Provider,{value:{renderer:a.current,strict:n},children:e})}function oT(e){return typeof e=="function"}const WVe=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Rw(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||WVe.has(e)}let OZ=e=>!Rw(e);function jZ(e){typeof e=="function"&&(OZ=r=>r.startsWith("on")?!Rw(r):e(r))}try{jZ(require("@emotion/is-prop-valid").default)}catch{}function YVe(e,r,n){const o={};for(const a in e)a==="values"&&typeof e.values=="object"||(OZ(a)||n===!0&&Rw(a)||!r&&!Rw(a)||e.draggable&&a.startsWith("onDrag"))&&(o[a]=e[a]);return o}function GVe({children:e,isValidProp:r,...n}){r&&jZ(r),n={...E.useContext(Hp),...n},n.isStatic=Dm(()=>n.isStatic);const o=E.useMemo(()=>n,[JSON.stringify(n.transition),n.transformPagePoint,n.reducedMotion]);return y.jsx(Hp.Provider,{value:o,children:e})}const Nw=E.createContext({});function XVe(e,r){if(Cw(e)){const{initial:n,animate:o}=e;return{initial:n===!1||py(n)?n:void 0,animate:py(o)?o:void 0}}return e.inherit!==!1?r:{}}function KVe(e){const{initial:r,animate:n}=XVe(e,E.useContext(Nw));return E.useMemo(()=>({initial:r,animate:n}),[LZ(r),LZ(n)])}function LZ(e){return Array.isArray(e)?e.join(" "):e}const aT=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function BZ(e,r,n){for(const o in r)!uo(r[o])&&!_Z(o,n)&&(e[o]=r[o])}function ZVe({transformTemplate:e},r){return E.useMemo(()=>{const n=aT();return JC(n,r,e),Object.assign({},n.vars,n.style)},[r])}function QVe(e,r){const n=e.style||{},o={};return BZ(o,n,e),Object.assign(o,ZVe(e,r)),o}function JVe(e,r){const n={},o=QVe(e,r);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=o,n}const FZ=()=>({...aT(),attrs:{}});function eqe(e,r,n,o){const a=E.useMemo(()=>{const i=FZ();return SZ(i,r,TZ(o),e.transformTemplate,e.style),{...i.attrs,style:{...i.style}}},[r]);if(e.style){const i={};BZ(i,e.style,e),a.style={...i,...a.style}}return a}const tqe=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function iT(e){return typeof e!="string"||e.includes("-")?!1:!!(tqe.indexOf(e)>-1||/[A-Z]/u.test(e))}function rqe(e,r,n,{latestValues:o},a,i=!1){const s=(iT(e)?eqe:JVe)(r,o,a,e),l=YVe(r,typeof e=="string",i),c=e!==E.Fragment?{...l,...s,ref:n}:{},{children:u}=r,d=E.useMemo(()=>uo(u)?u.get():u,[u]);return E.createElement(e,{...c,children:d})}function Dw(e){return uo(e)?e.get():e}function nqe({scrapeMotionValuesFromProps:e,createRenderState:r},n,o,a){return{latestValues:oqe(n,o,a,e),renderState:r()}}function oqe(e,r,n,o){const a={},i=o(e,{});for(const f in i)a[f]=Dw(i[f]);let{initial:s,animate:l}=e;const c=Cw(e),u=bZ(e);r&&u&&!c&&e.inherit!==!1&&(s===void 0&&(s=r.initial),l===void 0&&(l=r.animate));let d=n?n.initial===!1:!1;d=d||s===!1;const h=d?l:s;if(h&&typeof h!="boolean"&&!Sw(h)){const f=Array.isArray(h)?h:[h];for(let g=0;g(r,n)=>{const o=E.useContext(Nw),a=E.useContext(Tw),i=()=>nqe(e,r,o,a);return n?i():Dm(i)},aqe=HZ({scrapeMotionValuesFromProps:eT,createRenderState:aT}),iqe=HZ({scrapeMotionValuesFromProps:AZ,createRenderState:FZ}),sqe=Symbol.for("motionComponentSymbol");function Mm(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function lqe(e,r,n){return E.useCallback(o=>{o&&e.onMount&&e.onMount(o),r&&(o?r.mount(o):r.unmount()),n&&(typeof n=="function"?n(o):Mm(n)&&(n.current=o))},[r])}const VZ=E.createContext({});function cqe(e,r,n,o,a){const{visualElement:i}=E.useContext(Nw),s=E.useContext(rT),l=E.useContext(Tw),c=E.useContext(Hp).reducedMotion,u=E.useRef(null);o=o||s.renderer,!u.current&&o&&(u.current=o(e,{visualState:r,parent:i,props:n,presenceContext:l,blockInitialAnimation:l?l.initial===!1:!1,reducedMotionConfig:c}));const d=u.current,h=E.useContext(VZ);d&&!d.projection&&a&&(d.type==="html"||d.type==="svg")&&uqe(u.current,n,a,h);const f=E.useRef(!1);E.useInsertionEffect(()=>{d&&f.current&&d.update(n,l)});const g=n[nZ],b=E.useRef(!!g&&!window.MotionHandoffIsComplete?.(g)&&window.MotionHasOptimisedAnimation?.(g));return tT(()=>{d&&(f.current=!0,window.MotionIsMounted=!0,d.updateFeatures(),d.scheduleRenderMicrotask(),b.current&&d.animationState&&d.animationState.animateChanges())}),E.useEffect(()=>{d&&(!b.current&&d.animationState&&d.animationState.animateChanges(),b.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(g)}),b.current=!1),d.enteringChildren=void 0)}),d}function uqe(e,r,n,o){const{layoutId:a,layout:i,drag:s,dragConstraints:l,layoutScroll:c,layoutRoot:u,layoutCrossfade:d}=r;e.projection=new n(e.latestValues,r["data-framer-portal-id"]?void 0:qZ(e.parent)),e.projection.setOptions({layoutId:a,layout:i,alwaysMeasureLayout:!!s||l&&Mm(l),visualElement:e,animationType:typeof i=="string"?i:"both",initialPromotionConfig:o,crossfade:d,layoutScroll:c,layoutRoot:u})}function qZ(e){if(e)return e.options.allowProjection!==!1?e.projection:qZ(e.parent)}function $w(e,{forwardMotionProps:r=!1}={},n,o){n&&nT(n);const a=iT(e)?iqe:aqe;function i(l,c){let u;const d={...E.useContext(Hp),...l,layoutId:dqe(l)},{isStatic:h}=d,f=KVe(l),g=a(l,h);if(!h&&XC){pqe();const b=hqe(d);u=b.MeasureLayout,f.visualElement=cqe(e,g,d,o,b.ProjectionNode)}return y.jsxs(Nw.Provider,{value:f,children:[u&&f.visualElement?y.jsx(u,{visualElement:f.visualElement,...d}):null,rqe(e,l,lqe(g,f.visualElement,c),g,h,r)]})}i.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const s=E.forwardRef(i);return s[sqe]=e,s}function dqe({layoutId:e}){const r=E.useContext(fy).id;return r&&e!==void 0?r+"-"+e:e}function pqe(e,r){E.useContext(rT).strict}function hqe(e){const{drag:r,layout:n}=Rm;if(!r&&!n)return{};const o={...r,...n};return{MeasureLayout:r?.isEnabled(e)||n?.isEnabled(e)?o.MeasureLayout:void 0,ProjectionNode:o.ProjectionNode}}function fqe(e,r){if(typeof Proxy>"u")return $w;const n=new Map,o=(i,s)=>$w(i,s,e,r),a=(i,s)=>o(i,s);return new Proxy(a,{get:(i,s)=>s==="create"?o:(n.has(s)||n.set(s,$w(s,void 0,e,r)),n.get(s))})}const Ei=fqe(),mqe=(e,r)=>iT(e)?new RZ(r):new EZ(r,{allowProjection:e!==E.Fragment});function UZ(e,r,n,o=0,a=1){const i=Array.from(e).sort((c,u)=>c.sortNodePosition(u)).indexOf(r),s=e.size,l=(s-1)*o;return typeof n=="function"?n(i,s):a===1?i*o:l-i*o}function sT(e,r,n={}){const o=Cm(e,r,n.type==="exit"?e.presenceContext?.custom:void 0);let{transition:a=e.getDefaultTransition()||{}}=o||{};n.transitionOverride&&(a=n.transitionOverride);const i=o?()=>Promise.all(UC(e,o,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(c=0)=>{const{delayChildren:u=0,staggerChildren:d,staggerDirection:h}=a;return gqe(e,r,c,u,d,h,n)}:()=>Promise.resolve(),{when:l}=a;if(l){const[c,u]=l==="beforeChildren"?[i,s]:[s,i];return c().then(()=>u())}else return Promise.all([i(),s(n.delay)])}function gqe(e,r,n=0,o=0,a=0,i=1,s){const l=[];for(const c of e.variantChildren)c.notify("AnimationStart",r),l.push(sT(c,r,{...s,delay:n+(typeof o=="function"?0:o)+UZ(e.variantChildren,c,o,a,i)}).then(()=>c.notify("AnimationComplete",r)));return Promise.all(l)}function yqe(e,r,n={}){e.notify("AnimationStart",r);let o;if(Array.isArray(r)){const a=r.map(i=>sT(e,i,n));o=Promise.all(a)}else if(typeof r=="string")o=sT(e,r,n);else{const a=typeof r=="function"?Cm(e,r,n.custom):r;o=Promise.all(UC(e,a,n))}return o.then(()=>{e.notify("AnimationComplete",r)})}function WZ(e,r){if(!Array.isArray(r))return!1;const n=r.length;if(n!==e.length)return!1;for(let o=0;oPromise.all(r.map(({animation:n,options:o})=>yqe(e,n,o)))}function kqe(e){let r=wqe(e),n=GZ(),o=!0;const a=c=>(u,d)=>{const h=Cm(e,d,c==="exit"?e.presenceContext?.custom:void 0);if(h){const{transition:f,transitionEnd:g,...b}=h;u={...u,...b,...g}}return u};function i(c){r=c(e)}function s(c){const{props:u}=e,d=YZ(e.parent)||{},h=[],f=new Set;let g={},b=1/0;for(let w=0;wb&&T,M=!1;const O=Array.isArray(_)?_:[_];let F=O.reduce(a(k),{});A===!1&&(F={});const{prevResolvedValues:L={}}=C,U={...L,...F},P=I=>{N=!0,f.has(I)&&(M=!0,f.delete(I)),C.needsAnimating[I]=!0;const H=e.getValue(I);H&&(H.liveStyle=!1)};for(const I in U){const H=F[I],q=L[I];if(g.hasOwnProperty(I))continue;let Z=!1;BC(H)&&BC(q)?Z=!WZ(H,q):Z=H!==q,Z?H!=null?P(I):f.add(I):H!==void 0&&f.has(I)?P(I):C.protectedKeys[I]=!0}C.prevProp=_,C.prevResolvedValues=F,C.isActive&&(g={...g,...F}),o&&e.blockInitialAnimation&&(N=!1);const V=R&&D;N&&(!V||M)&&h.push(...O.map(I=>{const H={type:k};if(typeof I=="string"&&o&&!V&&e.manuallyAnimateOnMount&&e.parent){const{parent:q}=e,Z=Cm(q,I);if(q.enteringChildren&&Z){const{delayChildren:W}=Z.transition||{};H.delay=UZ(q.enteringChildren,e,W)}}return{animation:I,options:H}}))}if(f.size){const w={};if(typeof u.initial!="boolean"){const k=Cm(e,Array.isArray(u.initial)?u.initial[0]:u.initial);k&&k.transition&&(w.transition=k.transition)}f.forEach(k=>{const C=e.getBaseTarget(k),_=e.getValue(k);_&&(_.liveStyle=!0),w[k]=C??null}),h.push({animation:w})}let x=!!h.length;return o&&(u.initial===!1||u.initial===u.animate)&&!e.manuallyAnimateOnMount&&(x=!1),o=!1,x?r(h):Promise.resolve()}function l(c,u){if(n[c].isActive===u)return Promise.resolve();e.variantChildren?.forEach(h=>h.animationState?.setActive(c,u)),n[c].isActive=u;const d=s(c);for(const h in n)n[h].protectedKeys={};return d}return{animateChanges:s,setActive:l,setAnimateFunction:i,getState:()=>n,reset:()=>{n=GZ()}}}function _qe(e,r){return typeof r=="string"?r!==e:Array.isArray(r)?!WZ(r,e):!1}function Vp(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function GZ(){return{animate:Vp(!0),whileInView:Vp(),whileHover:Vp(),whileTap:Vp(),whileDrag:Vp(),whileFocus:Vp(),exit:Vp()}}class Fu{constructor(r){this.isMounted=!1,this.node=r}update(){}}class Eqe extends Fu{constructor(r){super(r),r.animationState||(r.animationState=kqe(r))}updateAnimationControlsSubscription(){const{animate:r}=this.node.getProps();Sw(r)&&(this.unmountControls=r.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:r}=this.node.getProps(),{animate:n}=this.node.prevProps||{};r!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let Sqe=0;class Cqe extends Fu{constructor(){super(...arguments),this.id=Sqe++}update(){if(!this.node.presenceContext)return;const{isPresent:r,onExitComplete:n}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||r===o)return;const a=this.node.animationState.setActive("exit",!r);n&&!r&&a.then(()=>{n(this.id)})}mount(){const{register:r,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),r&&(this.unmount=r(this.id))}unmount(){}}const Tqe={animation:{Feature:Eqe},exit:{Feature:Cqe}};function my(e,r,n,o={passive:!0}){return e.addEventListener(r,n,o),()=>e.removeEventListener(r,n)}function gy(e){return{point:{x:e.pageX,y:e.pageY}}}const Aqe=e=>r=>IC(r)&&e(r,gy(r));function yy(e,r,n,o){return my(e,r,Aqe(n),o)}const XZ=1e-4,Rqe=1-XZ,Nqe=1+XZ,KZ=.01,Dqe=0-KZ,$qe=0+KZ;function Zo(e){return e.max-e.min}function Mqe(e,r,n){return Math.abs(e-r)<=n}function ZZ(e,r,n,o=.5){e.origin=o,e.originPoint=Zr(r.min,r.max,e.origin),e.scale=Zo(n)/Zo(r),e.translate=Zr(n.min,n.max,e.origin)-e.originPoint,(e.scale>=Rqe&&e.scale<=Nqe||isNaN(e.scale))&&(e.scale=1),(e.translate>=Dqe&&e.translate<=$qe||isNaN(e.translate))&&(e.translate=0)}function by(e,r,n,o){ZZ(e.x,r.x,n.x,o?o.originX:void 0),ZZ(e.y,r.y,n.y,o?o.originY:void 0)}function QZ(e,r,n){e.min=n.min+r.min,e.max=e.min+Zo(r)}function Pqe(e,r,n){QZ(e.x,r.x,n.x),QZ(e.y,r.y,n.y)}function JZ(e,r,n){e.min=r.min-n.min,e.max=e.min+Zo(r)}function vy(e,r,n){JZ(e.x,r.x,n.x),JZ(e.y,r.y,n.y)}function Si(e){return[e("x"),e("y")]}const eQ=({current:e})=>e?e.ownerDocument.defaultView:null;class tQ{constructor(r,n,{transformPagePoint:o,contextWindow:a=window,dragSnapToOrigin:i=!1,distanceThreshold:s=3}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const f=cT(this.lastMoveEventInfo,this.history),g=this.startEvent!==null,b=$Ve(f.offset,{x:0,y:0})>=this.distanceThreshold;if(!g&&!b)return;const{point:x}=f,{timestamp:w}=xo;this.history.push({...x,timestamp:w});const{onStart:k,onMove:C}=this.handlers;g||(k&&k(this.lastMoveEvent,f),this.startEvent=this.lastMoveEvent),C&&C(this.lastMoveEvent,f)},this.handlePointerMove=(f,g)=>{this.lastMoveEvent=f,this.lastMoveEventInfo=lT(g,this.transformPagePoint),qr.update(this.updatePoint,!0)},this.handlePointerUp=(f,g)=>{this.end();const{onEnd:b,onSessionEnd:x,resumeAnimation:w}=this.handlers;if(this.dragSnapToOrigin&&w&&w(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const k=cT(f.type==="pointercancel"?this.lastMoveEventInfo:lT(g,this.transformPagePoint),this.history);this.startEvent&&b&&b(f,k),x&&x(f,k)},!IC(r))return;this.dragSnapToOrigin=i,this.handlers=n,this.transformPagePoint=o,this.distanceThreshold=s,this.contextWindow=a||window;const l=gy(r),c=lT(l,this.transformPagePoint),{point:u}=c,{timestamp:d}=xo;this.history=[{...u,timestamp:d}];const{onSessionStart:h}=n;h&&h(r,cT(c,this.history)),this.removeListeners=ry(yy(this.contextWindow,"pointermove",this.handlePointerMove),yy(this.contextWindow,"pointerup",this.handlePointerUp),yy(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(r){this.handlers=r}end(){this.removeListeners&&this.removeListeners(),ju(this.updatePoint)}}function lT(e,r){return r?{point:r(e.point)}:e}function rQ(e,r){return{x:e.x-r.x,y:e.y-r.y}}function cT({point:e},r){return{point:e,delta:rQ(e,nQ(r)),offset:rQ(e,zqe(r)),velocity:Iqe(r,.1)}}function zqe(e){return e[0]}function nQ(e){return e[e.length-1]}function Iqe(e,r){if(e.length<2)return{x:0,y:0};let n=e.length-1,o=null;const a=nQ(e);for(;n>=0&&(o=e[n],!(a.timestamp-o.timestamp>xs(r)));)n--;if(!o)return{x:0,y:0};const i=_i(a.timestamp-o.timestamp);if(i===0)return{x:0,y:0};const s={x:(a.x-o.x)/i,y:(a.y-o.y)/i};return s.x===1/0&&(s.x=0),s.y===1/0&&(s.y=0),s}function Oqe(e,{min:r,max:n},o){return r!==void 0&&en&&(e=o?Zr(n,e,o.max):Math.min(e,n)),e}function oQ(e,r,n){return{min:r!==void 0?e.min+r:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function jqe(e,{top:r,left:n,bottom:o,right:a}){return{x:oQ(e.x,n,a),y:oQ(e.y,r,o)}}function aQ(e,r){let n=r.min-e.min,o=r.max-e.max;return r.max-r.mino?n=wm(r.min,r.max-o,e.min):o>a&&(n=wm(e.min,e.max-a,r.min)),vc(0,1,n)}function Fqe(e,r){const n={};return r.min!==void 0&&(n.min=r.min-e.min),r.max!==void 0&&(n.max=r.max-e.min),n}const uT=.35;function Hqe(e=uT){return e===!1?e=0:e===!0&&(e=uT),{x:iQ(e,"left","right"),y:iQ(e,"top","bottom")}}function iQ(e,r,n){return{min:sQ(e,r),max:sQ(e,n)}}function sQ(e,r){return typeof e=="number"?e:e[r]||0}const Vqe=new WeakMap;class qqe{constructor(r){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=gn(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=r}start(r,{snapToCursor:n=!1,distanceThreshold:o}={}){const{presenceContext:a}=this.visualElement;if(a&&a.isPresent===!1)return;const i=h=>{const{dragSnapToOrigin:f}=this.getProps();f?this.pauseAnimation():this.stopAnimation(),n&&this.snapToCursor(gy(h).point)},s=(h,f)=>{const{drag:g,dragPropagation:b,onDragStart:x}=this.getProps();if(g&&!b&&(this.openDragLock&&this.openDragLock(),this.openDragLock=RHe(g),!this.openDragLock))return;this.latestPointerEvent=h,this.latestPanInfo=f,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Si(k=>{let C=this.getAxisMotionValue(k).get()||0;if(kl.test(C)){const{projection:_}=this.visualElement;if(_&&_.layout){const T=_.layout.layoutBox[k];T&&(C=Zo(T)*(parseFloat(C)/100))}}this.originPoint[k]=C}),x&&qr.postRender(()=>x(h,f)),HC(this.visualElement,"transform");const{animationState:w}=this.visualElement;w&&w.setActive("whileDrag",!0)},l=(h,f)=>{this.latestPointerEvent=h,this.latestPanInfo=f;const{dragPropagation:g,dragDirectionLock:b,onDirectionLock:x,onDrag:w}=this.getProps();if(!g&&!this.openDragLock)return;const{offset:k}=f;if(b&&this.currentDirection===null){this.currentDirection=Uqe(k),this.currentDirection!==null&&x&&x(this.currentDirection);return}this.updateAxis("x",f.point,k),this.updateAxis("y",f.point,k),this.visualElement.render(),w&&w(h,f)},c=(h,f)=>{this.latestPointerEvent=h,this.latestPanInfo=f,this.stop(h,f),this.latestPointerEvent=null,this.latestPanInfo=null},u=()=>Si(h=>this.getAnimationState(h)==="paused"&&this.getAxisMotionValue(h).animation?.play()),{dragSnapToOrigin:d}=this.getProps();this.panSession=new tQ(r,{onSessionStart:i,onStart:s,onMove:l,onSessionEnd:c,resumeAnimation:u},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:o,contextWindow:eQ(this.visualElement)})}stop(r,n){const o=r||this.latestPointerEvent,a=n||this.latestPanInfo,i=this.isDragging;if(this.cancel(),!i||!a||!o)return;const{velocity:s}=a;this.startAnimation(s);const{onDragEnd:l}=this.getProps();l&&qr.postRender(()=>l(o,a))}cancel(){this.isDragging=!1;const{projection:r,animationState:n}=this.visualElement;r&&(r.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(r,n,o){const{drag:a}=this.getProps();if(!o||!Mw(r,a,this.currentDirection))return;const i=this.getAxisMotionValue(r);let s=this.originPoint[r]+o[r];this.constraints&&this.constraints[r]&&(s=Oqe(s,this.constraints[r],this.elastic[r])),i.set(s)}resolveConstraints(){const{dragConstraints:r,dragElastic:n}=this.getProps(),o=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,a=this.constraints;r&&Mm(r)?this.constraints||(this.constraints=this.resolveRefConstraints()):r&&o?this.constraints=jqe(o.layoutBox,r):this.constraints=!1,this.elastic=Hqe(n),a!==this.constraints&&o&&this.constraints&&!this.hasMutatedConstraints&&Si(i=>{this.constraints!==!1&&this.getAxisMotionValue(i)&&(this.constraints[i]=Fqe(o.layoutBox[i],this.constraints[i]))})}resolveRefConstraints(){const{dragConstraints:r,onMeasureDragConstraints:n}=this.getProps();if(!r||!Mm(r))return!1;const o=r.current,{projection:a}=this.visualElement;if(!a||!a.layout)return!1;const i=dVe(o,a.root,this.visualElement.getTransformPagePoint());let s=Lqe(a.layout.layoutBox,i);if(n){const l=n(lVe(s));this.hasMutatedConstraints=!!l,l&&(s=aZ(l))}return s}startAnimation(r){const{drag:n,dragMomentum:o,dragElastic:a,dragTransition:i,dragSnapToOrigin:s,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},u=Si(d=>{if(!Mw(d,n,this.currentDirection))return;let h=c&&c[d]||{};s&&(h={min:0,max:0});const f=a?200:1e6,g=a?40:1e7,b={type:"inertia",velocity:o?r[d]:0,bounceStiffness:f,bounceDamping:g,timeConstant:750,restDelta:1,restSpeed:10,...i,...h};return this.startAxisValueAnimation(d,b)});return Promise.all(u).then(l)}startAxisValueAnimation(r,n){const o=this.getAxisMotionValue(r);return HC(this.visualElement,r),o.start(qC(r,o,0,n,this.visualElement,!1))}stopAnimation(){Si(r=>this.getAxisMotionValue(r).stop())}pauseAnimation(){Si(r=>this.getAxisMotionValue(r).animation?.pause())}getAnimationState(r){return this.getAxisMotionValue(r).animation?.state}getAxisMotionValue(r){const n=`_drag${r.toUpperCase()}`,o=this.visualElement.getProps();return o[n]||this.visualElement.getValue(r,(o.initial?o.initial[r]:void 0)||0)}snapToCursor(r){Si(n=>{const{drag:o}=this.getProps();if(!Mw(n,o,this.currentDirection))return;const{projection:a}=this.visualElement,i=this.getAxisMotionValue(n);if(a&&a.layout){const{min:s,max:l}=a.layout.layoutBox[n];i.set(r[n]-Zr(s,l,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:r,dragConstraints:n}=this.getProps(),{projection:o}=this.visualElement;if(!Mm(n)||!o||!this.constraints)return;this.stopAnimation();const a={x:0,y:0};Si(s=>{const l=this.getAxisMotionValue(s);if(l&&this.constraints!==!1){const c=l.get();a[s]=Bqe({min:c,max:c},this.constraints[s])}});const{transformTemplate:i}=this.visualElement.getProps();this.visualElement.current.style.transform=i?i({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.resolveConstraints(),Si(s=>{if(!Mw(s,r,null))return;const l=this.getAxisMotionValue(s),{min:c,max:u}=this.constraints[s];l.set(Zr(c,u,a[s]))})}addListeners(){if(!this.visualElement.current)return;Vqe.set(this.visualElement,this);const r=this.visualElement.current,n=yy(r,"pointerdown",c=>{const{drag:u,dragListener:d=!0}=this.getProps();u&&d&&this.start(c)}),o=()=>{const{dragConstraints:c}=this.getProps();Mm(c)&&c.current&&(this.constraints=this.resolveRefConstraints())},{projection:a}=this.visualElement,i=a.addEventListener("measure",o);a&&!a.layout&&(a.root&&a.root.updateScroll(),a.updateLayout()),qr.read(o);const s=my(window,"resize",()=>this.scalePositionWithinConstraints()),l=a.addEventListener("didUpdate",(({delta:c,hasLayoutChanged:u})=>{this.isDragging&&u&&(Si(d=>{const h=this.getAxisMotionValue(d);h&&(this.originPoint[d]+=c[d].translate,h.set(h.get()+c[d].translate))}),this.visualElement.render())}));return()=>{s(),n(),i(),l&&l()}}getProps(){const r=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:o=!1,dragPropagation:a=!1,dragConstraints:i=!1,dragElastic:s=uT,dragMomentum:l=!0}=r;return{...r,drag:n,dragDirectionLock:o,dragPropagation:a,dragConstraints:i,dragElastic:s,dragMomentum:l}}}function Mw(e,r,n){return(r===!0||r===e)&&(n===null||n===e)}function Uqe(e,r=10){let n=null;return Math.abs(e.y)>r?n="y":Math.abs(e.x)>r&&(n="x"),n}class Wqe extends Fu{constructor(r){super(r),this.removeGroupControls=ki,this.removeListeners=ki,this.controls=new qqe(r)}mount(){const{dragControls:r}=this.node.getProps();r&&(this.removeGroupControls=r.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||ki}unmount(){this.removeGroupControls(),this.removeListeners()}}const lQ=e=>(r,n)=>{e&&qr.postRender(()=>e(r,n))};class Yqe extends Fu{constructor(){super(...arguments),this.removePointerDownListener=ki}onPointerDown(r){this.session=new tQ(r,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:eQ(this.node)})}createPanHandlers(){const{onPanSessionStart:r,onPanStart:n,onPan:o,onPanEnd:a}=this.node.getProps();return{onSessionStart:lQ(r),onStart:lQ(n),onMove:o,onEnd:(i,s)=>{delete this.session,a&&qr.postRender(()=>a(i,s))}}}mount(){this.removePointerDownListener=yy(this.node.current,"pointerdown",r=>this.onPointerDown(r))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const Pw={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function cQ(e,r){return r.max===r.min?0:e/(r.max-r.min)*100}const xy={correct:(e,r)=>{if(!r.target)return e;if(typeof e=="string")if($t.test(e))e=parseFloat(e);else return e;const n=cQ(e,r.target.x),o=cQ(e,r.target.y);return`${n}% ${o}%`}},Gqe={correct:(e,{treeScale:r,projectionDelta:n})=>{const o=e,a=Bu.parse(e);if(a.length>5)return o;const i=Bu.createTransformer(e),s=typeof a[0]!="number"?1:0,l=n.x.scale*r.x,c=n.y.scale*r.y;a[0+s]/=l,a[1+s]/=c;const u=Zr(l,c,.5);return typeof a[2+s]=="number"&&(a[2+s]/=u),typeof a[3+s]=="number"&&(a[3+s]/=u),i(a)}};let dT=!1;class Xqe extends E.Component{componentDidMount(){const{visualElement:r,layoutGroup:n,switchLayoutGroup:o,layoutId:a}=this.props,{projection:i}=r;gVe(Kqe),i&&(n.group&&n.group.add(i),o&&o.register&&a&&o.register(i),dT&&i.root.didUpdate(),i.addEventListener("animationComplete",()=>{this.safeToRemove()}),i.setOptions({...i.options,onExitComplete:()=>this.safeToRemove()})),Pw.hasEverUpdated=!0}getSnapshotBeforeUpdate(r){const{layoutDependency:n,visualElement:o,drag:a,isPresent:i}=this.props,{projection:s}=o;return s&&(s.isPresent=i,dT=!0,a||r.layoutDependency!==n||n===void 0||r.isPresent!==i?s.willUpdate():this.safeToRemove(),r.isPresent!==i&&(i?s.promote():s.relegate()||qr.postRender(()=>{const l=s.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:r}=this.props.visualElement;r&&(r.root.didUpdate(),zC.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:r,layoutGroup:n,switchLayoutGroup:o}=this.props,{projection:a}=r;dT=!0,a&&(a.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(a),o&&o.deregister&&o.deregister(a))}safeToRemove(){const{safeToRemove:r}=this.props;r&&r()}render(){return null}}function uQ(e){const[r,n]=PZ(),o=E.useContext(fy);return y.jsx(Xqe,{...e,layoutGroup:o,switchLayoutGroup:E.useContext(VZ),isPresent:r,safeToRemove:n})}const Kqe={borderRadius:{...xy,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:xy,borderTopRightRadius:xy,borderBottomLeftRadius:xy,borderBottomRightRadius:xy,boxShadow:Gqe},Zqe=(e,r)=>e.depth-r.depth;class Qqe{constructor(){this.children=[],this.isDirty=!1}add(r){QS(this.children,r),this.isDirty=!0}remove(r){gw(this.children,r),this.isDirty=!0}forEach(r){this.isDirty&&this.children.sort(Zqe),this.isDirty=!1,this.children.forEach(r)}}const dQ=["TopLeft","TopRight","BottomLeft","BottomRight"],Jqe=dQ.length,pQ=e=>typeof e=="string"?parseFloat(e):e,hQ=e=>typeof e=="number"||$t.test(e);function eUe(e,r,n,o,a,i){a?(e.opacity=Zr(0,n.opacity??1,tUe(o)),e.opacityExit=Zr(r.opacity??1,0,rUe(o))):i&&(e.opacity=Zr(r.opacity??1,n.opacity??1,o));for(let s=0;sor?1:n(wm(e,r,o))}function gQ(e,r){e.min=r.min,e.max=r.max}function Ci(e,r){gQ(e.x,r.x),gQ(e.y,r.y)}function yQ(e,r){e.translate=r.translate,e.scale=r.scale,e.originPoint=r.originPoint,e.origin=r.origin}function bQ(e,r,n,o,a){return e-=r,e=_w(e,1/n,o),a!==void 0&&(e=_w(e,1/a,o)),e}function nUe(e,r=0,n=1,o=.5,a,i=e,s=e){if(kl.test(r)&&(r=parseFloat(r),r=Zr(s.min,s.max,r/100)-s.min),typeof r!="number")return;let l=Zr(i.min,i.max,o);e===i&&(l-=r),e.min=bQ(e.min,r,n,l,a),e.max=bQ(e.max,r,n,l,a)}function vQ(e,r,[n,o,a],i,s){nUe(e,r[n],r[o],r[a],r.scale,i,s)}const oUe=["x","scaleX","originX"],aUe=["y","scaleY","originY"];function xQ(e,r,n,o){vQ(e.x,r,oUe,n?n.x:void 0,o?o.x:void 0),vQ(e.y,r,aUe,n?n.y:void 0,o?o.y:void 0)}function wQ(e){return e.translate===0&&e.scale===1}function kQ(e){return wQ(e.x)&&wQ(e.y)}function _Q(e,r){return e.min===r.min&&e.max===r.max}function iUe(e,r){return _Q(e.x,r.x)&&_Q(e.y,r.y)}function EQ(e,r){return Math.round(e.min)===Math.round(r.min)&&Math.round(e.max)===Math.round(r.max)}function SQ(e,r){return EQ(e.x,r.x)&&EQ(e.y,r.y)}function CQ(e){return Zo(e.x)/Zo(e.y)}function TQ(e,r){return e.translate===r.translate&&e.scale===r.scale&&e.originPoint===r.originPoint}class sUe{constructor(){this.members=[]}add(r){QS(this.members,r),r.scheduleRender()}remove(r){if(gw(this.members,r),r===this.prevLead&&(this.prevLead=void 0),r===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(r){const n=this.members.findIndex(a=>r===a);if(n===0)return!1;let o;for(let a=n;a>=0;a--){const i=this.members[a];if(i.isPresent!==!1){o=i;break}}return o?(this.promote(o),!0):!1}promote(r,n){const o=this.lead;if(r!==o&&(this.prevLead=o,this.lead=r,r.show(),o)){o.instance&&o.scheduleRender(),r.scheduleRender(),r.resumeFrom=o,n&&(r.resumeFrom.preserveOpacity=!0),o.snapshot&&(r.snapshot=o.snapshot,r.snapshot.latestValues=o.animationValues||o.latestValues),r.root&&r.root.isUpdating&&(r.isLayoutDirty=!0);const{crossfade:a}=r.options;a===!1&&o.hide()}}exitAnimationComplete(){this.members.forEach(r=>{const{options:n,resumingFrom:o}=r;n.onExitComplete&&n.onExitComplete(),o&&o.options.onExitComplete&&o.options.onExitComplete()})}scheduleRender(){this.members.forEach(r=>{r.instance&&r.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function lUe(e,r,n){let o="";const a=e.x.translate/r.x,i=e.y.translate/r.y,s=n?.z||0;if((a||i||s)&&(o=`translate3d(${a}px, ${i}px, ${s}px) `),(r.x!==1||r.y!==1)&&(o+=`scale(${1/r.x}, ${1/r.y}) `),n){const{transformPerspective:u,rotate:d,rotateX:h,rotateY:f,skewX:g,skewY:b}=n;u&&(o=`perspective(${u}px) ${o}`),d&&(o+=`rotate(${d}deg) `),h&&(o+=`rotateX(${h}deg) `),f&&(o+=`rotateY(${f}deg) `),g&&(o+=`skewX(${g}deg) `),b&&(o+=`skewY(${b}deg) `)}const l=e.x.scale*r.x,c=e.y.scale*r.y;return(l!==1||c!==1)&&(o+=`scale(${l}, ${c})`),o||"none"}const pT=["","X","Y","Z"],cUe=1e3;let uUe=0;function hT(e,r,n,o){const{latestValues:a}=r;a[e]&&(n[e]=a[e],r.setStaticValue(e,0),o&&(o[e]=0))}function AQ(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:r}=e.options;if(!r)return;const n=oZ(r);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:a,layoutId:i}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",qr,!(a||i))}const{parent:o}=e;o&&!o.hasCheckedOptimisedAppear&&AQ(o)}function RQ({attachResizeListener:e,defaultParent:r,measureScroll:n,checkIsScrollRoot:o,resetTransform:a}){return class{constructor(i={},s=r?.()){this.id=uUe++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(hUe),this.nodes.forEach(yUe),this.nodes.forEach(bUe),this.nodes.forEach(fUe)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=i,this.root=s?s.root||s:this,this.path=s?[...s.path,s]:[],this.parent=s,this.depth=s?s.depth+1:0;for(let l=0;lthis.root.updateBlockedByResize=!1;qr.read(()=>{d=window.innerWidth}),e(i,()=>{const f=window.innerWidth;f!==d&&(d=f,this.root.updateBlockedByResize=!0,u&&u(),u=DVe(h,250),Pw.hasAnimatedSinceResize&&(Pw.hasAnimatedSinceResize=!1,this.nodes.forEach($Q)))})}s&&this.root.registerSharedNode(s,this),this.options.animate!==!1&&c&&(s||l)&&this.addEventListener("didUpdate",({delta:u,hasLayoutChanged:d,hasRelativeLayoutChanged:h,layout:f})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const g=this.options.transition||c.getDefaultTransition()||_Ue,{onLayoutAnimationStart:b,onLayoutAnimationComplete:x}=c.getProps(),w=!this.targetLayout||!SQ(this.targetLayout,f),k=!d&&h;if(this.options.layoutRoot||this.resumeFrom||k||d&&(w||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const C={...$C(g,"layout"),onPlay:b,onComplete:x};(c.shouldReduceMotion||this.options.layoutRoot)&&(C.delay=0,C.type=!1),this.startAnimation(C),this.setAnimationOrigin(u,k)}else d||$Q(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=f})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const i=this.getStack();i&&i.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),ju(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(vUe),this.animationId++)}getTransformTemplate(){const{visualElement:i}=this.options;return i&&i.getProps().transformTemplate}willUpdate(i=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&AQ(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let u=0;u{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!Zo(this.snapshot.measuredBox.x)&&!Zo(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{const T=_/1e3;MQ(d.x,i.x,T),MQ(d.y,i.y,T),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(vy(h,this.layout.layoutBox,this.relativeParent.layout.layoutBox),wUe(this.relativeTarget,this.relativeTargetOrigin,h,T),C&&iUe(this.relativeTarget,C)&&(this.isProjectionDirty=!1),C||(C=gn()),Ci(C,this.relativeTarget)),b&&(this.animationValues=u,eUe(u,c,this.latestValues,T,k,w)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=T},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(i){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(ju(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=qr.update(()=>{Pw.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=Bp(0)),this.currentAnimation=NZ(this.motionValue,[0,1e3],{...i,velocity:0,isSync:!0,onUpdate:s=>{this.mixTargetDelta(s),i.onUpdate&&i.onUpdate(s)},onStop:()=>{},onComplete:()=>{i.onComplete&&i.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const i=this.getStack();i&&i.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(cUe),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const i=this.getLead();let{targetWithTransforms:s,target:l,layout:c,latestValues:u}=i;if(!(!s||!l||!c)){if(this!==i&&this.layout&&c&&jQ(this.options.animationType,this.layout.layoutBox,c.layoutBox)){l=this.target||gn();const d=Zo(this.layout.layoutBox.x);l.x.min=i.target.x.min,l.x.max=l.x.min+d;const h=Zo(this.layout.layoutBox.y);l.y.min=i.target.y.min,l.y.max=l.y.min+h}Ci(s,l),Am(s,u),by(this.projectionDeltaWithTransform,this.layoutCorrected,s,u)}}registerSharedNode(i,s){this.sharedNodes.has(i)||this.sharedNodes.set(i,new sUe),this.sharedNodes.get(i).add(s);const l=s.options.initialPromotionConfig;s.promote({transition:l?l.transition:void 0,preserveFollowOpacity:l&&l.shouldPreserveFollowOpacity?l.shouldPreserveFollowOpacity(s):void 0})}isLead(){const i=this.getStack();return i?i.lead===this:!0}getLead(){const{layoutId:i}=this.options;return i?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:i}=this.options;return i?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:i}=this.options;if(i)return this.root.sharedNodes.get(i)}promote({needsReset:i,transition:s,preserveFollowOpacity:l}={}){const c=this.getStack();c&&c.promote(this,l),i&&(this.projectionDelta=void 0,this.needsReset=!0),s&&this.setOptions({transition:s})}relegate(){const i=this.getStack();return i?i.relegate(this):!1}resetSkewAndRotation(){const{visualElement:i}=this.options;if(!i)return;let s=!1;const{latestValues:l}=i;if((l.z||l.rotate||l.rotateX||l.rotateY||l.rotateZ||l.skewX||l.skewY)&&(s=!0),!s)return;const c={};l.z&&hT("z",i,c,this.animationValues);for(let u=0;ui.currentAnimation?.stop()),this.root.nodes.forEach(NQ),this.root.sharedNodes.clear()}}}function dUe(e){e.updateLayout()}function pUe(e){const r=e.resumeFrom?.snapshot||e.snapshot;if(e.isLead()&&e.layout&&r&&e.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:o}=e.layout,{animationType:a}=e.options,i=r.source!==e.layout.source;a==="size"?Si(d=>{const h=i?r.measuredBox[d]:r.layoutBox[d],f=Zo(h);h.min=n[d].min,h.max=h.min+f}):jQ(a,r.layoutBox,n)&&Si(d=>{const h=i?r.measuredBox[d]:r.layoutBox[d],f=Zo(n[d]);h.max=h.min+f,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[d].max=e.relativeTarget[d].min+f)});const s=Nm();by(s,n,r.layoutBox);const l=Nm();i?by(l,e.applyTransform(o,!0),r.measuredBox):by(l,n,r.layoutBox);const c=!kQ(s);let u=!1;if(!e.resumeFrom){const d=e.getClosestProjectingParent();if(d&&!d.resumeFrom){const{snapshot:h,layout:f}=d;if(h&&f){const g=gn();vy(g,r.layoutBox,h.layoutBox);const b=gn();vy(b,n,f.layoutBox),SQ(g,b)||(u=!0),d.options.layoutRoot&&(e.relativeTarget=b,e.relativeTargetOrigin=g,e.relativeParent=d)}}}e.notifyListeners("didUpdate",{layout:n,snapshot:r,delta:l,layoutDelta:s,hasLayoutChanged:c,hasRelativeLayoutChanged:u})}else if(e.isLead()){const{onExitComplete:n}=e.options;n&&n()}e.options.transition=void 0}function hUe(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function fUe(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function mUe(e){e.clearSnapshot()}function NQ(e){e.clearMeasurements()}function DQ(e){e.isLayoutDirty=!1}function gUe(e){const{visualElement:r}=e.options;r&&r.getProps().onBeforeLayoutMeasure&&r.notify("BeforeLayoutMeasure"),e.resetTransform()}function $Q(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function yUe(e){e.resolveTargetDelta()}function bUe(e){e.calcProjection()}function vUe(e){e.resetSkewAndRotation()}function xUe(e){e.removeLeadSnapshot()}function MQ(e,r,n){e.translate=Zr(r.translate,0,n),e.scale=Zr(r.scale,1,n),e.origin=r.origin,e.originPoint=r.originPoint}function PQ(e,r,n,o){e.min=Zr(r.min,n.min,o),e.max=Zr(r.max,n.max,o)}function wUe(e,r,n,o){PQ(e.x,r.x,n.x,o),PQ(e.y,r.y,n.y,o)}function kUe(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const _Ue={duration:.45,ease:[.4,0,.1,1]},zQ=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),IQ=zQ("applewebkit/")&&!zQ("chrome/")?Math.round:ki;function OQ(e){e.min=IQ(e.min),e.max=IQ(e.max)}function EUe(e){OQ(e.x),OQ(e.y)}function jQ(e,r,n){return e==="position"||e==="preserve-aspect"&&!Mqe(CQ(r),CQ(n),.2)}function SUe(e){return e!==e.root&&e.scroll?.wasRoot}const CUe=RQ({attachResizeListener:(e,r)=>my(e,"resize",r),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),fT={current:void 0},LQ=RQ({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!fT.current){const e=new CUe({});e.mount(window),e.setOptions({layoutScroll:!0}),fT.current=e}return fT.current},resetTransform:(e,r)=>{e.style.transform=r!==void 0?r:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),TUe={pan:{Feature:Yqe},drag:{Feature:Wqe,ProjectionNode:LQ,MeasureLayout:uQ}};function BQ(e,r,n){const{props:o}=e;e.animationState&&o.whileHover&&e.animationState.setActive("whileHover",n==="Start");const a="onHover"+n,i=o[a];i&&qr.postRender(()=>i(r,gy(r)))}class AUe extends Fu{mount(){const{current:r}=this.node;r&&(this.unmount=NHe(r,(n,o)=>(BQ(this.node,o,"Start"),a=>BQ(this.node,a,"End"))))}unmount(){}}class RUe extends Fu{constructor(){super(...arguments),this.isActive=!1}onFocus(){let r=!1;try{r=this.node.current.matches(":focus-visible")}catch{r=!0}!r||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=ry(my(this.node.current,"focus",()=>this.onFocus()),my(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function FQ(e,r,n){const{props:o}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&o.whileTap&&e.animationState.setActive("whileTap",n==="Start");const a="onTap"+(n==="End"?"":n),i=o[a];i&&qr.postRender(()=>i(r,gy(r)))}class NUe extends Fu{mount(){const{current:r}=this.node;r&&(this.unmount=PHe(r,(n,o)=>(FQ(this.node,o,"Start"),(a,{success:i})=>FQ(this.node,a,i?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const mT=new WeakMap,gT=new WeakMap,DUe=e=>{const r=mT.get(e.target);r&&r(e)},$Ue=e=>{e.forEach(DUe)};function MUe({root:e,...r}){const n=e||document;gT.has(n)||gT.set(n,{});const o=gT.get(n),a=JSON.stringify(r);return o[a]||(o[a]=new IntersectionObserver($Ue,{root:e,...r})),o[a]}function PUe(e,r,n){const o=MUe(r);return mT.set(e,n),o.observe(e),()=>{mT.delete(e),o.unobserve(e)}}const zUe={some:0,all:1};class IUe extends Fu{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:r={}}=this.node.getProps(),{root:n,margin:o,amount:a="some",once:i}=r,s={root:n?n.current:void 0,rootMargin:o,threshold:typeof a=="number"?a:zUe[a]},l=c=>{const{isIntersecting:u}=c;if(this.isInView===u||(this.isInView=u,i&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:d,onViewportLeave:h}=this.node.getProps(),f=u?d:h;f&&f(c)};return PUe(this.node.current,s,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:r,prevProps:n}=this.node;["amount","margin","root"].some(OUe(r,n))&&this.startObserver()}unmount(){}}function OUe({viewport:e={}},{viewport:r={}}={}){return n=>e[n]!==r[n]}const jUe={inView:{Feature:IUe},tap:{Feature:NUe},focus:{Feature:RUe},hover:{Feature:AUe}},LUe={layout:{ProjectionNode:LQ,MeasureLayout:uQ}},BUe={renderer:mqe,...Tqe,...jUe},FUe={...BUe,...TUe,...LUe};function HQ(e){const r=Dm(()=>Bp(e)),{isStatic:n}=E.useContext(Hp);if(n){const[,o]=E.useState(e);E.useEffect(()=>r.on("change",o),[])}return r}function HUe(){!KC.current&&yZ();const[e]=E.useState(Ew.current);return e}function VQ(){const e=HUe(),{reducedMotion:r}=E.useContext(Hp);return r==="never"?!1:r==="always"?!0:e}class VUe{constructor(){this.componentControls=new Set}subscribe(r){return this.componentControls.add(r),()=>this.componentControls.delete(r)}start(r,n){this.componentControls.forEach(o=>{o.start(r.nativeEvent||r,n)})}cancel(){this.componentControls.forEach(r=>{r.cancel()})}stop(){this.componentControls.forEach(r=>{r.stop()})}}const qUe=()=>new VUe;function UUe(){return Dm(qUe)}const yT=E.createContext(null);yT.displayName="ElementDetailsActorContext";const WUe=()=>{const e=E.useContext(yT);if(e===null)throw new Error("ElementDetailsActorRef is not provided");return e},ks=(e,r,n)=>{const o=a=>({[e]:"__ignore__",...r,...np(a)});return{recipeFn:(a,i=!0)=>{const s=_F({conditions:{shift:AF,finalize:TF,breakpoints:{keys:["base","xs","sm","md","lg","xl"]}},utility:{toHash:(c,u)=>u(c.join(":")),transform:(c,u)=>(bEe(e,n,a,c),u==="__ignore__"?{className:e}:(u=PE(u),{className:`${e}--${c}_${u}`}))}}),l=o(a);if(i){const c=BE(n,l);return et(s(l),be(c))}return s(l)},getVariantProps:o,__getCompoundVariantCss__:a=>BE(n,o(a))}},wc=(e,r)=>{if(e&&!r)return e;if(!e&&r)return r;const n=(...i)=>et(e(...i),r(...i)),o=jE(e.variantKeys,r.variantKeys),a=o.reduce((i,s)=>(i[s]=jE(e.variantMap[s],r.variantMap[s]),i),{});return Object.assign(n,{__recipe__:!0,__name__:`${e.__name__} ${r.__name__}`,raw:i=>i,variantKeys:o,variantMap:a,splitVariantProps(i){return oo(i,o)}})},bT=ks("action-btn",{size:"md",radius:"md",variant:"filled"},[]),qQ={variant:["transparent","filled"],size:["sm","md"],radius:["sm","md"]},UQ=Object.keys(qQ),zw=Object.assign(go(bT.recipeFn),{__recipe__:!0,__name__:"actionBtn",__getCompoundVariantCss__:bT.__getCompoundVariantCss__,raw:e=>e,variantKeys:UQ,variantMap:qQ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,UQ)},getVariantProps:bT.getVariantProps}),vT=ks("likec4-compound-node",{},[]),WQ={isTransparent:["false","true"],inverseColor:["true","false"],borderStyle:["solid","dashed","dotted","none"]},YQ=Object.keys(WQ),YUe=Object.assign(go(vT.recipeFn),{__recipe__:!0,__name__:"compoundNode",__getCompoundVariantCss__:vT.__getCompoundVariantCss__,raw:e=>e,variantKeys:YQ,variantMap:WQ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,YQ)},getVariantProps:vT.getVariantProps}),xT=ks("likec4-edge-action-btn",{},[]),GQ={},XQ=Object.keys(GQ),GUe=Object.assign(go(xT.recipeFn),{__recipe__:!0,__name__:"edgeActionBtn",__getCompoundVariantCss__:xT.__getCompoundVariantCss__,raw:e=>e,variantKeys:XQ,variantMap:GQ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,XQ)},getVariantProps:xT.getVariantProps}),wT=ks("likec4-element-node-data",{},[]),KQ={},ZQ=Object.keys(KQ),XUe=Object.assign(go(wT.recipeFn),{__recipe__:!0,__name__:"elementNodeData",__getCompoundVariantCss__:wT.__getCompoundVariantCss__,raw:e=>e,variantKeys:ZQ,variantMap:KQ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,ZQ)},getVariantProps:wT.getVariantProps}),kT=ks("likec4-element-shape",{},[]),QQ={shapetype:["html","svg"]},JQ=Object.keys(QQ),eJ=Object.assign(go(kT.recipeFn),{__recipe__:!0,__name__:"elementShapeRecipe",__getCompoundVariantCss__:kT.__getCompoundVariantCss__,raw:e=>e,variantKeys:JQ,variantMap:QQ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,JQ)},getVariantProps:kT.getVariantProps}),_T=ks("likec4-tag",{autoTextColor:!1},[]),tJ={autoTextColor:["false","true"]},rJ=Object.keys(tJ),KUe=Object.assign(go(_T.recipeFn),{__recipe__:!0,__name__:"likec4tag",__getCompoundVariantCss__:_T.__getCompoundVariantCss__,raw:e=>e,variantKeys:rJ,variantMap:tJ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,rJ)},getVariantProps:_T.getVariantProps}),ET=ks("likec4-markdown-block",{uselikec4palette:!1,value:"markdown"},[]),nJ={uselikec4palette:["true","false"],value:["markdown","plaintext"]},oJ=Object.keys(nJ),ZUe=Object.assign(go(ET.recipeFn),{__recipe__:!0,__name__:"markdownBlock",__getCompoundVariantCss__:ET.__getCompoundVariantCss__,raw:e=>e,variantKeys:oJ,variantMap:nJ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,oJ)},getVariantProps:ET.getVariantProps}),ST=ks("likec4-navigation-panel-icon",{variant:"default",type:"default"},[{type:"warning",variant:"filled",css:{backgroundColor:{base:"likec4.panel.action.warning.bg",_hover:"likec4.panel.action.warning.bg.hover"}}}]),aJ={variant:["default","filled"],type:["default","warning"]},iJ=Object.keys(aJ),CT=Object.assign(go(ST.recipeFn),{__recipe__:!0,__name__:"navigationPanelActionIcon",__getCompoundVariantCss__:ST.__getCompoundVariantCss__,raw:e=>e,variantKeys:iJ,variantMap:aJ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,iJ)},getVariantProps:ST.getVariantProps}),TT=ks("likec4-overlay",{fullscreen:!1,withBackdrop:!0},[]),sJ={fullscreen:["false","true"],withBackdrop:["false","true"]},lJ=Object.keys(sJ),QUe=Object.assign(go(TT.recipeFn),{__recipe__:!0,__name__:"overlay",__getCompoundVariantCss__:TT.__getCompoundVariantCss__,raw:e=>e,variantKeys:lJ,variantMap:sJ,merge(e){return wc(this,e)},splitVariantProps(e){return oo(e,lJ)},getVariantProps:TT.getVariantProps}),cJ={pointerEvents:"all",isStepEdge:!1,cursor:"default"},JUe=[],eWe=[["root","likec4-edge-label__root"],["stepNumber","likec4-edge-label__stepNumber"],["labelContents","likec4-edge-label__labelContents"],["labelText","likec4-edge-label__labelText"],["labelTechnology","likec4-edge-label__labelTechnology"]],tWe=eWe.map(([e,r])=>[e,ks(r,cJ,OE(JUe,e))]),rWe=go((e={})=>Object.fromEntries(tWe.map(([r,n])=>[r,n.recipeFn(e)]))),uJ=["pointerEvents","cursor","isStepEdge"],nWe=e=>({...cJ,...np(e)}),oWe=Object.assign(rWe,{__recipe__:!1,__name__:"edgeLabel",raw:e=>e,classNameMap:{},variantKeys:uJ,variantMap:{pointerEvents:["none","all"],cursor:["pointer","default"],isStepEdge:["false","true"]},splitVariantProps(e){return oo(e,uJ)},getVariantProps:nWe}),dJ={truncateLabel:!1},aWe=[],iWe=[["root","likec4-navlink__root"],["body","likec4-navlink__body"],["section","likec4-navlink__section"],["label","likec4-navlink__label"],["description","likec4-navlink__description"]],sWe=iWe.map(([e,r])=>[e,ks(r,dJ,OE(aWe,e))]),lWe=go((e={})=>Object.fromEntries(sWe.map(([r,n])=>[r,n.recipeFn(e)]))),pJ=["truncateLabel"],cWe=e=>({...dJ,...np(e)}),uWe=Object.assign(lWe,{__recipe__:!1,__name__:"navigationLink",raw:e=>e,classNameMap:{},variantKeys:pJ,variantMap:{truncateLabel:["true","false"]},splitVariantProps(e){return oo(e,pJ)},getVariantProps:cWe});function kt(e){const r=E.useRef(e);r.current=e;const n=E.useRef(null);return n.current==null&&(n.current=((...o)=>r.current?.(...o))),n.current}function hJ(){return Bf()}function Iw(e,r){return qt(kt(e),r??an)}function AT(){return Ar()}const dWe=e=>Math.round(e.transform[2]*100)/100;function pWe(){return qt(dWe)}const hWe=e=>e.transform[2]<.2;function fWe(){return qt(hWe)}const{abs:wy,cos:kc,sin:Pm,acos:mWe,atan2:ky,sqrt:Hu,pow:Ti}=Math;function _y(e){return e<0?-Ti(-e,.3333333333333333):Ti(e,.3333333333333333)}const fJ=Math.PI,Ow=2*fJ,Vu=fJ/2,gWe=1e-6,RT=Number.MAX_SAFE_INTEGER||9007199254740991,NT=Number.MIN_SAFE_INTEGER||-9007199254740991,yWe={x:0,y:0,z:0},Ye={Tvalues:[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Cvalues:[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],arcfn:function(e,r){const n=r(e);let o=n.x*n.x+n.y*n.y;return typeof n.z<"u"&&(o+=n.z*n.z),Hu(o)},compute:function(e,r,n){if(e===0)return r[0].t=0,r[0];const o=r.length-1;if(e===1)return r[o].t=1,r[o];const a=1-e;let i=r;if(o===0)return r[0].t=e,r[0];if(o===1){const l={x:a*i[0].x+e*i[1].x,y:a*i[0].y+e*i[1].y,t:e};return n&&(l.z=a*i[0].z+e*i[1].z),l}if(o<4){let l=a*a,c=e*e,u,d,h,f=0;o===2?(i=[i[0],i[1],i[2],yWe],u=l,d=a*e*2,h=c):o===3&&(u=l*a,d=l*e*3,h=a*c*3,f=e*c);const g={x:u*i[0].x+d*i[1].x+h*i[2].x+f*i[3].x,y:u*i[0].y+d*i[1].y+h*i[2].y+f*i[3].y,t:e};return n&&(g.z=u*i[0].z+d*i[1].z+h*i[2].z+f*i[3].z),g}const s=JSON.parse(JSON.stringify(r));for(;s.length>1;){for(let l=0;l1;a--,i--){const s=[];for(let l=0,c;l"u")e=.5;else if(e===0||e===1)return e;const n=Ti(e,r)+Ti(1-e,r),o=n-1;return wy(o/n)},projectionratio:function(e,r){if(r!==2&&r!==3)return!1;if(typeof e>"u")e=.5;else if(e===0||e===1)return e;const n=Ti(1-e,r),o=Ti(e,r)+n;return n/o},lli8:function(e,r,n,o,a,i,s,l){const c=(e*o-r*n)*(a-s)-(e-n)*(a*l-i*s),u=(e*o-r*n)*(i-l)-(r-o)*(a*l-i*s),d=(e-n)*(i-l)-(r-o)*(a-s);return d==0?!1:{x:c/d,y:u/d}},lli4:function(e,r,n,o){const a=e.x,i=e.y,s=r.x,l=r.y,c=n.x,u=n.y,d=o.x,h=o.y;return Ye.lli8(a,i,s,l,c,u,d,h)},lli:function(e,r){return Ye.lli4(e,e.c,r,r.c)},makeline:function(e,r){return new Qr(e.x,e.y,(e.x+r.x)/2,(e.y+r.y)/2,r.x,r.y)},findbbox:function(e){let r=RT,n=RT,o=NT,a=NT;return e.forEach(function(i){const s=i.bbox();r>s.x.min&&(r=s.x.min),n>s.y.min&&(n=s.y.min),o0&&(d.c1=c,d.c2=u,d.s1=e,d.s2=n,i.push(d))})}),i},makeshape:function(e,r,n){const o=r.points.length,a=e.points.length,i=Ye.makeline(r.points[o-1],e.points[0]),s=Ye.makeline(e.points[a-1],r.points[0]),l={startcap:i,forward:e,back:r,endcap:s,bbox:Ye.findbbox([i,e,r,s])};return l.intersections=function(c){return Ye.shapeintersections(l,l.bbox,c,c.bbox,n)},l},getminmax:function(e,r,n){if(!n)return{min:0,max:0};let o=RT,a=NT,i,s;n.indexOf(0)===-1&&(n=[0].concat(n)),n.indexOf(1)===-1&&n.push(1);for(let l=0,c=n.length;la&&(a=s[r]);return{min:o,mid:(o+a)/2,max:a,size:a-o}},align:function(e,r){const n=r.p1.x,o=r.p1.y,a=-ky(r.p2.y-o,r.p2.x-n),i=function(s){return{x:(s.x-n)*kc(a)-(s.y-o)*Pm(a),y:(s.x-n)*Pm(a)+(s.y-o)*kc(a)}};return e.map(i)},roots:function(e,r){r=r||{p1:{x:0,y:0},p2:{x:1,y:0}};const n=e.length-1,o=Ye.align(e,r),a=function(D){return 0<=D&&D<=1};if(n===2){const D=o[0].y,N=o[1].y,M=o[2].y,O=D-2*N+M;if(O!==0){const F=-Hu(N*N-D*M),L=-D+N,U=-(F+L)/O,P=-(-F+L)/O;return[U,P].filter(a)}else if(N!==M&&O===0)return[(2*N-M)/(2*N-2*M)].filter(a);return[]}const i=o[0].y,s=o[1].y,l=o[2].y,c=o[3].y;let u=-i+3*s-3*l+c,d=3*i-6*s+3*l,h=-3*i+3*s,f=i;if(Ye.approximately(u,0)){if(Ye.approximately(d,0))return Ye.approximately(h,0)?[]:[-f/h].filter(a);const D=Hu(h*h-4*d*f),N=2*d;return[(D-h)/N,(-h-D)/N].filter(a)}d/=u,h/=u,f/=u;const g=(3*h-d*d)/3,b=g/3,x=(2*d*d*d-9*d*h+27*f)/27,w=x/2,k=w*w+b*b*b;let C,_,T,A,R;if(k<0){const D=-g/3,N=D*D*D,M=Hu(N),O=-x/(2*M),F=O<-1?-1:O>1?1:O,L=mWe(F),U=_y(M),P=2*U;return T=P*kc(L/3)-d/3,A=P*kc((L+Ow)/3)-d/3,R=P*kc((L+2*Ow)/3)-d/3,[T,A,R].filter(a)}else{if(k===0)return C=w<0?_y(-w):-_y(w),T=2*C-d/3,A=-C-d/3,[T,A].filter(a);{const D=Hu(k);return C=_y(-w+D),_=_y(w+D),[C-_-d/3].filter(a)}}},droots:function(e){if(e.length===3){const r=e[0],n=e[1],o=e[2],a=r-2*n+o;if(a!==0){const i=-Hu(n*n-r*o),s=-r+n,l=-(i+s)/a,c=-(-i+s)/a;return[l,c]}else if(n!==o&&a===0)return[(2*n-o)/(2*(n-o))];return[]}if(e.length===2){const r=e[0],n=e[1];return r!==n?[r/(r-n)]:[]}return[]},curvature:function(e,r,n,o,a){let i,s,l,c,u=0,d=0;const h=Ye.compute(e,r),f=Ye.compute(e,n),g=h.x*h.x+h.y*h.y;if(o?(i=Hu(Ti(h.y*f.z-f.y*h.z,2)+Ti(h.z*f.x-f.z*h.x,2)+Ti(h.x*f.y-f.x*h.y,2)),s=Ti(g+h.z*h.z,3/2)):(i=h.x*f.y-h.y*f.x,s=Ti(g,3/2)),i===0||s===0)return{k:0,r:0};if(u=i/s,d=s/i,!a){const b=Ye.curvature(e-.001,r,n,o,!0).k,x=Ye.curvature(e+.001,r,n,o,!0).k;c=(x-u+(u-b))/2,l=(wy(x-u)+wy(u-b))/2}return{k:u,r:d,dk:c,adk:l}},inflections:function(e){if(e.length<4)return[];const r=Ye.align(e,{p1:e[0],p2:e.slice(-1)[0]}),n=r[2].x*r[1].y,o=r[3].x*r[1].y,a=r[1].x*r[2].y,i=r[3].x*r[2].y,s=18*(-3*n+2*o+3*a-i),l=18*(3*n-o-3*a),c=18*(a-n);if(Ye.approximately(s,0)){if(!Ye.approximately(l,0)){let f=-c/l;if(0<=f&&f<=1)return[f]}return[]}const u=2*s;if(Ye.approximately(u,0))return[];const d=l*l-4*s*c;if(d<0)return[];const h=Math.sqrt(d);return[(h-l)/u,-(l+h)/u].filter(function(f){return 0<=f&&f<=1})},bboxoverlap:function(e,r){const n=["x","y"],o=n.length;for(let a=0,i,s,l,c;a=c)return!1;return!0},expandbox:function(e,r){r.x.mine.x.max&&(e.x.max=r.x.max),r.y.max>e.y.max&&(e.y.max=r.y.max),r.z&&r.z.max>e.z.max&&(e.z.max=r.z.max),e.x.mid=(e.x.min+e.x.max)/2,e.y.mid=(e.y.min+e.y.max)/2,e.z&&(e.z.mid=(e.z.min+e.z.max)/2),e.x.size=e.x.max-e.x.min,e.y.size=e.y.max-e.y.min,e.z&&(e.z.size=e.z.max-e.z.min)},pairiteration:function(e,r,n){const o=e.bbox(),a=r.bbox(),i=1e5,s=n||.5;if(o.x.size+o.y.sizeR||R>D)&&(A+=Ow),A>D&&(N=D,D=A,A=N)):D4){if(arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");a=!0}}else if(i!==6&&i!==8&&i!==9&&i!==12&&arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");const s=this._3d=!a&&(i===9||i===12)||r&&r[0]&&typeof r[0].z<"u",l=this.points=[];for(let g=0,b=s?3:2;gg+Sy(b.y),0)"u"&&(a=.5),a===0)return new Qr(n,n,o);if(a===1)return new Qr(r,n,n);const i=Qr.getABC(2,r,n,o,a);return new Qr(r,i.A,o)}static cubicFromPoints(r,n,o,a,i){typeof a>"u"&&(a=.5);const s=Qr.getABC(3,r,n,o,a);typeof i>"u"&&(i=Ye.dist(n,s.C));const l=i*(1-a)/a,c=Ye.dist(r,o),u=(o.x-r.x)/c,d=(o.y-r.y)/c,h=i*u,f=i*d,g=l*u,b=l*d,x={x:n.x-h,y:n.y-f},w={x:n.x+g,y:n.y+b},k=s.A,C={x:k.x+(x.x-k.x)/(1-a),y:k.y+(x.y-k.y)/(1-a)},_={x:k.x+(w.x-k.x)/a,y:k.y+(w.y-k.y)/a},T={x:r.x+(C.x-r.x)/a,y:r.y+(C.y-r.y)/a},A={x:o.x+(_.x-o.x)/(1-a),y:o.y+(_.y-o.y)/(1-a)};return new Qr(r,T,A,o)}static getUtils(){return Ye}getUtils(){return Qr.getUtils()}static get PolyBezier(){return Ey}valueOf(){return this.toString()}toString(){return Ye.pointsToString(this.points)}toSVG(){if(this._3d)return!1;const r=this.points,n=r[0].x,o=r[0].y,a=["M",n,o,this.order===2?"Q":"C"];for(let i=1,s=r.length;i0}length(){return Ye.length(this.derivative.bind(this))}static getABC(r=2,n,o,a,i=.5){const s=Ye.projectionratio(i,r),l=1-s,c={x:s*n.x+l*a.x,y:s*n.y+l*a.y},u=Ye.abcratio(i,r);return{A:{x:o.x+(o.x-c.x)/u,y:o.y+(o.y-c.y)/u},B:o,C:c,S:n,E:a}}getABC(r,n){n=n||this.get(r);let o=this.points[0],a=this.points[this.order];return Qr.getABC(this.order,o,n,a,r)}getLUT(r){if(this.verify(),r=r||100,this._lut.length===r+1)return this._lut;this._lut=[],r++,this._lut=[];for(let n=0,o,a;n1?1:h,f=this.compute(h),f.t=h,f.d=u,f}get(r){return this.compute(r)}point(r){return this.points[r]}compute(r){return this.ratios?Ye.computeWithRatios(r,this.points,this.ratios,this._3d):Ye.compute(r,this.points,this._3d,this.ratios)}raise(){const r=this.points,n=[r[0]],o=r.length;for(let a=1,i,s;a1;){o=[];for(let s=0,l,c=n.length-1;s=0&&s<=1}),n=n.concat(r[o].sort(Ye.numberSort))}).bind(this)),r.values=n.sort(Ye.numberSort).filter(function(o,a){return n.indexOf(o)===a}),r}bbox(){const r=this.extrema(),n={};return this.dims.forEach((function(o){n[o]=Ye.getminmax(this,o,r[o])}).bind(this)),n}overlaps(r){const n=this.bbox(),o=r.bbox();return Ye.bboxoverlap(n,o)}offset(r,n){if(typeof n<"u"){const o=this.get(r),a=this.normal(r),i={c:o,n:a,x:o.x+a.x*n,y:o.y+a.y*n};return this._3d&&(i.z=o.z+a.z*n),i}if(this._linear){const o=this.normal(0),a=this.points.map(function(i){const s={x:i.x+r*o.x,y:i.y+r*o.y};return i.z&&o.z&&(s.z=i.z+r*o.z),s});return[new Qr(a)]}return this.reduce().map(function(o){return o._linear?o.offset(r)[0]:o.scale(r)})}simple(){if(this.order===3){const a=Ye.angle(this.points[0],this.points[3],this.points[1]),i=Ye.angle(this.points[0],this.points[3],this.points[2]);if(a>0&&i<0||a<0&&i>0)return!1}const r=this.normal(0),n=this.normal(1);let o=r.x*n.x+r.y*n.y;return this._3d&&(o+=r.z*n.z),Sy(xWe(o))(1-l/a)*n+l/a*o);return new Qr(this.points.map((s,l)=>({x:s.x+r.x*i[l],y:s.y+r.y*i[l]})))}scale(r){const n=this.order;let o=!1;if(typeof r=="function"&&(o=r),o&&n===2)return this.raise().scale(o);const a=this.clockwise,i=this.points;if(this._linear)return this.translate(this.normal(0),o?o(0):r,o?o(1):r);const s=o?o(0):r,l=o?o(1):r,c=[this.offset(0,10),this.offset(1,10)],u=[],d=Ye.lli4(c[0],c[0].c,c[1],c[1].c);if(!d)throw new Error("cannot scale this curve. Try reducing it first.");return[0,1].forEach(function(h){const f=u[h*n]=Ye.copy(i[h*n]);f.x+=(h?l:s)*c[h].n.x,f.y+=(h?l:s)*c[h].n.y}),o?([0,1].forEach(function(h){if(!(n===2&&h)){var f=i[h+1],g={x:f.x-d.x,y:f.y-d.y},b=o?o((h+1)/n):r;o&&!a&&(b=-b);var x=Cy(g.x*g.x+g.y*g.y);g.x/=x,g.y/=x,u[h+1]={x:f.x+b*g.x,y:f.y+b*g.y}}}),new Qr(u)):([0,1].forEach(h=>{if(n===2&&h)return;const f=u[h*n],g=this.derivative(h),b={x:f.x+g.x,y:f.y+g.y};u[h+1]=Ye.lli4(f,b,d,i[h+1])}),new Qr(u))}outline(r,n,o,a){if(n=n===void 0?r:n,this._linear){const A=this.normal(0),R=this.points[0],D=this.points[this.points.length-1];let N,M,O;o===void 0&&(o=r,a=n),N={x:R.x+A.x*r,y:R.y+A.y*r},O={x:D.x+A.x*o,y:D.y+A.y*o},M={x:(N.x+O.x)/2,y:(N.y+O.y)/2};const F=[N,M,O];N={x:R.x-A.x*n,y:R.y-A.y*n},O={x:D.x-A.x*a,y:D.y-A.y*a},M={x:(N.x+O.x)/2,y:(N.y+O.y)/2};const L=[O,M,N],U=Ye.makeline(L[2],F[0]),P=Ye.makeline(F[2],L[0]),V=[U,new Qr(F),P,new Qr(L)];return new Ey(V)}const i=this.reduce(),s=i.length,l=[];let c=[],u,d=0,h=this.length();const f=typeof o<"u"&&typeof a<"u";function g(A,R,D,N,M){return function(O){const F=N/D,L=(N+M)/D,U=R-A;return Ye.map(O,0,1,A+F*U,A+L*U)}}i.forEach(function(A){const R=A.length();f?(l.push(A.scale(g(r,o,h,d,R))),c.push(A.scale(g(-n,-a,h,d,R)))):(l.push(A.scale(r)),c.push(A.scale(-n))),d+=R}),c=c.map(function(A){return u=A.points,u[3]?A.points=[u[3],u[2],u[1],u[0]]:A.points=[u[2],u[1],u[0]],A}).reverse();const b=l[0].points[0],x=l[s-1].points[l[s-1].points.length-1],w=c[s-1].points[c[s-1].points.length-1],k=c[0].points[0],C=Ye.makeline(w,b),_=Ye.makeline(x,k),T=[C].concat(l).concat([_]).concat(c);return new Ey(T)}outlineshapes(r,n,o){n=n||r;const a=this.outline(r,n).curves,i=[];for(let s=1,l=a.length;s1,c.endcap.virtual=s{var l=this.get(s);return Ye.between(l.x,n,a)&&Ye.between(l.y,o,i)})}selfintersects(r){const n=this.reduce(),o=n.length-2,a=[];for(let i=0,s,l,c;i0&&(i=i.concat(l))}),i}arcs(r){return r=r||.5,this._iterate(r,[])}_error(r,n,o,a){const i=(a-o)/4,s=this.get(o+i),l=this.get(a-i),c=Ye.dist(r,n),u=Ye.dist(r,s),d=Ye.dist(r,l);return Sy(u-c)+Sy(d-c)}_iterate(r,n){let o=0,a=1,i;do{i=0,a=1;let s=this.get(o),l,c,u,d,h=!1,f=!1,g,b=a,x=1;do if(f=h,d=u,b=(o+a)/2,l=this.get(b),c=this.get(a),u=Ye.getccenter(s,l,c),u.interval={start:o,end:a},h=this._error(u,s,o,a)<=r,g=f&&!h,g||(x=a),h){if(a>=1){if(u.interval.end=x=1,d=u,a>1){let w={x:u.x+u.r*bWe(u.e),y:u.y+u.r*vWe(u.e)};u.e+=Ye.angle({x:u.x,y:u.y},w,this.get(1))}break}a=a+(a-o)/2}else a=b;while(!g&&i++<100);if(i>=100)break;d=d||u,n.push(d),o=x}while(a<1);return n}}class Ai{constructor(r,n){this.x=r,this.y=n}static create(...r){return r.length===2?new Ai(r[0],r[1]):new Ai(r[0].x,r[0].y)}static add(r,n){return{x:r.x+n.x,y:r.y+n.y}}static subtract(r,n){return{x:r.x-n.x,y:r.y-n.y}}static multiply(r,n){return{x:r.x*n,y:r.y*n}}static dot(r,n){return r.x*n.x+r.y*n.y}add(r){return new Ai(this.x+r.x,this.y+r.y)}subtract(r){return new Ai(this.x-r.x,this.y-r.y)}multiply(r){return new Ai(this.x*r,this.y*r)}dot(r){return this.x*r.x+this.y*r.y}cross(r){return new Ai(this.y*r.x-this.x*r.y,this.x*r.y-this.y*r.x)}length(){return this.x===0&&this.y===0?0:Math.sqrt(this.x**2+this.y**2)}normalize(){const r=this.length();return r===0?new Ai(0,0):new Ai(this.x/r,this.y/r)}}function jo(...e){return e.length===1&&e[0]instanceof Ai?e[0]:e.length===2?new Ai(e[0],e[1]):new Ai(e[0].x,e[0].y)}function yJ(e){const r={internals:{positionAbsolute:e.internals.positionAbsolute}};return e.measured&&(r.measured=e.measured),_u(e.width)&&(r.width=e.width),_u(e.height)&&(r.height=e.height),_u(e.initialWidth)&&(r.initialWidth=e.initialWidth),_u(e.initialHeight)&&(r.initialHeight=e.initialHeight),r}function bJ(e,r){const n=e.internals.positionAbsolute,o=r.internals.positionAbsolute;if(n.x!==o.x||n.y!==o.y)return!1;const a=e.measured?.width??e.width??e.initialWidth??0,i=r.measured?.width??r.width??r.initialWidth??0;if(a!==i)return!1;const s=e.measured?.height??e.height??e.initialHeight??0,l=r.measured?.height??r.height??r.initialHeight??0;return s===l}function Ty(e){const{width:r,height:n}=ao(e),{x:o,y:a}=e.internals.positionAbsolute;return{x:o+r/2,y:a+n/2}}function Ay(e,r,n=0){const o=Ty(e),{width:a,height:i}=ao(e),s=jo(r.x,r.y).subtract(o),l=(n+(a||0)/2)/s.x,c=(n+(i||0)/2)/s.y,u=Math.min(Math.abs(l),Math.abs(c));return jo(s).multiply(u).add(o)}function vJ(e,r){return Ay(e,Ty(r))}function jw(e){let[r,...n]=e;at(r,"start should be defined");const o=[];for(;bo(n,3);){const[a,i,s,...l]=n,c=new Qr(r[0],r[1],a[0],a[1],i[0],i[1],s[0],s[1]),u=c.inflections();u.length===0&&u.push(.5),u.forEach(d=>{const{x:h,y:f}=c.get(d);o.push({x:Math.round(h),y:Math.round(f)})}),n=l,r=s}return at(n.length===0,"all points should be consumed"),o}const xJ=(e,r)=>Math.abs(e-r)<3.1;function wJ(e,r){const[n,o]=P9(e)?e:[e.x,e.y],[a,i]=P9(r)?r:[r.x,r.y];return xJ(n,a)&&xJ(o,i)}function Cn(e){return e.stopPropagation()}function kWe(e){let[r,...n]=e;at(r,"start should be defined");let o=`M ${r[0]},${r[1]}`;for(;bo(n,3);){const[a,i,s,...l]=n;o=o+` C ${a[0]},${a[1]} ${i[0]},${i[1]} ${s[0]},${s[1]}`,n=l}return at(n.length===0,"all points should be consumed"),o}const Lw=E.forwardRef(({tag:e,cursor:r,className:n,style:o,...a},i)=>{const s=iLe(e);return y.jsxs(zr,{ref:i,"data-likec4-tag":e,className:et(KUe({autoTextColor:OB(s)}),n),...a,style:{cursor:r,...o},children:[y.jsx("span",{children:"#"}),y.jsx("span",{children:e})]})}),_We=(e,r)=>e.data.width===r.data.width&<(e.data.tags,r.data.tags)&&(e.data.hovered??!1)===(r.data.hovered??!1),Ry=E.memo(({id:e,data:{tags:r,width:n,hovered:o=!1}})=>{const{hovered:a,ref:i}=X9(),{hovered:s,ref:l}=X9(),[c,u]=ZDe(!1,o?120:300);E.useEffect(()=>{u(w=>w?o||a||s:o&&(a||s))},[a,s,o]);const d=pWe(),h=d>1.2,f=Qt(),g=w=>{f.send({type:"tag.highlight",tag:w})},b=E.useCallback(()=>{f.send({type:"tag.unhighlight"})},[]);if(!r||r.length===0)return null;const x=Math.max(Math.round(n*d)-10,200);return y.jsxs(y.Fragment,{children:[y.jsx("div",{ref:i,className:et("likec4-element-tags",Zn({pointerEvents:"all",gap:"1",alignItems:"flex-end",justifyItems:"stretch",position:"absolute",width:"100%",bottom:"0",left:"0",padding:"1",_shapeCylinder:{bottom:"[5px]"},_shapeStorage:{bottom:"[5px]"},_shapeQueue:{bottom:"0",paddingLeft:"[14px]"}})),onClick:Cn,children:r.map(w=>y.jsx(zr,{"data-likec4-tag":w,className:be({layerStyle:"likec4.tag",flex:"1",display:"flex",alignItems:"center",justifyContent:"center",maxWidth:50,height:5,_whenHovered:{height:12,borderRadius:4,transitionDelay:".08s"},transition:"fast"})},e+"#"+w))}),y.jsx(D9,{isVisible:c,align:"start",position:tt.Bottom,children:y.jsx(sn,{ref:l,css:{gap:"0.5",alignItems:"baseline",flexWrap:"wrap",pb:"sm",translate:"auto",x:"[-8px]",maxWidth:x},children:r.map(w=>y.jsx(Lw,{tag:w,cursor:"pointer",className:be({userSelect:"none",...h&&{fontSize:"lg",borderRadius:"[4px]",px:"1.5"}}),onClick:k=>{k.stopPropagation(),f.openSearch(`#${w}`)},onMouseEnter:()=>g(w),onMouseLeave:b},w))})})]})},_We);Ry.displayName="ElementTags";const EWe=E.forwardRef((e,r)=>y.jsx("svg",{height:"24",width:"24",fill:"currentColor",...e,viewBox:"0 0 24 24",ref:r,children:y.jsx("path",{d:"M12 1C5.923 1 1 5.923 1 12c0 4.867 3.149 8.979 7.521 10.436.55.096.756-.233.756-.522 0-.262-.013-1.128-.013-2.049-2.764.509-3.479-.674-3.699-1.292-.124-.317-.66-1.293-1.127-1.554-.385-.207-.936-.715-.014-.729.866-.014 1.485.797 1.691 1.128.99 1.663 2.571 1.196 3.204.907.096-.715.385-1.196.701-1.471-2.448-.275-5.005-1.224-5.005-5.432 0-1.196.426-2.186 1.128-2.956-.111-.275-.496-1.402.11-2.915 0 0 .921-.288 3.024 1.128a10.193 10.193 0 0 1 2.75-.371c.936 0 1.871.123 2.75.371 2.104-1.43 3.025-1.128 3.025-1.128.605 1.513.221 2.64.111 2.915.701.77 1.127 1.747 1.127 2.956 0 4.222-2.571 5.157-5.019 5.432.399.344.743 1.004.743 2.035 0 1.471-.014 2.654-.014 3.025 0 .289.206.632.756.522C19.851 20.979 23 16.854 23 12c0-6.077-4.922-11-11-11Z"})})),SWe=[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]],kJ=Nt("outline","check","Check",SWe),CWe=[["path",{d:"M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z",key:"svg-0"}],["path",{d:"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1",key:"svg-1"}]],TWe=Nt("outline","copy","Copy",CWe),_J="https://github.com/",DT=E.forwardRef(({value:e,className:r,...n},o)=>{const a=e.url.includes("://")?e.url:new window.URL(e.url,window.location.href).toString();let i=a.startsWith(_J);return y.jsx(vl,{ref:o,variant:"default",radius:"sm",size:"sm",tt:"none",leftSection:e.title?y.jsx(y.Fragment,{children:e.title}):null,rightSection:y.jsx(GY,{value:a,timeout:1500,children:({copy:s,copied:l})=>y.jsx(br,{className:be({opacity:l?1:.45,transition:"fast",_hover:{opacity:1}}),tabIndex:-1,size:"20",variant:l?"light":"transparent",color:l?"teal":"gray","data-active":l,onClick:c=>{c.stopPropagation(),c.preventDefault(),s()},children:l?y.jsx(kJ,{}):y.jsx(TWe,{stroke:2.5})})}),...n,className:et(r,"group"),classNames:{root:be({flexWrap:"nowrap",minHeight:24,maxWidth:500,userSelect:"all",pr:"0",backgroundColor:{base:"transparent",_hover:{base:"mantine.colors.gray[1]",_dark:"mantine.colors.dark[5]"}}}),section:be({'&:is([data-position="left"])':{color:"mantine.colors.dimmed",userSelect:"none",pointerEvents:"none",_groupHover:{color:"[var(--badge-color)]",opacity:.7}}})},children:y.jsxs(Iu.a,{href:a,target:"_blank",style:{color:"var(--badge-color)",cursor:"pointer"},css:{transition:"fast",opacity:{base:.7,_hover:1},textDecoration:{base:"none",_hover:"underline"}},children:[i&&y.jsx(EWe,{height:"12",width:"12",style:{verticalAlign:"middle",marginRight:"4px"}}),i?a.replace(_J,""):a]})})});function AWe(){return E.useContext(ES)}function RWe(){const e=E.useContext(ES);if(!e)throw new Error("No LikeC4ViewModel in context found");return e}const Bw="--_blur",Fw="--_opacity",NWe=be({boxSizing:"border-box",margin:"0",padding:"0",position:"fixed",inset:"0",width:"100vw",height:"100vh",maxWidth:"100vw",maxHeight:"100vh",background:"transparent",border:"transparent",_backdrop:{backdropFilter:"auto",backdropBlur:`var(${Bw})`,backgroundColor:`[rgb(36 36 36 / var(${Fw}, 5%))]`}}),DWe=be({position:"absolute",pointerEvents:"all",display:"flex",flexDirection:"column",padding:"4",gap:"lg",justifyContent:"stretch",color:"mantine.colors.text",backgroundColor:{base:"mantine.colors.body",_dark:"mantine.colors.dark[6]"},boxShadow:"md",overflow:"hidden",border:"none",backgroundImage:` + linear-gradient(180deg, + color-mix(in srgb, var(--likec4-palette-fill) 60%, transparent), + color-mix(in srgb, var(--likec4-palette-fill) 20%, transparent) 8px, + color-mix(in srgb, var(--likec4-palette-fill) 14%, transparent) 20px, + transparent 80px + ), + linear-gradient(180deg, var(--likec4-palette-fill), var(--likec4-palette-fill) 4px, transparent 4px) + `,"& .react-flow__attribution":{display:"none"}}),$We=be({flex:0,cursor:"move"}),MWe=be({display:"block",fontFamily:"likec4.element",fontOpticalSizing:"auto",fontStyle:"normal",fontWeight:600,fontSize:"24px",lineHeight:"xs"}),$T="40px",PWe=be({flex:`0 0 ${$T}`,height:$T,width:$T,display:"flex",alignItems:"center",justifyContent:"center",alignSelf:"flex-start",cursor:"move",_dark:{mixBlendMode:"hard-light"},"& :where(svg, img)":{width:"100%",height:"auto",maxHeight:"100%",pointerEvents:"none",filter:` + drop-shadow(0 0 3px rgb(0 0 0 / 10%)) + drop-shadow(0 1px 8px rgb(0 0 0 / 5%)) + drop-shadow(1px 1px 16px rgb(0 0 0 / 2%)) + `},"& img":{objectFit:"contain"}}),Hw="--view-title-color",Vw="--icon-color",zWe=be({width:"100%",background:"mantine.colors.body",borderRadius:"sm",padding:"[10px 8px]",transition:"fast",border:"1px dashed",borderColor:"mantine.colors.defaultBorder",[Hw]:"{colors.mantine.colors.dark[1]}",_hover:{background:"mantine.colors.defaultHover",[Vw]:"{colors.mantine.colors.dark[1]}",[Hw]:"{colors.mantine.colors.defaultColor}"},_dark:{background:"mantine.colors.dark[6]"},_light:{[Vw]:"{colors.mantine.colors.gray[6]}",[Hw]:"{colors.mantine.colors.gray[7]}",_hover:{[Vw]:"{colors.mantine.colors.gray[7]}"}},"& .mantine-ThemeIcon-root":{transition:"fast",color:`[var(${Vw}, {colors.mantine.colors.dark[2]})]`,"--ti-size":"22px",_hover:{color:"mantine.colors.defaultColor"}},"& > *":{transition:"all 130ms {easings.inOut}"},"&:hover > *":{transitionTimingFunction:"out",transform:"translateX(1.6px)"}}),IWe=be({transition:"fast",color:`[var(${Hw}, {colors.mantine.colors.gray[7]})]`,fontSize:"15px",fontWeight:500,lineHeight:"1.4"}),OWe=be({flex:1,display:"flex",flexDirection:"column",justifyContent:"stretch",overflow:"hidden",gap:"sm"}),jWe=be({background:"mantine.colors.gray[1]",borderRadius:"sm",flexWrap:"nowrap",gap:"1.5",padding:"1",_dark:{background:"mantine.colors.dark[7]"}}),LWe=be({fontSize:"xs",fontWeight:500,flexGrow:1,padding:"[6px 8px]",transition:"fast",borderRadius:"sm",color:"mantine.colors.gray[7]",_hover:{transitionTimingFunction:"out",color:"mantine.colors.defaultColor",background:"mantine.colors.gray[3]"},"&[data-active]":{transition:"none",background:"mantine.colors.white",shadow:"xs",color:"mantine.colors.defaultColor"},_dark:{color:"mantine.colors.dark[1]",_hover:{color:"mantine.colors.white",background:"mantine.colors.dark[6]"},"&:is([data-active])":{color:"mantine.colors.white",background:"mantine.colors.dark[5]"}}}),BWe=be({flex:1,overflow:"hidden",position:"relative","&:not(:has(.mantine-ScrollArea-root))":{paddingLeft:"1",paddingRight:"1"},"& .mantine-ScrollArea-root":{width:"100%",height:"100%","& > div":{paddingLeft:"1",paddingRight:"1"}}}),FWe=be({flex:1,display:"grid",gridTemplateColumns:"min-content 1fr",gridAutoRows:"min-content max-content",gap:"[24px 20px]",alignItems:"baseline",justifyItems:"stretch"}),HWe=be({justifySelf:"end",textAlign:"right",userSelect:"none"}),VWe=be({position:"absolute",width:"14px",height:"14px",border:"3.5px solid",borderColor:"mantine.colors.dark[3]",borderTop:"none",borderLeft:"none",borderRadius:"2px",bottom:"0.5",right:"0.5",transition:"fast",cursor:"se-resize",_hover:{borderWidth:"4px",borderColor:"mantine.colors.dark[1]"}}),qWe=[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]],MT=Nt("outline","chevron-down","ChevronDown",qWe),UWe=[["path",{d:"M9 6l6 6l-6 6",key:"svg-0"}]],qu=Nt("outline","chevron-right","ChevronRight",UWe);function EJ({children:e}){return y.jsx(y.Fragment,{children:e})}function SJ({value:e,isExpanded:r}){const[n,o]=E.useState(!1),a=E.useRef(null);return E.useEffect(()=>{a.current&&o(a.current.scrollWidth>a.current.clientWidth)},[e]),y.jsx(co,{label:n&&!r?e:null,multiline:!0,w:300,withinPortal:!0,children:y.jsx(ft,{ref:a,component:"div",className:be({fontSize:"sm",padding:"xs",userSelect:"all",color:"mantine.colors.text",lineHeight:1.4,whiteSpace:r?"pre-wrap":"nowrap",overflow:r?"visible":"hidden",textOverflow:r?"unset":"ellipsis",wordBreak:r?"break-word":"normal",minWidth:0,width:"100%"}),children:e})})}function WWe({values:e,isExpanded:r,onToggle:n}){return r?y.jsx(Xo,{gap:"xs",children:e.map((o,a)=>y.jsxs(mc,{align:"center",gap:"xs",children:[y.jsx(ft,{className:be({fontSize:"xs",color:"mantine.colors.gray[5]",fontWeight:500,flexShrink:0,_dark:{color:"mantine.colors.dark[3]"}}),children:"•"}),y.jsx(Re,{className:be({minHeight:"32px",display:"flex",alignItems:"center",flex:1}),children:y.jsx(SJ,{value:o,isExpanded:!0})})]},a))}):y.jsx(Re,{className:be({minHeight:"32px",display:"flex",alignItems:"center",padding:"xs",gap:"xs",flexWrap:"wrap",minWidth:0,overflow:"hidden"}),children:e.map((o,a)=>y.jsxs(mc,{align:"center",gap:"xs",style:{minWidth:0},children:[y.jsx(ft,{className:be({fontSize:"sm",padding:"[4px 8px]",backgroundColor:"mantine.colors.white",color:"mantine.colors.text",borderRadius:"sm",border:"1px solid",borderColor:"mantine.colors.gray[3]",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"min(200px, 100%)",minWidth:"60px",flex:"0 1 auto",userSelect:"all",_dark:{backgroundColor:"mantine.colors.dark[9]",color:"mantine.colors.text",borderColor:"mantine.colors.dark[4]"}}),title:o,children:o}),al.trim()).filter(Boolean):[r],o=n.length>1,[a,i]=E.useState(!1),s=()=>{i(!a)};return y.jsxs(y.Fragment,{children:[o?y.jsx(Er,{onClick:s,className:be({fontSize:"xs",color:"mantine.colors.dimmed",justifySelf:"end",textAlign:"right",userSelect:"none",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"xs",padding:"[4px 8px]",borderRadius:"sm",whiteSpace:"nowrap",transition:"all 150ms ease",_hover:{backgroundColor:"mantine.colors.gray[1]",color:"mantine.colors.primary[6]",_dark:{backgroundColor:"mantine.colors.dark[7]",color:"mantine.colors.primary[4]"}}}),children:y.jsxs(mc,{align:"center",gap:"xs",children:[y.jsxs(ft,{component:"span",size:"xs",fw:700,children:[e,":"]}),y.jsx(ft,{component:"span",className:be({fontSize:"xs",fontWeight:500,color:"mantine.colors.gray[6]",backgroundColor:"mantine.colors.gray[1]",padding:"[1px 4px]",borderRadius:"xs",_dark:{color:"mantine.colors.dark[2]",backgroundColor:"mantine.colors.dark[6]"}}),children:n.length}),a?y.jsx(MT,{size:12}):y.jsx(qu,{size:12})]})}):y.jsxs(ft,{component:"div",className:be({fontSize:"xs",color:"mantine.colors.dimmed",justifySelf:"end",textAlign:"right",userSelect:"none",whiteSpace:"nowrap",padding:"[4px 8px]",fontWeight:700}),children:[e,":"]}),y.jsx(Re,{className:be({justifySelf:"stretch",alignSelf:"start"}),children:o?y.jsx(WWe,{values:n,isExpanded:a,onToggle:s}):y.jsx(Re,{className:be({minHeight:"32px",display:"flex",alignItems:"center"}),children:y.jsx(SJ,{value:n[0]||"",isExpanded:a})})})]})}const GWe=be({"&[data-level='1']":{marginBottom:"sm"}}),XWe=be({cursor:"default",marginTop:"0",marginBottom:"0"}),CJ=be({transition:"fast",color:"mantine.colors.gray[7]",_dark:{color:"mantine.colors.dark[1]"},"& > *":{transition:"fast"},_hover:{transitionTimingFunction:"out","& > :not([data-no-transform])":{transitionTimingFunction:"out",transform:"translateX(1px)"}}}),KWe=et(CJ),ZWe=et(CJ,be({cursor:"pointer",width:"100%",justifyContent:"stretch",flexWrap:"nowrap",height:"36px",paddingInlineStart:"[16px]",paddingInlineEnd:"2.5",borderRadius:"sm",alignItems:"center",color:"mantine.colors.gray[7]",_dark:{color:"mantine.colors.gray.lightColor"},_hover:{background:"mantine.colors.gray.lightHover"},"& .tabler-icon":{transition:"fast",width:"90%",opacity:.65}})),QWe=[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 9h.01",key:"svg-1"}],["path",{d:"M11 12h1v4h1",key:"svg-2"}]],PT=Nt("outline","info-circle","InfoCircle",QWe),JWe=[["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-5 0a5 5 0 1 0 10 0a5 5 0 1 0 -10 0",key:"svg-1"}],["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-2"}]],eYe=Nt("outline","target","Target",JWe),tYe=[["path",{d:"M4 8v-2a2 2 0 0 1 2 -2h2",key:"svg-0"}],["path",{d:"M4 16v2a2 2 0 0 0 2 2h2",key:"svg-1"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v2",key:"svg-2"}],["path",{d:"M16 20h2a2 2 0 0 0 2 -2v-2",key:"svg-3"}],["path",{d:"M8 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-4"}],["path",{d:"M16 16l-2.5 -2.5",key:"svg-5"}]],Ri=Nt("outline","zoom-scan","ZoomScan",tYe),rYe=({node:e})=>y.jsxs(pn,{className:KWe,gap:6,align:"baseline",wrap:"nowrap",children:[y.jsxs(ft,{component:"div",fz:11,c:"dimmed",children:[e.kind,":"]}),y.jsx(ft,{component:"div",fz:"sm",fw:"500",children:e.title})]}),nYe=({instance:e})=>{const r=Qt(),n=r.currentView.id,o=[...e.views()];return y.jsxs(pn,{className:ZWe,gap:4,children:[y.jsx(Ba,{color:"gray",variant:"transparent",size:"xs",flex:0,children:y.jsx(eYe,{stroke:1.2})}),y.jsx(ft,{component:"div",fz:"sm",fw:"500",flex:"1 1 100%",children:e.title}),y.jsxs(Re,{onClick:Cn,pos:"relative","data-no-transform":!0,flex:0,children:[o.length===0&&y.jsx(Kn,{size:"compact-xs",variant:"transparent",color:"gray",disabled:!0,children:"no views"}),o.length>0&&y.jsxs(hn,{shadow:"md",withinPortal:!1,position:"bottom-start",offset:0,closeOnClickOutside:!0,clickOutsideEvents:["pointerdown","mousedown","click"],closeOnEscape:!0,trapFocus:!0,children:[y.jsx(hn.Target,{children:y.jsxs(Kn,{size:"compact-xs",variant:"subtle",color:"gray",children:[o.length," view",o.length>1?"s":""]})}),y.jsx(hn.Dropdown,{children:o.map(a=>y.jsx(hn.Item,{px:"xs",py:4,disabled:a.id===n,leftSection:y.jsx(Ba,{size:"sm",variant:"transparent",color:"gray",children:y.jsx(Ri,{stroke:1.8,opacity:.65})}),styles:{itemSection:{marginInlineEnd:Me(8)}},onClick:i=>{i.stopPropagation(),r.navigateTo(a.id)},children:a.title},a.id))})]})]})]})},oYe=()=>{},aYe=E.memo(({elementFqn:e})=>{const r=Ko().element(e),n=[...r.deployments()],o=G0({multiple:!1});o.setHoveredNode=oYe;const a=E.useMemo(()=>{let i=[],s=new Map;for(const l of r.deployments()){let c={label:y.jsx(nYe,{instance:l}),value:l.id,type:"instance",children:[]};s.set(l.id,c);let u=l.parent;for(;u;){let d=s.get(u.id);if(d){d.children.push(c);break}d={label:y.jsx(rYe,{node:u}),value:u.id,type:"node",children:[c]},s.set(u.id,d),c=d,u=u.parent}!u&&!i.includes(c)&&i.push(c)}return i},[r]);return E.useEffect(()=>{o.expandAllNodes()},[a]),n.length===0?y.jsx(F2,{variant:"light",color:"gray",icon:y.jsx(PT,{}),children:"This element does not have any deployments"}):y.jsx(hm,{levelOffset:"sm",allowRangeSelection:!1,classNames:{node:GWe,label:XWe},styles:{root:{position:"relative",width:"min-content",minWidth:300}},data:a,tree:o,renderNode:({node:i,selected:s,elementProps:l,hasChildren:c})=>y.jsx(Re,{...l,style:{...!c&&{marginBottom:Me(4)}},children:c?y.jsx(Kn,{fullWidth:!0,color:"gray",variant:s?"transparent":"subtle",size:"xs",justify:"flex-start",styles:{root:{position:"unset",paddingInlineStart:Me(16)}},children:i.label}):i.label})})}),iYe=()=>{},TJ=(e,r)=>{if(e===r)return!0;if(e.length!==r.length)return!1;for(const[n,o]of e.entries())if(!(o===r[n]||an(o,r[n])))return!1;return!0};function qp(e,r,n,o){const a=IF();jEe(a?iYe:e,r,TJ,o)}function sYe(){const e=typeof window<"u"&&typeof window.devicePixelRatio=="number"?window.devicePixelRatio:1;return us(Math.floor(e),{min:1,max:4})}let qw;function Uu(e){return qw??=sYe(),qw<2?Math.round(e):Math.round(e*qw)/qw}function lYe(e){switch(e){case"dots":return cs.Dots;case"lines":return cs.Lines;case"cross":return cs.Cross;default:Zi(e)}}const cYe=(e,r)=>typeof e.background=="string"&&typeof r.background=="string"?e.background===r.background:lt(e.background,r.background),AJ=E.memo(({background:e})=>typeof e=="string"?y.jsx(Mq,{variant:lYe(e),size:2,gap:20}):y.jsx(Mq,{...e}),cYe);AJ.displayName="Background";const RJ=(e,r)=>(e.data.dimmed??!1)===r?e:{...e,data:{...e.data,dimmed:r}};function uYe(e,r){return r!==void 0?RJ(e,r):n=>RJ(n,e)}const NJ=(e,r)=>(e.data.hovered??!1)===r?e:{...e,data:{...e.data,hovered:r}};function dYe(e,r){return r!==void 0?NJ(e,r):n=>NJ(n,e)}function DJ(e,r){return CNe(e.data,r)?e:{...e,data:{...e.data,...r}}}function pYe(e,r){return r!==void 0?DJ(e,r):n=>DJ(n,e)}const cr={setDimmed:uYe,setHovered:dYe,setData:pYe},_l={Compound:1,Edge:20,Element:20,Max:30},_s=.05,zT=3,Uw={default:"16px",withControls:{top:"58px",left:"16px",right:"16px",bottom:"16px"}};function IT({nodes:e,edges:r,onEdgesChange:n,onNodesChange:o,className:a,pannable:i=!0,zoomable:s=!0,nodesSelectable:l=!0,nodesDraggable:c=!1,background:u="dots",children:d,colorMode:h,fitViewPadding:f=0,fitView:g=!0,zoomOnDoubleClick:b=!1,onViewportResize:x,onMoveEnd:w,onNodeMouseEnter:k,onNodeMouseLeave:C,onEdgeMouseEnter:_,onEdgeMouseLeave:T,...A}){const R=E.useMemo(()=>({minZoom:_s,maxZoom:1,padding:f,includeHiddenNodes:!1}),[f]),D=u!=="transparent"&&u!=="solid",N=fWe(),M=AT(),{colorScheme:O}=yMe();return h||(h=O==="auto"?"system":O),y.jsxs(mRe,{colorMode:h,nodes:e,edges:r,className:et(u==="transparent"&&"bg-transparent",a),...N&&{"data-likec4-zoom-small":!0},zoomOnPinch:s,zoomOnScroll:!i&&s,...!s&&{zoomActivationKeyCode:null},zoomOnDoubleClick:b,maxZoom:s?zT:1,minZoom:s?_s:1,fitView:g,fitViewOptions:R,preventScrolling:s||i,defaultMarkerColor:"var(--xy-edge-stroke)",noDragClassName:"nodrag",noPanClassName:"nopan",noWheelClassName:"nowheel",panOnScroll:i,panOnDrag:i,...!i&&{panActivationKeyCode:null,selectionKeyCode:null},elementsSelectable:l,nodesFocusable:c||l,edgesFocusable:!1,nodesDraggable:c,nodeDragThreshold:4,nodeClickDistance:3,paneClickDistance:3,elevateNodesOnSelect:!1,selectNodesOnDrag:!1,onNodesChange:o,onEdgesChange:n,onMoveEnd:kt((F,{x:L,y:U,zoom:P})=>{const V=Uu(L),I=Uu(U);(L!==V||U!==I)&&M.setState({transform:[V,I,P]}),w?.(F,{x:V,y:I,zoom:P})}),onNodeMouseEnter:kt((F,L)=>{if(k){k(F,L);return}o([{id:L.id,type:"replace",item:cr.setHovered(L,!0)}])}),onNodeMouseLeave:kt((F,L)=>{if(C){C(F,L);return}o([{id:L.id,type:"replace",item:cr.setHovered(L,!1)}])}),onEdgeMouseEnter:kt((F,L)=>{if(_){_(F,L);return}n([{id:L.id,type:"replace",item:cr.setHovered(L,!0)}])}),onEdgeMouseLeave:kt((F,L)=>{if(T){T(F,L);return}n([{id:L.id,type:"replace",item:cr.setHovered(L,!1)}])}),onNodeDoubleClick:Cn,onEdgeDoubleClick:Cn,...A,children:[D&&y.jsx(AJ,{background:u}),x&&y.jsx(fYe,{onViewportResize:x}),d]})}const hYe=({width:e,height:r})=>(e||1)*(r||1),fYe=({onViewportResize:e})=>{const r=qt(hYe);return qp(e,[r]),null},$J=E.createContext(null);function MJ(){return bt(E.useContext($J),"No RelationshipsBrowserActorContext")}function Ww(e,r=an){const n=MJ();return fn(n,e,r)}function Ny(){const e=MJ();return E.useMemo(()=>({actor:e,get rootElementId(){return`relationships-browser-${e.sessionId.replaceAll(":","_")}`},getState:()=>e.getSnapshot().context,send:e.send,updateView:r=>{e.getSnapshot().status==="active"&&e.send({type:"update.view",layouted:r})},changeScope:r=>{e.send({type:"change.scope",scope:r})},navigateTo:(r,n)=>{e.send({type:"navigate.to",subject:r,fromNode:n})},fitDiagram:()=>{e.send({type:"fitDiagram"})},close:()=>{e._parent?e._parent?.send({type:"close",actorId:e.id}):e.send({type:"close"})}}),[e])}var OT,PJ;function jT(){if(PJ)return OT;PJ=1;var e="\0",r="\0",n="";class o{_isDirected=!0;_isMultigraph=!1;_isCompound=!1;_label;_defaultNodeLabelFn=()=>{};_defaultEdgeLabelFn=()=>{};_nodes={};_in={};_preds={};_out={};_sucs={};_edgeObjs={};_edgeLabels={};_nodeCount=0;_edgeCount=0;_parent;_children;constructor(d){d&&(this._isDirected=Object.hasOwn(d,"directed")?d.directed:!0,this._isMultigraph=Object.hasOwn(d,"multigraph")?d.multigraph:!1,this._isCompound=Object.hasOwn(d,"compound")?d.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[r]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(d){return this._label=d,this}graph(){return this._label}setDefaultNodeLabel(d){return this._defaultNodeLabelFn=d,typeof d!="function"&&(this._defaultNodeLabelFn=()=>d),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var d=this;return this.nodes().filter(h=>Object.keys(d._in[h]).length===0)}sinks(){var d=this;return this.nodes().filter(h=>Object.keys(d._out[h]).length===0)}setNodes(d,h){var f=arguments,g=this;return d.forEach(function(b){f.length>1?g.setNode(b,h):g.setNode(b)}),this}setNode(d,h){return Object.hasOwn(this._nodes,d)?(arguments.length>1&&(this._nodes[d]=h),this):(this._nodes[d]=arguments.length>1?h:this._defaultNodeLabelFn(d),this._isCompound&&(this._parent[d]=r,this._children[d]={},this._children[r][d]=!0),this._in[d]={},this._preds[d]={},this._out[d]={},this._sucs[d]={},++this._nodeCount,this)}node(d){return this._nodes[d]}hasNode(d){return Object.hasOwn(this._nodes,d)}removeNode(d){var h=this;if(Object.hasOwn(this._nodes,d)){var f=g=>h.removeEdge(h._edgeObjs[g]);delete this._nodes[d],this._isCompound&&(this._removeFromParentsChildList(d),delete this._parent[d],this.children(d).forEach(function(g){h.setParent(g)}),delete this._children[d]),Object.keys(this._in[d]).forEach(f),delete this._in[d],delete this._preds[d],Object.keys(this._out[d]).forEach(f),delete this._out[d],delete this._sucs[d],--this._nodeCount}return this}setParent(d,h){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(h===void 0)h=r;else{h+="";for(var f=h;f!==void 0;f=this.parent(f))if(f===d)throw new Error("Setting "+h+" as parent of "+d+" would create a cycle");this.setNode(h)}return this.setNode(d),this._removeFromParentsChildList(d),this._parent[d]=h,this._children[h][d]=!0,this}_removeFromParentsChildList(d){delete this._children[this._parent[d]][d]}parent(d){if(this._isCompound){var h=this._parent[d];if(h!==r)return h}}children(d=r){if(this._isCompound){var h=this._children[d];if(h)return Object.keys(h)}else{if(d===r)return this.nodes();if(this.hasNode(d))return[]}}predecessors(d){var h=this._preds[d];if(h)return Object.keys(h)}successors(d){var h=this._sucs[d];if(h)return Object.keys(h)}neighbors(d){var h=this.predecessors(d);if(h){const g=new Set(h);for(var f of this.successors(d))g.add(f);return Array.from(g.values())}}isLeaf(d){var h;return this.isDirected()?h=this.successors(d):h=this.neighbors(d),h.length===0}filterNodes(d){var h=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});h.setGraph(this.graph());var f=this;Object.entries(this._nodes).forEach(function([x,w]){d(x)&&h.setNode(x,w)}),Object.values(this._edgeObjs).forEach(function(x){h.hasNode(x.v)&&h.hasNode(x.w)&&h.setEdge(x,f.edge(x))});var g={};function b(x){var w=f.parent(x);return w===void 0||h.hasNode(w)?(g[x]=w,w):w in g?g[w]:b(w)}return this._isCompound&&h.nodes().forEach(x=>h.setParent(x,b(x))),h}setDefaultEdgeLabel(d){return this._defaultEdgeLabelFn=d,typeof d!="function"&&(this._defaultEdgeLabelFn=()=>d),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(d,h){var f=this,g=arguments;return d.reduce(function(b,x){return g.length>1?f.setEdge(b,x,h):f.setEdge(b,x),x}),this}setEdge(){var d,h,f,g,b=!1,x=arguments[0];typeof x=="object"&&x!==null&&"v"in x?(d=x.v,h=x.w,f=x.name,arguments.length===2&&(g=arguments[1],b=!0)):(d=x,h=arguments[1],f=arguments[3],arguments.length>2&&(g=arguments[2],b=!0)),d=""+d,h=""+h,f!==void 0&&(f=""+f);var w=s(this._isDirected,d,h,f);if(Object.hasOwn(this._edgeLabels,w))return b&&(this._edgeLabels[w]=g),this;if(f!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(d),this.setNode(h),this._edgeLabels[w]=b?g:this._defaultEdgeLabelFn(d,h,f);var k=l(this._isDirected,d,h,f);return d=k.v,h=k.w,Object.freeze(k),this._edgeObjs[w]=k,a(this._preds[h],d),a(this._sucs[d],h),this._in[h][w]=k,this._out[d][w]=k,this._edgeCount++,this}edge(d,h,f){var g=arguments.length===1?c(this._isDirected,arguments[0]):s(this._isDirected,d,h,f);return this._edgeLabels[g]}edgeAsObj(){const d=this.edge(...arguments);return typeof d!="object"?{label:d}:d}hasEdge(d,h,f){var g=arguments.length===1?c(this._isDirected,arguments[0]):s(this._isDirected,d,h,f);return Object.hasOwn(this._edgeLabels,g)}removeEdge(d,h,f){var g=arguments.length===1?c(this._isDirected,arguments[0]):s(this._isDirected,d,h,f),b=this._edgeObjs[g];return b&&(d=b.v,h=b.w,delete this._edgeLabels[g],delete this._edgeObjs[g],i(this._preds[h],d),i(this._sucs[d],h),delete this._in[h][g],delete this._out[d][g],this._edgeCount--),this}inEdges(d,h){var f=this._in[d];if(f){var g=Object.values(f);return h?g.filter(b=>b.v===h):g}}outEdges(d,h){var f=this._out[d];if(f){var g=Object.values(f);return h?g.filter(b=>b.w===h):g}}nodeEdges(d,h){var f=this.inEdges(d,h);if(f)return f.concat(this.outEdges(d,h))}}function a(u,d){u[d]?u[d]++:u[d]=1}function i(u,d){--u[d]||delete u[d]}function s(u,d,h,f){var g=""+d,b=""+h;if(!u&&g>b){var x=g;g=b,b=x}return g+n+b+n+(f===void 0?e:f)}function l(u,d,h,f){var g=""+d,b=""+h;if(!u&&g>b){var x=g;g=b,b=x}var w={v:g,w:b};return f&&(w.name=f),w}function c(u,d){return s(u,d.v,d.w,d.name)}return OT=o,OT}var zJ,IJ;function mYe(){return IJ||(IJ=1,zJ="2.2.4"),zJ}var OJ,jJ;function gYe(){return jJ||(jJ=1,OJ={Graph:jT(),version:mYe()}),OJ}var LT,LJ;function yYe(){if(LJ)return LT;LJ=1;var e=jT();LT={write:r,read:a};function r(i){var s={options:{directed:i.isDirected(),multigraph:i.isMultigraph(),compound:i.isCompound()},nodes:n(i),edges:o(i)};return i.graph()!==void 0&&(s.value=structuredClone(i.graph())),s}function n(i){return i.nodes().map(function(s){var l=i.node(s),c=i.parent(s),u={v:s};return l!==void 0&&(u.value=l),c!==void 0&&(u.parent=c),u})}function o(i){return i.edges().map(function(s){var l=i.edge(s),c={v:s.v,w:s.w};return s.name!==void 0&&(c.name=s.name),l!==void 0&&(c.value=l),c})}function a(i){var s=new e(i.options).setGraph(i.value);return i.nodes.forEach(function(l){s.setNode(l.v,l.value),l.parent&&s.setParent(l.v,l.parent)}),i.edges.forEach(function(l){s.setEdge({v:l.v,w:l.w,name:l.name},l.value)}),s}return LT}var BT,BJ;function bYe(){if(BJ)return BT;BJ=1,BT=e;function e(r){var n={},o=[],a;function i(s){Object.hasOwn(n,s)||(n[s]=!0,a.push(s),r.successors(s).forEach(i),r.predecessors(s).forEach(i))}return r.nodes().forEach(function(s){a=[],i(s),a.length&&o.push(a)}),o}return BT}var FT,FJ;function HJ(){if(FJ)return FT;FJ=1;class e{_arr=[];_keyIndices={};size(){return this._arr.length}keys(){return this._arr.map(function(n){return n.key})}has(n){return Object.hasOwn(this._keyIndices,n)}priority(n){var o=this._keyIndices[n];if(o!==void 0)return this._arr[o].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(n,o){var a=this._keyIndices;if(n=String(n),!Object.hasOwn(a,n)){var i=this._arr,s=i.length;return a[n]=s,i.push({key:n,priority:o}),this._decrease(s),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key}decrease(n,o){var a=this._keyIndices[n];if(o>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[a].priority+" New: "+o);this._arr[a].priority=o,this._decrease(a)}_heapify(n){var o=this._arr,a=2*n,i=a+1,s=n;a>1,!(o[i].priority1;function n(a,i,s,l){return o(a,String(i),s||r,l||function(c){return a.outEdges(c)})}function o(a,i,s,l){var c={},u=new e,d,h,f=function(g){var b=g.v!==d?g.v:g.w,x=c[b],w=s(g),k=h.distance+w;if(w<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+g+" Weight: "+w);k0&&(d=u.removeMin(),h=c[d],h.distance!==Number.POSITIVE_INFINITY);)l(d).forEach(f);return c}return HT}var VT,UJ;function vYe(){if(UJ)return VT;UJ=1;var e=qJ();VT=r;function r(n,o,a){return n.nodes().reduce(function(i,s){return i[s]=e(n,s,o,a),i},{})}return VT}var qT,WJ;function YJ(){if(WJ)return qT;WJ=1,qT=e;function e(r){var n=0,o=[],a={},i=[];function s(l){var c=a[l]={onStack:!0,lowlink:n,index:n++};if(o.push(l),r.successors(l).forEach(function(h){Object.hasOwn(a,h)?a[h].onStack&&(c.lowlink=Math.min(c.lowlink,a[h].index)):(s(h),c.lowlink=Math.min(c.lowlink,a[h].lowlink))}),c.lowlink===c.index){var u=[],d;do d=o.pop(),a[d].onStack=!1,u.push(d);while(l!==d);i.push(u)}}return r.nodes().forEach(function(l){Object.hasOwn(a,l)||s(l)}),i}return qT}var UT,GJ;function xYe(){if(GJ)return UT;GJ=1;var e=YJ();UT=r;function r(n){return e(n).filter(function(o){return o.length>1||o.length===1&&n.hasEdge(o[0],o[0])})}return UT}var WT,XJ;function wYe(){if(XJ)return WT;XJ=1,WT=r;var e=()=>1;function r(o,a,i){return n(o,a||e,i||function(s){return o.outEdges(s)})}function n(o,a,i){var s={},l=o.nodes();return l.forEach(function(c){s[c]={},s[c][c]={distance:0},l.forEach(function(u){c!==u&&(s[c][u]={distance:Number.POSITIVE_INFINITY})}),i(c).forEach(function(u){var d=u.v===c?u.w:u.v,h=a(u);s[c][d]={distance:h,predecessor:c}})}),l.forEach(function(c){var u=s[c];l.forEach(function(d){var h=s[d];l.forEach(function(f){var g=h[c],b=u[f],x=h[f],w=g.distance+b.distance;wa.successors(h):h=>a.neighbors(h),c=s==="post"?r:n,u=[],d={};return i.forEach(h=>{if(!a.hasNode(h))throw new Error("Graph does not have node: "+h);c(h,l,d,u)}),u}function r(a,i,s,l){for(var c=[[a,!1]];c.length>0;){var u=c.pop();u[1]?l.push(u[0]):Object.hasOwn(s,u[0])||(s[u[0]]=!0,c.push([u[0],!0]),o(i(u[0]),d=>c.push([d,!1])))}}function n(a,i,s,l){for(var c=[a];c.length>0;){var u=c.pop();Object.hasOwn(s,u)||(s[u]=!0,l.push(u),o(i(u),d=>c.push(d)))}}function o(a,i){for(var s=a.length;s--;)i(a[s],s,a);return a}return XT}var KT,tee;function _Ye(){if(tee)return KT;tee=1;var e=eee();KT=r;function r(n,o){return e(n,o,"post")}return KT}var ZT,ree;function EYe(){if(ree)return ZT;ree=1;var e=eee();ZT=r;function r(n,o){return e(n,o,"pre")}return ZT}var QT,nee;function SYe(){if(nee)return QT;nee=1;var e=jT(),r=HJ();QT=n;function n(o,a){var i=new e,s={},l=new r,c;function u(h){var f=h.v===c?h.w:h.v,g=l.priority(f);if(g!==void 0){var b=a(h);b0;){if(c=l.removeMin(),Object.hasOwn(s,c))i.setEdge(c,s[c]);else{if(d)throw new Error("Input graph is not connected: "+o);d=!0}o.nodeEdges(c).forEach(u)}return i}return QT}var oee,aee;function CYe(){return aee||(aee=1,oee={components:bYe(),dijkstra:qJ(),dijkstraAll:vYe(),findCycles:xYe(),floydWarshall:wYe(),isAcyclic:kYe(),postorder:_Ye(),preorder:EYe(),prim:SYe(),tarjan:YJ(),topsort:ZJ()}),oee}var JT,iee;function Es(){if(iee)return JT;iee=1;var e=gYe();return JT={Graph:e.Graph,json:yYe(),alg:CYe(),version:e.version},JT}var eA,see;function TYe(){if(see)return eA;see=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,i=a._prev;if(i!==a)return r(i),i}enqueue(a){let i=this._sentinel;a._prev&&a._next&&r(a),a._next=i._next,i._next._prev=a,i._next=a,a._prev=i}toString(){let a=[],i=this._sentinel,s=i._prev;for(;s!==i;)a.push(JSON.stringify(s,n)),s=s._prev;return"["+a.join(", ")+"]"}}function r(o){o._prev._next=o._next,o._next._prev=o._prev,delete o._next,delete o._prev}function n(o,a){if(o!=="_next"&&o!=="_prev")return a}return eA=e,eA}var tA,lee;function AYe(){if(lee)return tA;lee=1;let e=Es().Graph,r=TYe();tA=o;let n=()=>1;function o(u,d){if(u.nodeCount()<=1)return[];let h=s(u,d||n);return a(h.graph,h.buckets,h.zeroIdx).flatMap(f=>u.outEdges(f.v,f.w))}function a(u,d,h){let f=[],g=d[d.length-1],b=d[0],x;for(;u.nodeCount();){for(;x=b.dequeue();)i(u,d,h,x);for(;x=g.dequeue();)i(u,d,h,x);if(u.nodeCount()){for(let w=d.length-2;w>0;--w)if(x=d[w].dequeue(),x){f=f.concat(i(u,d,h,x,!0));break}}}return f}function i(u,d,h,f,g){let b=g?[]:void 0;return u.inEdges(f.v).forEach(x=>{let w=u.edge(x),k=u.node(x.v);g&&b.push({v:x.v,w:x.w}),k.out-=w,l(d,h,k)}),u.outEdges(f.v).forEach(x=>{let w=u.edge(x),k=x.w,C=u.node(k);C.in-=w,l(d,h,C)}),u.removeNode(f.v),b}function s(u,d){let h=new e,f=0,g=0;u.nodes().forEach(w=>{h.setNode(w,{v:w,in:0,out:0})}),u.edges().forEach(w=>{let k=h.edge(w.v,w.w)||0,C=d(w),_=k+C;h.setEdge(w.v,w.w,_),g=Math.max(g,h.node(w.v).out+=C),f=Math.max(f,h.node(w.w).in+=C)});let b=c(g+f+3).map(()=>new r),x=f+1;return h.nodes().forEach(w=>{l(b,x,h.node(w))}),{graph:h,buckets:b,zeroIdx:x}}function l(u,d,h){h.out?h.in?u[h.out-h.in+d].enqueue(h):u[u.length-1].enqueue(h):u[0].enqueue(h)}function c(u){const d=[];for(let h=0;hM.setNode(O,N.node(O))),N.edges().forEach(O=>{let F=M.edge(O.v,O.w)||{weight:0,minlen:1},L=N.edge(O);M.setEdge(O.v,O.w,{weight:F.weight+L.weight,minlen:Math.max(F.minlen,L.minlen)})}),M}function o(N){let M=new e({multigraph:N.isMultigraph()}).setGraph(N.graph());return N.nodes().forEach(O=>{N.children(O).length||M.setNode(O,N.node(O))}),N.edges().forEach(O=>{M.setEdge(O,N.edge(O))}),M}function a(N){let M=N.nodes().map(O=>{let F={};return N.outEdges(O).forEach(L=>{F[L.w]=(F[L.w]||0)+N.edge(L).weight}),F});return D(N.nodes(),M)}function i(N){let M=N.nodes().map(O=>{let F={};return N.inEdges(O).forEach(L=>{F[L.v]=(F[L.v]||0)+N.edge(L).weight}),F});return D(N.nodes(),M)}function s(N,M){let O=N.x,F=N.y,L=M.x-O,U=M.y-F,P=N.width/2,V=N.height/2;if(!L&&!U)throw new Error("Not possible to find intersection inside of the rectangle");let I,H;return Math.abs(U)*P>Math.abs(L)*V?(U<0&&(V=-V),I=V*L/U,H=V):(L<0&&(P=-P),I=P,H=P*U/L),{x:O+I,y:F+H}}function l(N){let M=T(b(N)+1).map(()=>[]);return N.nodes().forEach(O=>{let F=N.node(O),L=F.rank;L!==void 0&&(M[L][F.order]=O)}),M}function c(N){let M=N.nodes().map(F=>{let L=N.node(F).rank;return L===void 0?Number.MAX_VALUE:L}),O=g(Math.min,M);N.nodes().forEach(F=>{let L=N.node(F);Object.hasOwn(L,"rank")&&(L.rank-=O)})}function u(N){let M=N.nodes().map(P=>N.node(P).rank),O=g(Math.min,M),F=[];N.nodes().forEach(P=>{let V=N.node(P).rank-O;F[V]||(F[V]=[]),F[V].push(P)});let L=0,U=N.graph().nodeRankFactor;Array.from(F).forEach((P,V)=>{P===void 0&&V%U!==0?--L:P!==void 0&&L&&P.forEach(I=>N.node(I).rank+=L)})}function d(N,M,O,F){let L={width:0,height:0};return arguments.length>=4&&(L.rank=O,L.order=F),r(N,"border",L,M)}function h(N,M=f){const O=[];for(let F=0;Ff){const O=h(M);return N.apply(null,O.map(F=>N.apply(null,F)))}else return N.apply(null,M)}function b(N){const M=N.nodes().map(O=>{let F=N.node(O).rank;return F===void 0?Number.MIN_VALUE:F});return g(Math.max,M)}function x(N,M){let O={lhs:[],rhs:[]};return N.forEach(F=>{M(F)?O.lhs.push(F):O.rhs.push(F)}),O}function w(N,M){let O=Date.now();try{return M()}finally{console.log(N+" time: "+(Date.now()-O)+"ms")}}function k(N,M){return M()}let C=0;function _(N){var M=++C;return N+(""+M)}function T(N,M,O=1){M==null&&(M=N,N=0);let F=U=>UMF[M]),Object.entries(N).reduce((F,[L,U])=>(F[L]=O(U,L),F),{})}function D(N,M){return N.reduce((O,F,L)=>(O[F]=M[L],O),{})}return rA}var nA,uee;function RYe(){if(uee)return nA;uee=1;let e=AYe(),r=On().uniqueId;nA={run:n,undo:a};function n(i){(i.graph().acyclicer==="greedy"?e(i,s(i)):o(i)).forEach(l=>{let c=i.edge(l);i.removeEdge(l),c.forwardName=l.name,c.reversed=!0,i.setEdge(l.w,l.v,c,r("rev"))});function s(l){return c=>l.edge(c).weight}}function o(i){let s=[],l={},c={};function u(d){Object.hasOwn(c,d)||(c[d]=!0,l[d]=!0,i.outEdges(d).forEach(h=>{Object.hasOwn(l,h.w)?s.push(h):u(h.w)}),delete l[d])}return i.nodes().forEach(u),s}function a(i){i.edges().forEach(s=>{let l=i.edge(s);if(l.reversed){i.removeEdge(s);let c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(s.w,s.v,l,c)}})}return nA}var oA,dee;function NYe(){if(dee)return oA;dee=1;let e=On();oA={run:r,undo:o};function r(a){a.graph().dummyChains=[],a.edges().forEach(i=>n(a,i))}function n(a,i){let s=i.v,l=a.node(s).rank,c=i.w,u=a.node(c).rank,d=i.name,h=a.edge(i),f=h.labelRank;if(u===l+1)return;a.removeEdge(i);let g,b,x;for(x=0,++l;l{let s=a.node(i),l=s.edgeLabel,c;for(a.setEdge(s.edgeObj,l);s.dummy;)c=a.successors(i)[0],a.removeNode(i),l.points.push({x:s.x,y:s.y}),s.dummy==="edge-label"&&(l.x=s.x,l.y=s.y,l.width=s.width,l.height=s.height),i=c,s=a.node(i)})}return oA}var aA,pee;function Yw(){if(pee)return aA;pee=1;const{applyWithChunking:e}=On();aA={longestPath:r,slack:n};function r(o){var a={};function i(s){var l=o.node(s);if(Object.hasOwn(a,s))return l.rank;a[s]=!0;let c=o.outEdges(s).map(d=>d==null?Number.POSITIVE_INFINITY:i(d.w)-o.edge(d).minlen);var u=e(Math.min,c);return u===Number.POSITIVE_INFINITY&&(u=0),l.rank=u}o.sources().forEach(i)}function n(o,a){return o.node(a.w).rank-o.node(a.v).rank-o.edge(a).minlen}return aA}var iA,hee;function fee(){if(hee)return iA;hee=1;var e=Es().Graph,r=Yw().slack;iA=n;function n(s){var l=new e({directed:!1}),c=s.nodes()[0],u=s.nodeCount();l.setNode(c,{});for(var d,h;o(l,s){var h=d.v,f=u===h?d.w:h;!s.hasNode(f)&&!r(l,d)&&(s.setNode(f,{}),s.setEdge(u,f,{}),c(f))})}return s.nodes().forEach(c),s.nodeCount()}function a(s,l){return l.edges().reduce((c,u)=>{let d=Number.POSITIVE_INFINITY;return s.hasNode(u.v)!==s.hasNode(u.w)&&(d=r(l,u)),dl.node(u).rank+=c)}return iA}var sA,mee;function DYe(){if(mee)return sA;mee=1;var e=fee(),r=Yw().slack,n=Yw().longestPath,o=Es().alg.preorder,a=Es().alg.postorder,i=On().simplify;sA=s,s.initLowLimValues=d,s.initCutValues=l,s.calcCutValue=u,s.leaveEdge=f,s.enterEdge=g,s.exchangeEdges=b;function s(C){C=i(C),n(C);var _=e(C);d(_),l(_,C);for(var T,A;T=f(_);)A=g(_,C,T),b(_,C,T,A)}function l(C,_){var T=a(C,C.nodes());T=T.slice(0,T.length-1),T.forEach(A=>c(C,_,A))}function c(C,_,T){var A=C.node(T),R=A.parent;C.edge(T,R).cutvalue=u(C,_,T)}function u(C,_,T){var A=C.node(T),R=A.parent,D=!0,N=_.edge(T,R),M=0;return N||(D=!1,N=_.edge(R,T)),M=N.weight,_.nodeEdges(T).forEach(O=>{var F=O.v===T,L=F?O.w:O.v;if(L!==R){var U=F===D,P=_.edge(O).weight;if(M+=U?P:-P,w(C,T,L)){var V=C.edge(T,L).cutvalue;M+=U?-V:V}}}),M}function d(C,_){arguments.length<2&&(_=C.nodes()[0]),h(C,{},1,_)}function h(C,_,T,A,R){var D=T,N=C.node(A);return _[A]=!0,C.neighbors(A).forEach(M=>{Object.hasOwn(_,M)||(T=h(C,_,T,M,A))}),N.low=D,N.lim=T++,R?N.parent=R:delete N.parent,T}function f(C){return C.edges().find(_=>C.edge(_).cutvalue<0)}function g(C,_,T){var A=T.v,R=T.w;_.hasEdge(A,R)||(A=T.w,R=T.v);var D=C.node(A),N=C.node(R),M=D,O=!1;D.lim>N.lim&&(M=N,O=!0);var F=_.edges().filter(L=>O===k(C,C.node(L.v),M)&&O!==k(C,C.node(L.w),M));return F.reduce((L,U)=>r(_,U)!_.node(R).parent),A=o(C,T);A=A.slice(1),A.forEach(R=>{var D=C.node(R).parent,N=_.edge(R,D),M=!1;N||(N=_.edge(D,R),M=!0),_.node(R).rank=_.node(D).rank+(M?N.minlen:-N.minlen)})}function w(C,_,T){return C.hasEdge(_,T)}function k(C,_,T){return T.low<=_.lim&&_.lim<=T.lim}return sA}var lA,gee;function $Ye(){if(gee)return lA;gee=1;var e=Yw(),r=e.longestPath,n=fee(),o=DYe();lA=a;function a(c){var u=c.graph().ranker;if(u instanceof Function)return u(c);switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":s(c);break;case"longest-path":i(c);break;case"none":break;default:l(c)}}var i=r;function s(c){r(c),n(c)}function l(c){o(c)}return lA}var cA,yee;function MYe(){if(yee)return cA;yee=1,cA=e;function e(o){let a=n(o);o.graph().dummyChains.forEach(i=>{let s=o.node(i),l=s.edgeObj,c=r(o,a,l.v,l.w),u=c.path,d=c.lca,h=0,f=u[h],g=!0;for(;i!==l.w;){if(s=o.node(i),g){for(;(f=u[h])!==d&&o.node(f).maxRanku||d>a[h].lim));for(f=h,h=s;(h=o.parent(h))!==f;)c.push(h);return{path:l.concat(c.reverse()),lca:f}}function n(o){let a={},i=0;function s(l){let c=i;o.children(l).forEach(s),a[l]={low:c,lim:i++}}return o.children().forEach(s),a}return cA}var uA,bee;function PYe(){if(bee)return uA;bee=1;let e=On();uA={run:r,cleanup:i};function r(s){let l=e.addDummyNode(s,"root",{},"_root"),c=o(s),u=Object.values(c),d=e.applyWithChunking(Math.max,u)-1,h=2*d+1;s.graph().nestingRoot=l,s.edges().forEach(g=>s.edge(g).minlen*=h);let f=a(s)+1;s.children().forEach(g=>n(s,l,h,f,d,c,g)),s.graph().nodeRankFactor=h}function n(s,l,c,u,d,h,f){let g=s.children(f);if(!g.length){f!==l&&s.setEdge(l,f,{weight:0,minlen:c});return}let b=e.addBorderNode(s,"_bt"),x=e.addBorderNode(s,"_bb"),w=s.node(f);s.setParent(b,f),w.borderTop=b,s.setParent(x,f),w.borderBottom=x,g.forEach(k=>{n(s,l,c,u,d,h,k);let C=s.node(k),_=C.borderTop?C.borderTop:k,T=C.borderBottom?C.borderBottom:k,A=C.borderTop?u:2*u,R=_!==T?1:d-h[f]+1;s.setEdge(b,_,{weight:A,minlen:R,nestingEdge:!0}),s.setEdge(T,x,{weight:A,minlen:R,nestingEdge:!0})}),s.parent(f)||s.setEdge(l,b,{weight:0,minlen:d+h[f]})}function o(s){var l={};function c(u,d){var h=s.children(u);h&&h.length&&h.forEach(f=>c(f,d+1)),l[u]=d}return s.children().forEach(u=>c(u,1)),l}function a(s){return s.edges().reduce((l,c)=>l+s.edge(c).weight,0)}function i(s){var l=s.graph();s.removeNode(l.nestingRoot),delete l.nestingRoot,s.edges().forEach(c=>{var u=s.edge(c);u.nestingEdge&&s.removeEdge(c)})}return uA}var dA,vee;function zYe(){if(vee)return dA;vee=1;let e=On();dA=r;function r(o){function a(i){let s=o.children(i),l=o.node(i);if(s.length&&s.forEach(a),Object.hasOwn(l,"minRank")){l.borderLeft=[],l.borderRight=[];for(let c=l.minRank,u=l.maxRank+1;co(c.node(u))),c.edges().forEach(u=>o(c.edge(u)))}function o(c){let u=c.width;c.width=c.height,c.height=u}function a(c){c.nodes().forEach(u=>i(c.node(u))),c.edges().forEach(u=>{let d=c.edge(u);d.points.forEach(i),Object.hasOwn(d,"y")&&i(d)})}function i(c){c.y=-c.y}function s(c){c.nodes().forEach(u=>l(c.node(u))),c.edges().forEach(u=>{let d=c.edge(u);d.points.forEach(l),Object.hasOwn(d,"x")&&l(d)})}function l(c){let u=c.x;c.x=c.y,c.y=u}return pA}var hA,wee;function OYe(){if(wee)return hA;wee=1;let e=On();hA=r;function r(n){let o={},a=n.nodes().filter(u=>!n.children(u).length),i=a.map(u=>n.node(u).rank),s=e.applyWithChunking(Math.max,i),l=e.range(s+1).map(()=>[]);function c(u){if(o[u])return;o[u]=!0;let d=n.node(u);l[d.rank].push(u),n.successors(u).forEach(c)}return a.sort((u,d)=>n.node(u).rank-n.node(d).rank).forEach(c),l}return hA}var fA,kee;function jYe(){if(kee)return fA;kee=1;let e=On().zipObject;fA=r;function r(o,a){let i=0;for(let s=1;sg)),l=a.flatMap(f=>o.outEdges(f).map(g=>({pos:s[g.w],weight:o.edge(g).weight})).sort((g,b)=>g.pos-b.pos)),c=1;for(;c{let g=f.pos+c;d[g]+=f.weight;let b=0;for(;g>0;)g%2&&(b+=d[g+1]),g=g-1>>1,d[g]+=f.weight;h+=f.weight*b}),h}return fA}var mA,_ee;function LYe(){if(_ee)return mA;_ee=1,mA=e;function e(r,n=[]){return n.map(o=>{let a=r.inEdges(o);if(a.length){let i=a.reduce((s,l)=>{let c=r.edge(l),u=r.node(l.v);return{sum:s.sum+c.weight*u.order,weight:s.weight+c.weight}},{sum:0,weight:0});return{v:o,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:o}})}return mA}var gA,Eee;function BYe(){if(Eee)return gA;Eee=1;let e=On();gA=r;function r(a,i){let s={};a.forEach((c,u)=>{let d=s[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:u};c.barycenter!==void 0&&(d.barycenter=c.barycenter,d.weight=c.weight)}),i.edges().forEach(c=>{let u=s[c.v],d=s[c.w];u!==void 0&&d!==void 0&&(d.indegree++,u.out.push(s[c.w]))});let l=Object.values(s).filter(c=>!c.indegree);return n(l)}function n(a){let i=[];function s(c){return u=>{u.merged||(u.barycenter===void 0||c.barycenter===void 0||u.barycenter>=c.barycenter)&&o(c,u)}}function l(c){return u=>{u.in.push(c),--u.indegree===0&&a.push(u)}}for(;a.length;){let c=a.pop();i.push(c),c.in.reverse().forEach(s(c)),c.out.forEach(l(c))}return i.filter(c=>!c.merged).map(c=>e.pick(c,["vs","i","barycenter","weight"]))}function o(a,i){let s=0,l=0;a.weight&&(s+=a.barycenter*a.weight,l+=a.weight),i.weight&&(s+=i.barycenter*i.weight,l+=i.weight),a.vs=i.vs.concat(a.vs),a.barycenter=s/l,a.weight=l,a.i=Math.min(i.i,a.i),i.merged=!0}return gA}var yA,See;function FYe(){if(See)return yA;See=1;let e=On();yA=r;function r(a,i){let s=e.partition(a,b=>Object.hasOwn(b,"barycenter")),l=s.lhs,c=s.rhs.sort((b,x)=>x.i-b.i),u=[],d=0,h=0,f=0;l.sort(o(!!i)),f=n(u,c,f),l.forEach(b=>{f+=b.vs.length,u.push(b.vs),d+=b.barycenter*b.weight,h+=b.weight,f=n(u,c,f)});let g={vs:u.flat(!0)};return h&&(g.barycenter=d/h,g.weight=h),g}function n(a,i,s){let l;for(;i.length&&(l=i[i.length-1]).i<=s;)i.pop(),a.push(l.vs),s++;return s}function o(a){return(i,s)=>i.barycenters.barycenter?1:a?s.i-i.i:i.i-s.i}return yA}var bA,Cee;function HYe(){if(Cee)return bA;Cee=1;let e=LYe(),r=BYe(),n=FYe();bA=o;function o(s,l,c,u){let d=s.children(l),h=s.node(l),f=h?h.borderLeft:void 0,g=h?h.borderRight:void 0,b={};f&&(d=d.filter(C=>C!==f&&C!==g));let x=e(s,d);x.forEach(C=>{if(s.children(C.v).length){let _=o(s,C.v,c,u);b[C.v]=_,Object.hasOwn(_,"barycenter")&&i(C,_)}});let w=r(x,c);a(w,b);let k=n(w,u);if(f&&(k.vs=[f,k.vs,g].flat(!0),s.predecessors(f).length)){let C=s.node(s.predecessors(f)[0]),_=s.node(s.predecessors(g)[0]);Object.hasOwn(k,"barycenter")||(k.barycenter=0,k.weight=0),k.barycenter=(k.barycenter*k.weight+C.order+_.order)/(k.weight+2),k.weight+=2}return k}function a(s,l){s.forEach(c=>{c.vs=c.vs.flatMap(u=>l[u]?l[u].vs:u)})}function i(s,l){s.barycenter!==void 0?(s.barycenter=(s.barycenter*s.weight+l.barycenter*l.weight)/(s.weight+l.weight),s.weight+=l.weight):(s.barycenter=l.barycenter,s.weight=l.weight)}return bA}var vA,Tee;function VYe(){if(Tee)return vA;Tee=1;let e=Es().Graph,r=On();vA=n;function n(a,i,s){let l=o(a),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(u=>a.node(u));return a.nodes().forEach(u=>{let d=a.node(u),h=a.parent(u);(d.rank===i||d.minRank<=i&&i<=d.maxRank)&&(c.setNode(u),c.setParent(u,h||l),a[s](u).forEach(f=>{let g=f.v===u?f.w:f.v,b=c.edge(g,u),x=b!==void 0?b.weight:0;c.setEdge(g,u,{weight:a.edge(f).weight+x})}),Object.hasOwn(d,"minRank")&&c.setNode(u,{borderLeft:d.borderLeft[i],borderRight:d.borderRight[i]}))}),c}function o(a){for(var i;a.hasNode(i=r.uniqueId("_root")););return i}return vA}var xA,Aee;function qYe(){if(Aee)return xA;Aee=1,xA=e;function e(r,n,o){let a={},i;o.forEach(s=>{let l=r.parent(s),c,u;for(;l;){if(c=r.parent(l),c?(u=a[c],a[c]=l):(u=i,i=l),u&&u!==l){n.setEdge(u,l);return}l=c}})}return xA}var wA,Ree;function UYe(){if(Ree)return wA;Ree=1;let e=OYe(),r=jYe(),n=HYe(),o=VYe(),a=qYe(),i=Es().Graph,s=On();wA=l;function l(h,f){if(f&&typeof f.customOrder=="function"){f.customOrder(h,l);return}let g=s.maxRank(h),b=c(h,s.range(1,g+1),"inEdges"),x=c(h,s.range(g-1,-1,-1),"outEdges"),w=e(h);if(d(h,w),f&&f.disableOptimalOrderHeuristic)return;let k=Number.POSITIVE_INFINITY,C;for(let _=0,T=0;T<4;++_,++T){u(_%2?b:x,_%4>=2),w=s.buildLayerMatrix(h);let A=r(h,w);Ab.node(k).order=C),a(b,g,w.vs)})}function d(h,f){Object.values(f).forEach(g=>g.forEach((b,x)=>h.node(b).order=x))}return wA}var kA,Nee;function WYe(){if(Nee)return kA;Nee=1;let e=Es().Graph,r=On();kA={positionX:g,findType1Conflicts:n,findType2Conflicts:o,addConflict:i,hasConflict:s,verticalAlignment:l,horizontalCompaction:c,alignCoordinates:h,findSmallestWidthAlignment:d,balance:f};function n(w,k){let C={};function _(T,A){let R=0,D=0,N=T.length,M=A[A.length-1];return A.forEach((O,F)=>{let L=a(w,O),U=L?w.node(L).order:N;(L||O===M)&&(A.slice(D,F+1).forEach(P=>{w.predecessors(P).forEach(V=>{let I=w.node(V),H=I.order;(H{O=A[F],w.node(O).dummy&&w.predecessors(O).forEach(L=>{let U=w.node(L);U.dummy&&(U.orderM)&&i(C,L,O)})})}function T(A,R){let D=-1,N,M=0;return R.forEach((O,F)=>{if(w.node(O).dummy==="border"){let L=w.predecessors(O);L.length&&(N=w.node(L[0]).order,_(R,M,F,D,N),M=F,D=N)}_(R,M,R.length,N,A.length)}),R}return k.length&&k.reduce(T),C}function a(w,k){if(w.node(k).dummy)return w.predecessors(k).find(C=>w.node(C).dummy)}function i(w,k,C){if(k>C){let T=k;k=C,C=T}let _=w[k];_||(w[k]=_={}),_[C]=!0}function s(w,k,C){if(k>C){let _=k;k=C,C=_}return!!w[k]&&Object.hasOwn(w[k],C)}function l(w,k,C,_){let T={},A={},R={};return k.forEach(D=>{D.forEach((N,M)=>{T[N]=N,A[N]=N,R[N]=M})}),k.forEach(D=>{let N=-1;D.forEach(M=>{let O=_(M);if(O.length){O=O.sort((L,U)=>R[L]-R[U]);let F=(O.length-1)/2;for(let L=Math.floor(F),U=Math.ceil(F);L<=U;++L){let P=O[L];A[M]===M&&NMath.max(L,A[U.v]+R.edge(U)),0)}function O(F){let L=R.outEdges(F).reduce((P,V)=>Math.min(P,A[V.w]-R.edge(V)),Number.POSITIVE_INFINITY),U=w.node(F);L!==Number.POSITIVE_INFINITY&&U.borderType!==D&&(A[F]=Math.max(A[F],L))}return N(M,R.predecessors.bind(R)),N(O,R.successors.bind(R)),Object.keys(_).forEach(F=>A[F]=A[C[F]]),A}function u(w,k,C,_){let T=new e,A=w.graph(),R=b(A.nodesep,A.edgesep,_);return k.forEach(D=>{let N;D.forEach(M=>{let O=C[M];if(T.setNode(O),N){var F=C[N],L=T.edge(F,O);T.setEdge(F,O,Math.max(R(w,M,N),L||0))}N=M})}),T}function d(w,k){return Object.values(k).reduce((C,_)=>{let T=Number.NEGATIVE_INFINITY,A=Number.POSITIVE_INFINITY;Object.entries(_).forEach(([D,N])=>{let M=x(w,D)/2;T=Math.max(N+M,T),A=Math.min(N-M,A)});const R=T-A;return R{["l","r"].forEach(R=>{let D=A+R,N=w[D];if(N===k)return;let M=Object.values(N),O=_-r.applyWithChunking(Math.min,M);R!=="l"&&(O=T-r.applyWithChunking(Math.max,M)),O&&(w[D]=r.mapValues(N,F=>F+O))})})}function f(w,k){return r.mapValues(w.ul,(C,_)=>{if(k)return w[k.toLowerCase()][_];{let T=Object.values(w).map(A=>A[_]).sort((A,R)=>A-R);return(T[1]+T[2])/2}})}function g(w){let k=r.buildLayerMatrix(w),C=Object.assign(n(w,k),o(w,k)),_={},T;["u","d"].forEach(R=>{T=R==="u"?k:Object.values(k).reverse(),["l","r"].forEach(D=>{D==="r"&&(T=T.map(F=>Object.values(F).reverse()));let N=(R==="u"?w.predecessors:w.successors).bind(w),M=l(w,T,C,N),O=c(w,T,M.root,M.align,D==="r");D==="r"&&(O=r.mapValues(O,F=>-F)),_[R+D]=O})});let A=d(w,_);return h(_,A),f(_,w.graph().align)}function b(w,k,C){return(_,T,A)=>{let R=_.node(T),D=_.node(A),N=0,M;if(N+=R.width/2,Object.hasOwn(R,"labelpos"))switch(R.labelpos.toLowerCase()){case"l":M=-R.width/2;break;case"r":M=R.width/2;break}if(M&&(N+=C?M:-M),M=0,N+=(R.dummy?k:w)/2,N+=(D.dummy?k:w)/2,N+=D.width/2,Object.hasOwn(D,"labelpos"))switch(D.labelpos.toLowerCase()){case"l":M=D.width/2;break;case"r":M=-D.width/2;break}return M&&(N+=C?M:-M),M=0,N}}function x(w,k){return w.node(k).width}return kA}var _A,Dee;function YYe(){if(Dee)return _A;Dee=1;let e=On(),r=WYe().positionX;_A=n;function n(a){a=e.asNonCompoundGraph(a),o(a),Object.entries(r(a)).forEach(([i,s])=>a.node(i).x=s)}function o(a){let i=e.buildLayerMatrix(a),s=a.graph().ranksep,l=0;i.forEach(c=>{const u=c.reduce((d,h)=>{const f=a.node(h).height;return d>f?d:f},0);c.forEach(d=>a.node(d).y=l+u/2),l+=u+s})}return _A}var EA,$ee;function GYe(){if($ee)return EA;$ee=1;let e=RYe(),r=NYe(),n=$Ye(),o=On().normalizeRanks,a=MYe(),i=On().removeEmptyRanks,s=PYe(),l=zYe(),c=IYe(),u=UYe(),d=YYe(),h=On(),f=Es().Graph;EA=g;function g(j,Y){let Q=Y&&Y.debugTiming?h.time:h.notime;Q("layout",()=>{let J=Q(" buildLayoutGraph",()=>N(j));Q(" runLayout",()=>b(J,Q,Y)),Q(" updateInputGraph",()=>x(j,J))})}function b(j,Y,Q){Y(" makeSpaceForEdgeLabels",()=>M(j)),Y(" removeSelfEdges",()=>q(j)),Y(" acyclic",()=>e.run(j)),Y(" nestingGraph.run",()=>s.run(j)),Y(" rank",()=>n(h.asNonCompoundGraph(j))),Y(" injectEdgeLabelProxies",()=>O(j)),Y(" removeEmptyRanks",()=>i(j)),Y(" nestingGraph.cleanup",()=>s.cleanup(j)),Y(" normalizeRanks",()=>o(j)),Y(" assignRankMinMax",()=>F(j)),Y(" removeEdgeLabelProxies",()=>L(j)),Y(" normalize.run",()=>r.run(j)),Y(" parentDummyChains",()=>a(j)),Y(" addBorderSegments",()=>l(j)),Y(" order",()=>u(j,Q)),Y(" insertSelfEdges",()=>Z(j)),Y(" adjustCoordinateSystem",()=>c.adjust(j)),Y(" position",()=>d(j)),Y(" positionSelfEdges",()=>W(j)),Y(" removeBorderNodes",()=>H(j)),Y(" normalize.undo",()=>r.undo(j)),Y(" fixupEdgeLabelCoords",()=>V(j)),Y(" undoCoordinateSystem",()=>c.undo(j)),Y(" translateGraph",()=>U(j)),Y(" assignNodeIntersects",()=>P(j)),Y(" reversePoints",()=>I(j)),Y(" acyclic.undo",()=>e.undo(j))}function x(j,Y){j.nodes().forEach(Q=>{let J=j.node(Q),ie=Y.node(Q);J&&(J.x=ie.x,J.y=ie.y,J.rank=ie.rank,Y.children(Q).length&&(J.width=ie.width,J.height=ie.height))}),j.edges().forEach(Q=>{let J=j.edge(Q),ie=Y.edge(Q);J.points=ie.points,Object.hasOwn(ie,"x")&&(J.x=ie.x,J.y=ie.y)}),j.graph().width=Y.graph().width,j.graph().height=Y.graph().height}let w=["nodesep","edgesep","ranksep","marginx","marginy"],k={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},C=["acyclicer","ranker","rankdir","align"],_=["width","height","rank"],T={width:0,height:0},A=["minlen","weight","width","height","labeloffset"],R={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},D=["labelpos"];function N(j){let Y=new f({multigraph:!0,compound:!0}),Q=K(j.graph());return Y.setGraph(Object.assign({},k,G(Q,w),h.pick(Q,C))),j.nodes().forEach(J=>{let ie=K(j.node(J));const ne=G(ie,_);Object.keys(T).forEach(re=>{ne[re]===void 0&&(ne[re]=T[re])}),Y.setNode(J,ne),Y.setParent(J,j.parent(J))}),j.edges().forEach(J=>{let ie=K(j.edge(J));Y.setEdge(J,Object.assign({},R,G(ie,A),h.pick(ie,D)))}),Y}function M(j){let Y=j.graph();Y.ranksep/=2,j.edges().forEach(Q=>{let J=j.edge(Q);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(Y.rankdir==="TB"||Y.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function O(j){j.edges().forEach(Y=>{let Q=j.edge(Y);if(Q.width&&Q.height){let J=j.node(Y.v),ie={rank:(j.node(Y.w).rank-J.rank)/2+J.rank,e:Y};h.addDummyNode(j,"edge-proxy",ie,"_ep")}})}function F(j){let Y=0;j.nodes().forEach(Q=>{let J=j.node(Q);J.borderTop&&(J.minRank=j.node(J.borderTop).rank,J.maxRank=j.node(J.borderBottom).rank,Y=Math.max(Y,J.maxRank))}),j.graph().maxRank=Y}function L(j){j.nodes().forEach(Y=>{let Q=j.node(Y);Q.dummy==="edge-proxy"&&(j.edge(Q.e).labelRank=Q.rank,j.removeNode(Y))})}function U(j){let Y=Number.POSITIVE_INFINITY,Q=0,J=Number.POSITIVE_INFINITY,ie=0,ne=j.graph(),re=ne.marginx||0,ge=ne.marginy||0;function De(he){let me=he.x,Te=he.y,Ie=he.width,Ze=he.height;Y=Math.min(Y,me-Ie/2),Q=Math.max(Q,me+Ie/2),J=Math.min(J,Te-Ze/2),ie=Math.max(ie,Te+Ze/2)}j.nodes().forEach(he=>De(j.node(he))),j.edges().forEach(he=>{let me=j.edge(he);Object.hasOwn(me,"x")&&De(me)}),Y-=re,J-=ge,j.nodes().forEach(he=>{let me=j.node(he);me.x-=Y,me.y-=J}),j.edges().forEach(he=>{let me=j.edge(he);me.points.forEach(Te=>{Te.x-=Y,Te.y-=J}),Object.hasOwn(me,"x")&&(me.x-=Y),Object.hasOwn(me,"y")&&(me.y-=J)}),ne.width=Q-Y+re,ne.height=ie-J+ge}function P(j){j.edges().forEach(Y=>{let Q=j.edge(Y),J=j.node(Y.v),ie=j.node(Y.w),ne,re;Q.points?(ne=Q.points[0],re=Q.points[Q.points.length-1]):(Q.points=[],ne=ie,re=J),Q.points.unshift(h.intersectRect(J,ne)),Q.points.push(h.intersectRect(ie,re))})}function V(j){j.edges().forEach(Y=>{let Q=j.edge(Y);if(Object.hasOwn(Q,"x"))switch((Q.labelpos==="l"||Q.labelpos==="r")&&(Q.width-=Q.labeloffset),Q.labelpos){case"l":Q.x-=Q.width/2+Q.labeloffset;break;case"r":Q.x+=Q.width/2+Q.labeloffset;break}})}function I(j){j.edges().forEach(Y=>{let Q=j.edge(Y);Q.reversed&&Q.points.reverse()})}function H(j){j.nodes().forEach(Y=>{if(j.children(Y).length){let Q=j.node(Y),J=j.node(Q.borderTop),ie=j.node(Q.borderBottom),ne=j.node(Q.borderLeft[Q.borderLeft.length-1]),re=j.node(Q.borderRight[Q.borderRight.length-1]);Q.width=Math.abs(re.x-ne.x),Q.height=Math.abs(ie.y-J.y),Q.x=ne.x+Q.width/2,Q.y=J.y+Q.height/2}}),j.nodes().forEach(Y=>{j.node(Y).dummy==="border"&&j.removeNode(Y)})}function q(j){j.edges().forEach(Y=>{if(Y.v===Y.w){var Q=j.node(Y.v);Q.selfEdges||(Q.selfEdges=[]),Q.selfEdges.push({e:Y,label:j.edge(Y)}),j.removeEdge(Y)}})}function Z(j){var Y=h.buildLayerMatrix(j);Y.forEach(Q=>{var J=0;Q.forEach((ie,ne)=>{var re=j.node(ie);re.order=ne+J,(re.selfEdges||[]).forEach(ge=>{h.addDummyNode(j,"selfedge",{width:ge.label.width,height:ge.label.height,rank:re.rank,order:ne+ ++J,e:ge.e,label:ge.label},"_se")}),delete re.selfEdges})})}function W(j){j.nodes().forEach(Y=>{var Q=j.node(Y);if(Q.dummy==="selfedge"){var J=j.node(Q.e.v),ie=J.x+J.width/2,ne=J.y,re=Q.x-ie,ge=J.height/2;j.setEdge(Q.e,Q.label),j.removeNode(Y),Q.label.points=[{x:ie+2*re/3,y:ne-ge},{x:ie+5*re/6,y:ne-ge},{x:ie+re,y:ne},{x:ie+5*re/6,y:ne+ge},{x:ie+2*re/3,y:ne+ge}],Q.label.x=Q.x,Q.label.y=Q.y}})}function G(j,Y){return h.mapValues(h.pick(j,Y),Number)}function K(j){var Y={};return j&&Object.entries(j).forEach(([Q,J])=>{typeof Q=="string"&&(Q=Q.toLowerCase()),Y[Q]=J}),Y}return EA}var SA,Mee;function XYe(){if(Mee)return SA;Mee=1;let e=On(),r=Es().Graph;SA={debugOrdering:n};function n(o){let a=e.buildLayerMatrix(o),i=new r({compound:!0,multigraph:!0}).setGraph({});return o.nodes().forEach(s=>{i.setNode(s,{label:s}),i.setParent(s,"layer"+o.node(s).rank)}),o.edges().forEach(s=>i.setEdge(s.v,s.w,{},s.name)),a.forEach((s,l)=>{let c="layer"+l;i.setNode(c,{rank:"same"}),s.reduce((u,d)=>(i.setEdge(u,d,{style:"invis"}),d))}),i}return SA}var Pee,zee;function KYe(){return zee||(zee=1,Pee="1.1.5"),Pee}var Iee,Oee;function ZYe(){return Oee||(Oee=1,Iee={graphlib:Es(),layout:GYe(),debug:XYe(),util:{time:On().time,notime:On().notime},version:KYe()}),Iee}var QYe=ZYe();const Gw=_9(QYe),wo={dagre:{ranksep:60,nodesep:35,edgesep:25},edgeLabel:{width:140,height:10,minlen:1,weight:1},emptyNodeOffset:120,nodeWidth:330,nodeHeight:180,compound:{labelHeight:2,paddingTop:50,paddingBottom:32}};function JYe(){const e=new Gw.graphlib.Graph({directed:!0,compound:!0,multigraph:!0});return e.setGraph({...wo.dagre,rankdir:"LR"}),e.setDefaultEdgeLabel(()=>({...wo.edgeLabel})),e.setDefaultNodeLabel(()=>({})),e}const CA="-port";function TA(e,r,n){const o=new Xn(i=>({id:`${e}-${i}`,portId:`${e}-${i}`})),a=Ix(r);for(const i of a.sorted){const s=a.children(i).length>0,l=i.id,c=`${e}-${l}`,u=s?`${c}${CA}`:c;o.set(l,{id:c,portId:u}),n.setNode(c,{column:e,element:i,isCompound:s,portId:u,inPorts:[],outPorts:[],width:wo.nodeWidth,height:wo.nodeHeight}),s&&(n.setNode(u,{element:i,portId:u,isCompound:s,inPorts:[],outPorts:[],width:wo.nodeWidth-wo.dagre.ranksep,height:wo.compound.labelHeight}),n.setParent(u,c));const d=a.parent(i);d&&n.setParent(c,`${e}-${d.id}`)}return{...a,byId:i=>{const s=a.byId(i),l=o.get(s.id);return{element:s,graph:l}},graphNodes:o}}function eGe(e){return Gw.layout(e,{}),r=>{const n=e.node(r),{x:o,y:a,width:i,height:s}=n;return{position:{x:o-Math.round(i/2),y:a-Math.round(s/2)},width:i,height:s}}}var Xw;(e=>{e.Empty="@empty"})(Xw||(Xw={}));function tGe(e,r){const n=JYe(),o=TA("incomers",e.incomers,n),a=TA("subjects",e.subjects,n),i=TA("outgoers",e.outgoers,n),s=[];En(ZRe(En(K1(e.incoming),Sn(T=>({id:T.source.id,sourceFqn:T.source.id,targetFqn:T.target.id,source:o.byId(T.source.id).graph,target:a.byId(T.target.id).graph,relation:T}))),En(K1(e.outgoing),Sn(T=>({id:T.target.id,sourceFqn:T.source.id,targetFqn:T.target.id,source:a.byId(T.source.id).graph,target:i.byId(T.target.id).graph,relation:T})))),Sn(T=>({...T,expr:`${T.source.id}->${T.target.id}`})),xNe(mp("expr")),bNe(T=>{const A=T[0].source,R=T[0].target,D=T[0].expr;n.node(A.id).outPorts.push(R.id),n.node(R.id).inPorts.push(A.id),n.setEdge(A.portId,R.portId,{...wo.edgeLabel},D),s.push({name:D,sourceFqn:T[0].sourceFqn,targetFqn:T[0].targetFqn,source:A.id,sourceHandle:A.id+"_out"+(n.node(A.id).outPorts.length-1),target:R.id,targetHandle:R.id+"_in"+(n.node(R.id).inPorts.length-1),relations:Sn(T,mp("relation"))})}));for(const T of a.graphNodes.values()){const A=T.id,R=n.node(A);if(R.isCompound)continue;const D=Math.max(n.inEdges(A)?.length??0,n.outEdges(A)?.length??0);D>2&&(R.height=R.height+(D-3)*14)}const l=[...o.graphNodes.values(),...a.graphNodes.values(),...i.graphNodes.values()];if(o.graphNodes.size==0){const T="incomers-empty";n.setNode(T,{column:"incomers",element:null,isCompound:!1,portId:T,inPorts:[],outPorts:[],width:wo.nodeWidth,height:wo.nodeHeight});for(const A of a.graphNodes.values())n.setEdge(T,A.portId);l.push({id:T,portId:T})}if(i.graphNodes.size==0){const T="outgoers-empty";n.setNode(T,{column:"outgoers",element:null,isCompound:!1,portId:T,inPorts:[],outPorts:[],width:wo.nodeWidth,height:wo.nodeHeight});for(const A of a.graphNodes.values())n.setEdge(A.portId,T);l.push({id:T,portId:T})}const c=n.edgeCount();if(c>10)for(const T of n.edges())n.setEdge(T,{...wo.edgeLabel,width:c>25?800:400});const u=eGe(n),d=En(l,hp(T=>T.id===T.portId),V3(T=>[T.id,u(T.id)]));function h(T){return d[T]??=En(n.children(T)??[],hp(A=>!A.endsWith(CA)),Sn(A=>h(A)),Kq(A=>{at(A.length>0,`Node ${T} has no nested nodes`)}),U3((A,R)=>({minY:Math.min(A.minY,R.position.y),maxY:Math.max(A.maxY,R.position.y+R.height)}),{minY:1/0,maxY:-1/0}),({minY:A,maxY:R})=>{const{position:{x:D},width:N}=u(T);return A=A-wo.compound.paddingTop,R=R+wo.compound.paddingBottom,{position:{x:D,y:A},width:N,height:R-A}})}function f(T){const A=n.parent(T);return A?f(A)+1:0}function g(T){const A=n.children(T)??[];return A.length===0?0:1+Math.max(...A.map(g))}const b=(T,A,R)=>En(R,Sn((D,N)=>({port:T+"_"+A+N,topY:h(D).position.y})),W3(mp("topY")),Sn(mp("port")));let x=0,w=0;const[k]=[...a.root];at(k,"Subjects should not be empty");let C=h(a.graphNodes.get(k.id).id);const _=l.map(({id:T})=>{const{element:A,inPorts:R,outPorts:D,column:N}=n.node(T);let{position:M,width:O,height:F}=h(T);if(!A){if(F=Math.min(C.height,300),M.y=C.position.y+C.height/2-F/2,N==="incomers")O=C.position.x-wo.emptyNodeOffset-M.x;else{const q=M.x+O;M.x=C.position.x+C.width+wo.emptyNodeOffset,O=q-M.x}return{id:T,parent:null,x:M.x,y:M.y,title:"empty node",description:or.EMPTY,technology:null,tags:[],links:[],color:"muted",shape:"rectangle",style:{border:"dashed",opacity:50},kind:Xw.Empty,level:0,labelBBox:{x:M.x,y:M.y,width:O,height:F},children:[],width:O,height:F,column:N,ports:{in:[],out:[]},existsInCurrentView:!1}}const L=n.parent(T),U=(n.children(T)??[]).filter(q=>!q.endsWith(CA));x=Math.min(x,M.x),w=Math.min(w,M.y);const P=r?X1(A.scopedViews(),q=>q.id!==r.id)?.id??null:null,V=r?.findNodeWithElement(A.id),I=r&&!V?X1(A.ancestors(),q=>!!r.findNodeWithElement(q.id))?.id:null,H=V??(I&&r?.findNodeWithElement(I));return{id:T,parent:L??null,x:M.x,y:M.y,title:A.title,description:A.summary,technology:A.technology,tags:[...A.tags],links:null,color:H?.color??A.color,shape:V?.shape??A.shape,icon:V?.icon??A.icon??"none",modelRef:A.id,kind:A.kind,level:f(T),labelBBox:{x:M.x,y:M.y,width:O,height:F},style:Eu({...(V??H)?.style,...A.$element.style},["color","shape","icon"]),navigateTo:P,...U.length>0&&{depth:g(T)},children:U,width:O,height:F,column:N,ports:{in:b(T,"in",R),out:b(T,"out",D)},existsInCurrentView:!!V}});return{subjectExistsInScope:!r||r.includesElement(k.id),bounds:{x:Math.min(x,0),y:Math.min(w,0),width:n.graph().width??100,height:n.graph().height??100},nodes:_,edges:n.edges().reduce((T,A)=>{const R=n.edge(A),D=A.name;if(!D)return T;const{name:N,source:M,sourceFqn:O,target:F,targetFqn:L,relations:U,sourceHandle:P,targetHandle:V}=bt(B3(s,W=>W.name===D)),I=q3(U),H=I?.title??"untitled",q=U.length>1,Z=q3(O9(U.flatMap(W=>W.navigateTo?.id?W.navigateTo.id:[])));return T.push(U1({id:N,sourceFqn:O,source:M,sourceHandle:P,targetFqn:L,target:F,targetHandle:V,label:q?`${U.length} relationships`:H,navigateTo:Z,color:I?.color??"gray",existsInCurrentView:!r||U.every(W=>r.includesRelation(W.id)),points:R.points.map(W=>[W.x,W.y]),line:I?.line??"dashed",head:I?.head,tail:I?.tail,relations:U.map(W=>W.id),parent:null})),T},[])}}function rGe(e,r,n){const o=Ko();return E.useMemo(()=>{const a=r?o.findView(r):null,i=tGe(WB(e,o,r,n),n==="view"?a:null);return a&&(n==="global"||!i.subjectExistsInScope)&&(i.edges=i.edges.map(s=>(s.existsInCurrentView=s.relations.every(l=>a.includesRelation(l)),s))),Object.assign(i,{subject:e})},[o,e,r,n,WB])}const Dy=(e,r)=>ex(e.label,r.label);function AA(e){return{label:e.title,value:e.id,children:[...e.children()].map(AA).sort(Dy)}}function nGe(e){const r=Ko();return E.useMemo(()=>e?[...r.view(e).roots()].map(AA).sort(Dy):[...r.roots()].map(AA).sort(Dy),[r,e??null])}const oGe=be({margin:"0"}),aGe=be({_hover:{backgroundColor:"mantine.colors.gray[0]",_dark:{backgroundColor:"mantine.colors.defaultHover",color:"mantine.colors.white"}}}),jee=be({maxHeight:["70vh","calc(100cqh - 70px)"]}),iGe=Object.freeze(Object.defineProperty({__proto__:null,label:aGe,node:oGe,scrollArea:jee},Symbol.toStringTag,{value:"Module"})),sGe=[["path",{d:"M8 9l4 -4l4 4",key:"svg-0"}],["path",{d:"M16 15l-4 4l-4 -4",key:"svg-1"}]],RA=Nt("outline","selector","Selector",sGe),lGe=e=>{const r=e.context.layouted?.subjectExistsInScope??!1;return{subjectId:e.context.subject,viewId:e.context.viewId,scope:e.context.scope,subjectExistsInScope:r,enableSelectSubject:e.context.enableSelectSubject,enableChangeScope:e.context.enableChangeScope}},cGe=()=>{},uGe=E.memo(()=>{const e=Ny(),{subjectId:r,viewId:n,scope:o,subjectExistsInScope:a,enableSelectSubject:i,enableChangeScope:s}=Ww(lGe),l=E.useRef(null),c=E.useRef(null),u=Ko().findElement(r),d=nGe(o==="view"&&n?n:void 0),h=G0({multiple:!1});return h.setHoveredNode=cGe,E.useEffect(()=>{jd(r).reverse().forEach(f=>{h.expand(f)}),h.select(r)},[r]),y.jsxs(pn,{ref:l,gap:"xs",pos:"relative",children:[i&&y.jsxs(pn,{gap:4,wrap:"nowrap",children:[y.jsx(Re,{fz:"xs",fw:"500",style:{whiteSpace:"nowrap",userSelect:"none"},children:"Relationships of"}),y.jsx(Re,{pos:"relative",children:y.jsxs(Rr,{position:"bottom-start",shadow:"md",keepMounted:!1,withinPortal:!1,closeOnClickOutside:!0,clickOutsideEvents:["pointerdown","mousedown","click"],offset:4,onOpen:()=>{setTimeout(()=>{c.current?.querySelector(`[data-value="${r}"]`)?.scrollIntoView({behavior:"instant",block:"nearest"})},100)},children:[y.jsx($u,{children:y.jsx(Kn,{size:"xs",variant:"default",maw:250,rightSection:y.jsx(RA,{size:16}),children:y.jsx(ft,{fz:"xs",fw:"500",truncate:!0,children:u?.title??"???"})})}),y.jsx(fc,{p:0,miw:250,maw:400,children:y.jsx(pa,{scrollbars:"y",type:"never",viewportRef:c,className:jee,children:y.jsx(hm,{allowRangeSelection:!1,selectOnClick:!1,tree:h,data:d,classNames:iGe,levelOffset:8,styles:{root:{maxWidth:400,overflow:"hidden"},label:{paddingTop:5,paddingBottom:6}},renderNode:({node:f,selected:g,expanded:b,elementProps:x,hasChildren:w})=>y.jsxs(pn,{gap:2,wrap:"nowrap",...x,py:"3",children:[y.jsx(br,{variant:"subtle",size:18,c:"dimmed",style:{visibility:w?"visible":"hidden"},children:y.jsx(qu,{stroke:3.5,style:{transition:"transform 150ms ease",transform:`rotate(${b?"90deg":"0"})`,width:"80%"}})}),y.jsx(Re,{flex:"1 1 100%",w:"100%",onClick:k=>{k.stopPropagation(),h.select(f.value),h.expand(f.value),e.navigateTo(f.value)},children:y.jsx(ft,{fz:"sm",fw:g?"600":"400",truncate:"end",children:f.label})})]})})})})]})})]}),s&&y.jsxs(pn,{gap:4,wrap:"nowrap",children:[i&&y.jsx(Re,{fz:"xs",fw:"500",...!a&&{c:"dimmed"},style:{whiteSpace:"nowrap",userSelect:"none"},children:"Scope"}),y.jsx("div",{children:y.jsx(co,{color:"orange",label:y.jsxs(y.Fragment,{children:["This element does not exist in the current view",o==="view"&&y.jsxs(y.Fragment,{children:[y.jsx("br",{}),"Scope is set to global"]})]}),position:"bottom-start",disabled:a,portalProps:{target:l.current},children:y.jsx(dm,{flex:"1 0 auto",size:"xs",withItemsBorders:!1,value:o,styles:{label:{paddingLeft:8,paddingRight:8}},onChange:f=>{e.changeScope(f)},data:[{label:"Global",value:"global"},{label:y.jsx("span",{children:"Current view"}),value:"view",disabled:!a}]})})})]})]})}),Kw=(e,r)=>Math.abs(e-r)<2.5,dGe=(e,r)=>e.id===r.id&<(e.selected??!1,r.selected??!1)&<(e.animated??!1,r.animated??!1)&<(e.source,r.source)&&Kw(e.sourceX,r.sourceX)&&Kw(e.sourceY,r.sourceY)&<(e.sourceHandleId??null,r.sourceHandleId??null)&<(e.sourcePosition,r.sourcePosition)&<(e.target,r.target)&&Kw(e.targetY,r.targetY)&&Kw(e.targetX,r.targetX)&<(e.targetHandleId??null,r.targetHandleId??null)&<(e.targetPosition,r.targetPosition)&<(e.data,r.data);function NA(e){const r=E.memo(e,dGe);return r.displayName=`MemoEdge(${e.displayName||e.name})`,r}function Lee(e,r){return $w(e,r)}const Ni=Lee("button"),Br=Lee("div"),$y=E.forwardRef(({edgeProps:{id:e,data:{label:r,technology:n,hovered:o=!1},selected:a=!1,selectable:i=!1},pointerEvents:s="all",className:l,style:c,children:u,...d},h)=>{const f=q1(e)?SB(e):null,g=oWe({pointerEvents:s,isStepEdge:f!==null,cursor:i||f!==null?"pointer":"default"}),b=ua(r)||ua(n);return y.jsxs(Br,{ref:h,className:et(g.root,"likec4-edge-label",l),"data-edge-id":e,animate:{scale:o&&!a?1.06:1},...d,children:[f!==null&&y.jsx(zr,{className:g.stepNumber,children:f}),b&&y.jsxs(zr,{className:g.labelContents,children:[ua(r)&&y.jsx(zr,{className:et(g.labelText,be({lineClamp:5})),children:r}),ua(n)&&y.jsx(zr,{className:g.labelTechnology,children:"[ "+n+" ]"}),u]})]})});$y.displayName="EdgeLabel";function Zw({icon:e,onClick:r}){return y.jsx(br,{className:et("nodrag nopan",GUe()),onPointerDownCapture:Cn,onClick:r,role:"button",onDoubleClick:Cn,children:e??y.jsx(Ri,{})})}const pGe=".react-flow__edge.selected",hGe=be({_reduceGraphics:{transition:"none"}}),fGe=be({pointerEvents:"none",fill:"none",strokeWidth:"calc(var(--xy-edge-stroke-width) + 2)",strokeOpacity:.08,_noReduceGraphics:{transitionProperty:"stroke-width, stroke-opacity",transitionDuration:"fast",transitionTimingFunction:"inOut"},_whenHovered:{transitionTimingFunction:"out",strokeWidth:"calc(var(--xy-edge-stroke-width) + 4)",strokeOpacity:.2},_whenSelected:{strokeWidth:"calc(var(--xy-edge-stroke-width) + 6)",strokeOpacity:.25,_whenHovered:{strokeOpacity:.4}}}),mGe=be({fill:"[var(--xy-edge-stroke)]",stroke:"[var(--xy-edge-stroke)]"}),gGe=be({fill:"none",strokeDashoffset:0,_noReduceGraphics:{animationStyle:"xyedgeAnimated",animationPlayState:"paused",transition:"stroke 130ms ease-out,stroke-width 130ms ease-out"},":where([data-edge-dir='back']) &":{animationDirection:"reverse"},_whenHovered:{_noReduceGraphics:{animationPlayState:"running",animationDelay:"450ms"}},[`:where(${pGe}, [data-edge-active='true'], [data-edge-animated='true']) &`]:{_noReduceGraphics:{animationPlayState:"running",animationDelay:"0ms"}},_whenDimmed:{animationPlayState:"paused"},_smallZoom:{animationName:"none"},_whenPanning:{strokeDasharray:"none !important",animationPlayState:"paused"}});function My({className:e,component:r="g",selected:n=!1,data:{color:o="gray",hovered:a=!1,active:i=!1,dimmed:s=!1,...l},children:c,style:u}){const d={className:et(e,hGe,"likec4-edge-container"),"data-likec4-color":o,"data-edge-dir":l.dir??"forward","data-edge-active":i,"data-edge-animated":i,"data-likec4-hovered":a,...n&&{"data-likec4-selected":n},...s!==!1&&{"data-likec4-dimmed":s}};return r==="svg"?y.jsx("svg",{style:u,...d,children:c}):(at(r==="g",'EdgeContainer: component must be "g" or "svg"'),y.jsx("g",{style:u,...d,children:c}))}const yGe=e=>y.jsx("marker",{viewBox:"-4 -4 14 16",refX:5,refY:4,markerWidth:"7",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...e,children:y.jsx("path",{d:"M0,0 L7,4 L0,8 L4,4 Z",stroke:"context-stroke",fill:"context-stroke",strokeDasharray:0,strokeWidth:1,strokeLinecap:"round"})}),bGe=e=>y.jsx("marker",{viewBox:"-1 -1 12 10",refX:4,refY:3,markerWidth:"8",markerHeight:"6",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...e,children:y.jsx("path",{d:"M 0 0 L 8 3 L 0 6 L 1 3 z",fill:"context-stroke",strokeWidth:0})}),vGe=e=>y.jsx("marker",{viewBox:"-1 -1 12 12",refX:8,refY:4,markerWidth:"8",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...e,children:y.jsx("path",{d:"M 8 0 L 0 4 L 8 8 M 8 4 L 0 4",fill:"none",strokeWidth:1})}),xGe=e=>y.jsx("marker",{viewBox:"-1 -1 12 10",refX:4,refY:3,markerWidth:"8",markerHeight:"6",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...e,children:y.jsx("path",{d:"M 0 0 L 8 3 L 0 6 L 1 3 z",stroke:"context-stroke",fill:"context-stroke",strokeWidth:1.25,strokeLinejoin:"miter",strokeLinecap:"square"})}),wGe=e=>y.jsx("marker",{viewBox:"-4 -4 16 14",refX:5,refY:4,markerWidth:"10",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...e,children:y.jsx("path",{d:"M5,0 L10,4 L5,8 L0,4 Z",fill:"context-stroke",strokeWidth:0,strokeLinecap:"round"})}),kGe=e=>y.jsx("marker",{viewBox:"-4 -4 16 14",refX:6,refY:4,markerWidth:"10",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...e,children:y.jsx("path",{d:"M5,0 L10,4 L5,8 L0,4 Z",stroke:"context-stroke",fill:"context-stroke",strokeWidth:1.25,strokeLinecap:"round"})}),_Ge=e=>y.jsx("marker",{viewBox:"0 0 10 10",refX:4,refY:4,markerWidth:"6",markerHeight:"6",...e,children:y.jsx("circle",{strokeWidth:0,fill:"context-stroke",cx:4,cy:4,r:3})}),EGe=e=>y.jsx("marker",{viewBox:"0 0 10 10",refX:4,refY:4,markerWidth:"6",markerHeight:"6",...e,children:y.jsx("circle",{strokeWidth:1.25,stroke:"context-stroke",fill:"context-stroke",cx:4,cy:4,r:3})}),Bee={Arrow:bGe,Crow:vGe,OArrow:xGe,Open:yGe,Diamond:wGe,ODiamond:kGe,Dot:_Ge,ODot:EGe};function Fee(e){if(!(!e||e==="none"))switch(e){case"normal":return"Arrow";case"crow":return"Crow";case"onormal":return"OArrow";case"diamond":return"Diamond";case"odiamond":return"ODiamond";case"open":case"vee":return"Open";case"dot":return"Dot";case"odot":return"ODot";default:Zi(e)}}const Py=E.forwardRef(({edgeProps:{id:e,data:{line:r,dir:n,tail:o,head:a},selectable:i=!0,style:s,interactionWidth:l},isDragging:c=!1,onEdgePointerDown:u,strokeWidth:d,svgPath:h},f)=>{let g=Fee(o),b=Fee(a??"normal");n==="back"&&([g,b]=[b,g]);const x=g?Bee[g]:null,w=b?Bee[b]:null,k=r==="dotted",C=k||r==="dashed";let _;return k?_="1,8":C&&(_="8,10"),y.jsxs(y.Fragment,{children:[i&&!c&&y.jsx("path",{className:et("react-flow__edge-interaction",be({fill:"none"})),onPointerDown:u,d:h,style:{strokeWidth:l??10,stroke:"currentcolor",strokeOpacity:0}}),y.jsxs("g",{className:mGe,onPointerDown:u,children:[y.jsxs("defs",{children:[x&&y.jsx(x,{id:"start"+e}),w&&y.jsx(w,{id:"end"+e})]}),!c&&y.jsx("path",{className:et("react-flow__edge-path","hide-on-reduced-graphics",fGe),d:h,style:s,strokeLinecap:"round"},"edge-path-bg"),y.jsx("path",{ref:f,className:et("react-flow__edge-path",i&&"react-flow__edge-interaction",gGe),d:h,style:s,strokeWidth:d,strokeLinecap:"round",strokeDasharray:_,markerStart:x?`url(#start${e})`:void 0,markerEnd:w?`url(#end${e})`:void 0},"edge-path")]})]})});Py.displayName="EdgePath";const Hee=e=>{if(e!==void 0)return _u(e)?`${Math.round(e)}px`:e};function Qw({edgeProps:{id:e,selected:r=!1,data:{hovered:n=!1,active:o=!1,dimmed:a=!1,labelBBox:i,color:s="gray"}},labelPosition:l,className:c,style:u,children:d,...h}){let f=Iw(E.useCallback(w=>w.edgeLookup.get(e)?.zIndex??_l.Edge,[e]));(n||o)&&(f+=100);let g=l?.x??i?.x,b=l?.y??i?.y;if(g===void 0||b===void 0)return null;const x=l?.translate;return y.jsx(Dq,{children:y.jsx("div",{...h,className:et("nodrag nopan","likec4-edge-label-container",c),"data-likec4-hovered":n,"data-likec4-color":s,"data-edge-active":o,"data-edge-animated":o,...r!==!1&&{"data-likec4-selected":r},...a!==!1&&{"data-likec4-dimmed":a},style:{...i&&{maxWidth:i.width+18},zIndex:f,...u,transform:`translate(${Hee(g)}, ${Hee(b)}) ${x||""}`},children:d},e)})}const SGe=NA(e=>{const r=Ny(),{enableNavigateTo:n}=_r(),{data:{navigateTo:o,relations:a,existsInCurrentView:i}}=e,[s,l,c]=C3(e),u=Qt(),d=a.length>1||!i,h=d?{...e,data:{...e.data,line:"solid",color:"amber"}}:e;let f=y.jsx($y,{edgeProps:h,className:be({transition:"fast"}),children:n&&o&&y.jsx(Zw,{...e,onClick:g=>{g.stopPropagation(),u.navigateTo(o)}})});return i||(f=y.jsx(co,{color:"orange",c:"black",label:"This relationship is not included in the current view",portalProps:{target:`#${r.rootElementId}`},openDelay:800,children:f})),y.jsxs(My,{...h,children:[y.jsx(Py,{edgeProps:h,svgPath:s,...d&&{strokeWidth:5}}),y.jsx(Qw,{edgeProps:h,labelPosition:{x:l,y:c,translate:"translate(-50%, 0)"},style:{maxWidth:Math.min(Math.abs(e.targetX-e.sourceX-70),250)},children:f})]})}),CGe=be({width:"100%",height:"100%",border:"3px dashed",borderColor:"mantine.colors.defaultBorder",borderRadius:"md",display:"flex",justifyContent:"center",alignItems:"center"});function TGe({data:{column:e}}){return y.jsx(Re,{className:CGe,children:y.jsxs(ft,{c:"dimmed",fz:"lg",fw:500,children:["No ",e==="incomers"?"incoming":"outgoing"]})})}const AGe=e=>e.context.view.id;function Jw(){const e=zp();return fn(e,AGe)}const RGe=e=>e.context.view;function NGe(){const e=zp();return fn(e,RGe,an)}const DGe=[["path",{d:"M3 6a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-0"}],["path",{d:"M21 11v-3a2 2 0 0 0 -2 -2h-6l3 3m0 -6l-3 3",key:"svg-1"}],["path",{d:"M3 13v3a2 2 0 0 0 2 2h6l-3 -3m0 6l3 -3",key:"svg-2"}],["path",{d:"M15 18a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-3"}]],zy=Nt("outline","transform","Transform",DGe),$Ge=[["path",{d:"M4 21v-4a3 3 0 0 1 3 -3h5",key:"svg-0"}],["path",{d:"M9 17l3 -3l-3 -3",key:"svg-1"}],["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-2"}],["path",{d:"M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5",key:"svg-3"}]],zm=Nt("outline","file-symlink","FileSymlink",$Ge),MGe=[["path",{d:"M13 3l0 7l6 0l-8 11l0 -7l-6 0l8 -11",key:"svg-0"}]],PGe=Nt("outline","bolt","Bolt",MGe),zGe=Zn({position:"absolute",zIndex:1,justifyContent:"center",alignItems:"center",_smallZoom:{display:"none"}}),IGe=Zn({gap:"1.5",justifyContent:"center",alignItems:"center"});function e4({selected:e=!1,data:{hovered:r=!1},buttons:n}){const o=fi();return n.length?y.jsx(zr,{className:zGe,style:{top:"calc(100% - 30px)",transform:"translateX(-50%)",left:"50%",width:"auto",minHeight:30},children:y.jsx(Br,{layoutRoot:!0,initial:!1,style:{originY:0},animate:{opacity:r||e?1:.75,scale:r?1.1:e?.9:.8,y:r||e?6:0},"data-likec4-hovered":r,className:et("nodrag nopan",IGe),children:n.map((a,i)=>y.jsx(br,{component:Ni,className:zw({}),initial:!1,whileTap:{scale:1},whileHover:{scale:1.3},onClick:a.onClick,onDoubleClick:Cn,children:a.icon||y.jsx(PGe,{})},`${o}-${a.key??i}`))},`${o}-action-buttons`)}):null}const OGe=e=>e.context.subject,jGe=e=>{const{enableNavigateTo:r,enableVscode:n}=_r(),o=Qt(),a=Jw(),i=Ny(),s=Ww(OGe),{navigateTo:l,fqn:c}=e.data,u=E.useMemo(()=>{const d=[];return l&&r&&a!==l&&d.push({key:"navigate",icon:y.jsx(Ri,{}),onClick:h=>{h.stopPropagation(),o.navigateTo(l)}}),c!==s&&d.push({key:"relationships",icon:y.jsx(zy,{}),onClick:h=>{h.stopPropagation(),i.navigateTo(c,e.id)}}),n&&d.push({key:"goToSource",icon:y.jsx(zm,{}),onClick:h=>{h.stopPropagation(),o.openSource({element:c})}}),d},[l,r,a,c,s,n,o,i,e.id]);return y.jsx(e4,{buttons:u,...e})};function Iy({nodeProps:{data:{hovered:e=!1,dimmed:r=!1,...n}},className:o,children:a,style:i,...s}){let l=us(n.style.opacity??100,{min:0,max:100});const c=l<99,u=65,d=u+us((100-u)*(l/100),{min:0,max:100-u}),h=YUe({isTransparent:c,inverseColor:l<60,borderStyle:n.style.border??(c?"dashed":"none")}),f=us(n.depth??1,{min:1,max:5});return y.jsx(Br,{className:et(h,o),initial:!1,"data-likec4-hovered":e,"data-likec4-color":n.color,"data-compound-depth":f,...r!==!1&&{"data-likec4-dimmed":r},style:{...i,"--_border-transparency":`${d}%`,"--_compound-transparency":`${l}%`},...s,children:a})}function Oy({data:e}){const r=Xx({element:e,className:"likec4-compound-icon"});return y.jsxs("div",{className:"likec4-compound-title-container",children:[r,y.jsx(ft,{component:"h3",className:"likec4-compound-title",truncate:"end",children:e.title})]})}const Vee=o0({base:{transitionDuration:"normal"},variants:{delay:{true:{transitionDelay:{base:"0.2s",_hover:"0s"}}}}}),LGe=[["path",{d:"M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v10a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z",key:"svg-0"}],["path",{d:"M9 10m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-1"}],["path",{d:"M15 8l2 0",key:"svg-2"}],["path",{d:"M15 12l2 0",key:"svg-3"}],["path",{d:"M7 16l10 0",key:"svg-4"}]],DA=Nt("outline","id","Id",LGe);function qee({data:{hovered:e=!1},icon:r,onClick:n}){const o=W9(e,e?130:0)[0]&&e;return y.jsx(Br,{initial:!1,animate:{scale:o?1.2:1},whileHover:{scale:1.4},whileTap:{scale:1},className:"likec4-compound-details details-button",children:y.jsx(br,{className:et("nodrag nopan",Vee({delay:e&&!o}),zw({variant:"transparent"})),onClick:n,onDoubleClick:Cn,children:r??y.jsx(DA,{stroke:1.8,style:{width:"75%"}})})})}const BGe=be({position:"relative",width:"full",height:"full",padding:"0",margin:"0",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",_focusVisible:{outline:"none"},_whenSelectable:{pointerEvents:"all",_before:{content:'" "',position:"absolute",top:"[calc(100% - 4px)]",left:"0",width:"full",height:"24px",background:"transparent",pointerEvents:"all"}},_reduceGraphicsOnPan:{_before:{display:"none"}},":where(.react-flow__node.selectable:not(.dragging)) &":{cursor:"pointer"}}),Im=E.forwardRef(({nodeProps:{selected:e=!1,selectable:r=!1,data:{hovered:n=!1,dimmed:o=!1,...a}},className:i,style:s,children:l,...c},u)=>{let d=1;switch(!0){case n:d=1.05;break;case e:d=1.02;break}const{size:h,padding:f,textSize:g}=Jv(a.style??{});return y.jsx(Br,{ref:u,className:et(BGe,"group","likec4-element-node",i),initial:!1,...r&&{animate:{scale:d},whileTap:{scale:.98}},"data-likec4-hovered":n,"data-likec4-color":a.color,"data-likec4-shape":a.shape,"data-likec4-shape-size":h,"data-likec4-spacing":f,"data-likec4-text-size":g,...o!==!1&&{"data-likec4-dimmed":o},style:{...s},...c,children:l})});Im.displayName="ElementNodeContainer";function Uee(e,r,n=.065){const o=Math.round(e/2),a=o,i=Uu(n*o),s=r-2*i;return{path:` M ${e},${i} + a ${a},${i} 0,0,0 ${-e} 0 + l 0,${s} + a ${a},${i} 0,0,0 ${e} 0 + l 0,${-s} + z + `.replace(/\s+/g," ").trim(),ry:i,rx:a}}function Wee(e,r,n=.185){const o=r,a=Math.round(o/2),i=Uu(o/2*n),s=e-2*i;return{path:` + M ${i},0 + a ${i},${a} 0,0,0 0 ${o} + l ${s},0 + a ${i},${a} 0,0,0 0 ${-o} + z`.replace(/\s+/g," ").trim(),ry:a,rx:i}}const Up={width:115,height:120,path:"M57.9197 0C10.9124 0 33.5766 54.75 33.5766 54.75C38.6131 62.25 45.3285 60.75 45.3285 66C45.3285 70.5 39.4526 72 33.5766 72.75C24.3431 72.75 15.9489 71.25 7.55474 84.75C2.51825 93 0 120 0 120H115C115 120 112.482 93 108.285 84.75C99.8905 70.5 91.4963 72.75 82.2628 72C76.3869 71.25 70.5109 69.75 70.5109 65.25C70.5109 60.75 77.2263 62.25 82.2628 54C82.2628 54.75 104.927 0 57.9197 0V0Z"};function Yee({shape:e,w:r,h:n}){switch(e){case"mobile":return y.jsxs(y.Fragment,{children:[y.jsx("rect",{width:r,height:n,rx:6,"data-likec4-fill":"mix-stroke",strokeWidth:0}),y.jsxs("g",{"data-likec4-fill":"fill",strokeWidth:0,children:[y.jsx("circle",{cx:17,cy:n/2,r:12}),y.jsx("rect",{x:33,y:12,width:r-44,height:n-24,rx:5})]})]});case"browser":return y.jsxs(y.Fragment,{children:[y.jsx("rect",{width:r,height:n,rx:6,"data-likec4-fill":"mix-stroke",strokeWidth:0}),y.jsxs("g",{"data-likec4-fill":"fill",strokeWidth:0,children:[y.jsx("circle",{cx:16,cy:17,r:7}),y.jsx("circle",{cx:36,cy:17,r:7}),y.jsx("circle",{cx:56,cy:17,r:7}),y.jsx("rect",{x:70,y:8,width:r-80,height:17,rx:4}),y.jsx("rect",{x:10,y:32,width:r-20,height:n-42,rx:4})]})]});case"person":return y.jsxs(y.Fragment,{children:[y.jsx("rect",{width:r,height:n,rx:6,strokeWidth:0}),y.jsx("svg",{x:r-Up.width-6,y:n-Up.height,width:Up.width,height:Up.height,viewBox:`0 0 ${Up.width} ${Up.height}`,"data-likec4-fill":"mix-stroke",children:y.jsx("path",{strokeWidth:0,d:Up.path})})]});case"queue":{const{path:o,rx:a,ry:i}=Wee(r,n);return y.jsxs(y.Fragment,{children:[y.jsx("path",{d:o,strokeWidth:2}),y.jsx("ellipse",{cx:a,cy:i,ry:i-.75,rx:a,"data-likec4-fill":"mix-stroke",strokeWidth:2})]})}case"storage":case"cylinder":{const{path:o,rx:a,ry:i}=Uee(r,n);return y.jsxs(y.Fragment,{children:[y.jsx("path",{d:o,strokeWidth:2}),y.jsx("ellipse",{cx:a,cy:i,ry:i,rx:a-.75,"data-likec4-fill":"mix-stroke",strokeWidth:2})]})}default:return Zi(e)}}function FGe({shape:e,w:r,h:n}){let o;switch(e){case"queue":o=y.jsx("path",{d:Wee(r,n).path});break;case"storage":case"cylinder":{o=y.jsx("path",{d:Uee(r,n).path});break}default:{o=y.jsx("rect",{x:-1,y:-1,width:r+2,height:n+2,rx:6});break}}return y.jsx("g",{className:"likec4-shape-outline",children:o})}function HGe({multiple:e,withOutLine:r}){return y.jsxs("div",{className:eJ({shapetype:"html"}),children:[e&&y.jsx("div",{className:"likec4-shape-multiple"}),r&&y.jsx("div",{className:"likec4-shape-outline"})]})}function Om({data:e,width:r,height:n,showSeletionOutline:o=!0}){let a=r&&r>10?r:e.width,i=n&&n>10?n:e.height;const s=e.style?.multiple??!1;if(e.shape==="rectangle")return y.jsx(HGe,{multiple:s,withOutLine:o});const l=eJ({shapetype:"svg"});return y.jsxs(y.Fragment,{children:[s&&y.jsx("svg",{className:l,"data-likec4-shape-multiple":"true",viewBox:`0 0 ${a} ${i}`,children:y.jsx(Yee,{shape:e.shape,w:a,h:i})}),y.jsxs("svg",{className:l,viewBox:`0 0 ${a} ${i}`,children:[o&&y.jsx(FGe,{shape:e.shape,w:a,h:i}),y.jsx(Yee,{shape:e.shape,w:a,h:i})]})]})}const Wp=E.forwardRef(({value:e,textScale:r=1,uselikec4palette:n=!1,hideIfEmpty:o=!1,emptyText:a="no content",className:i,style:s,fontSize:l,...c},u)=>{if(e.isEmpty&&o)return null;const d=e.nonEmpty?e.isMarkdown?{dangerouslySetInnerHTML:{__html:e.html}}:{children:y.jsx("p",{children:e.text})}:{children:y.jsx(ft,{component:"span",fz:"xs",c:"dimmed",style:{userSelect:"none"},children:a})};return y.jsx(zr,{ref:u,...c,className:et(ZUe({uselikec4palette:n,value:e.isMarkdown?"markdown":"plaintext"}),i),style:{...s,...l&&{"--text-fz":`var(--font-sizes-${l}, var(--font-sizes-md))`},"--mantine-scale":r},...d})});Wp.displayName="Markdown";const Gee=E.forwardRef(({className:e,...r},n)=>y.jsx("div",{...r,ref:n,className:et(e,XUe(),"likec4-element")})),Xee=({data:e,...r})=>y.jsx(Xx,{element:e,...r}),Kee=E.forwardRef(({className:e,...r},n)=>y.jsx("div",{...r,className:et(e,"likec4-element-node-content"),ref:n})),Zee=E.forwardRef(({data:{title:e,style:r},className:n,...o},a)=>{const{size:i}=Jv(r),s=i==="sm"||i==="xs";return y.jsx(ft,{component:"div",...o,className:et(n,"likec4-element-title"),"data-likec4-node-title":"",lineClamp:s?2:3,ref:a,children:e})}),Qee=E.forwardRef(({data:e,children:r,className:n,...o},a)=>{const i=e?.technology??r;return ua(i)?y.jsx(ft,{component:"div",...o,className:et(n,"likec4-element-technology"),"data-likec4-node-technology":"",ref:a,children:i}):null}),Jee=E.forwardRef(({data:{description:e,style:r},className:n,...o},a)=>{if(!e?.nonEmpty)return null;const{size:i}=Jv(r),s=i==="sm"||i==="xs";return y.jsx(Wp,{...o,className:et(n,"likec4-element-description"),"data-likec4-node-description":"",value:e,uselikec4palette:!0,hideIfEmpty:!0,maxHeight:e.isMarkdown?"8rem ":void 0,lineClamp:s?3:5,ref:a})});function Ss({iconSize:e,data:r}){return y.jsxs(Gee,{style:_u(e)?{"--likec4-icon-size":`${e}px`}:void 0,children:[y.jsx(Xee,{data:r}),y.jsxs(Kee,{children:[y.jsx(Zee,{data:r}),y.jsx(Qee,{data:r}),y.jsx(Jee,{data:r})]})]})}Ss.Root=Gee,Ss.Icon=Xee,Ss.Content=Kee,Ss.Title=Zee,Ss.Technology=Qee,Ss.Description=Jee;const VGe=be({position:"absolute",top:"0.5",right:"0.5",_shapeBrowser:{right:"[5px]"},_shapeCylinder:{top:"[14px]"},_shapeStorage:{top:"[14px]"},_shapeQueue:{top:"[1px]",right:"3"},_smallZoom:{display:"none"}});function $A({selected:e=!1,data:{hovered:r=!1},icon:n,onClick:o}){return y.jsx(zr,{className:et(VGe,"details-button"),children:y.jsx(br,{className:et("nodrag nopan",zw({variant:"transparent"})),component:Ni,initial:!1,style:{originX:.45,originY:.55},animate:r||e?{scale:1.2,opacity:.8}:{scale:1,opacity:.5},whileHover:{scale:1.4,opacity:1},whileTap:{scale:1.15},onClick:o,onDoubleClick:Cn,children:n??y.jsx(DA,{stroke:1.8,style:{width:"75%"}})})})}const qGe=e=>{const r=Qt();return y.jsx($A,{...e,onClick:n=>{n.stopPropagation(),r.openElementDetails(e.data.fqn)}})};function UGe(e){const{enableElementTags:r}=_r();return y.jsxs(Im,{layoutId:e.id,nodeProps:e,children:[y.jsx(Om,{...e}),y.jsx(Ss,{...e}),r&&y.jsx(Ry,{...e}),y.jsx(qGe,{...e}),y.jsx(jGe,{...e}),y.jsx(YGe,{...e})]},e.id)}function WGe(e){const r=Qt();return y.jsxs(Iy,{layoutId:e.id,nodeProps:e,children:[y.jsx(Oy,{...e}),y.jsx(qee,{...e,onClick:n=>{n.stopPropagation(),r.openElementDetails(e.data.fqn)}}),y.jsx(GGe,{...e})]},e.id)}const YGe=({data:{ports:e,height:r}})=>y.jsxs(y.Fragment,{children:[e.in.map((n,o)=>y.jsx(yo,{id:n,type:"target",position:tt.Left,style:{visibility:"hidden",top:`${15+(o+1)*((r-30)/(e.in.length+1))}px`}},n)),e.out.map((n,o)=>y.jsx(yo,{id:n,type:"source",position:tt.Right,style:{visibility:"hidden",top:`${15+(o+1)*((r-30)/(e.out.length+1))}px`}},n))]}),GGe=({data:e})=>y.jsxs(y.Fragment,{children:[e.ports.in.map((r,n)=>y.jsx(yo,{id:r,type:"target",position:tt.Left,style:{visibility:"hidden",top:`${20*(n+1)}px`}},r)),e.ports.out.map((r,n)=>y.jsx(yo,{id:r,type:"source",position:tt.Right,style:{visibility:"hidden",top:`${20*(n+1)}px`}},r))]}),XGe=[["path",{d:"M15 6l-6 6l6 6",key:"svg-0"}]],ete=Nt("outline","chevron-left","ChevronLeft",XGe),KGe={element:UGe,compound:WGe,empty:TGe},ZGe={relationship:SGe};function tte({actorRef:e}){const r=E.useRef(null);return r.current==null&&(r.current={initialNodes:[],initialEdges:[]}),y.jsx($J.Provider,{value:e,children:y.jsx(O3,{...r.current,children:y.jsx($m,{id:e.sessionId,inherit:!1,children:y.jsx(Qn,{children:y.jsx(eXe,{})})})})})}const QGe=e=>({isActive:e.hasTag("active"),nodes:e.context.xynodes,edges:e.context.xyedges}),JGe=(e,r)=>e.isActive===r.isActive&&an(e.nodes,r.nodes)&&an(e.edges,r.edges),eXe=E.memo(()=>{const e=Ny(),{isActive:r,nodes:n,edges:o}=Ww(QGe,JGe);return y.jsx(IT,{id:e.rootElementId,nodes:n,edges:o,className:et(r?"initialized":"not-initialized","relationships-browser"),nodeTypes:KGe,edgeTypes:ZGe,fitView:!1,onNodeClick:kt((a,i)=>{a.stopPropagation(),e.send({type:"xyflow.nodeClick",node:i})}),onEdgeClick:kt((a,i)=>{a.stopPropagation(),e.send({type:"xyflow.edgeClick",edge:i})}),onPaneClick:kt(a=>{a.stopPropagation(),e.send({type:"xyflow.paneClick"})}),onDoubleClick:kt(a=>{e.send({type:"xyflow.paneDblClick"})}),onViewportResize:kt(()=>{e.send({type:"xyflow.resized"})}),onNodesChange:kt(a=>{e.send({type:"xyflow.applyNodeChanges",changes:a})}),onEdgesChange:kt(a=>{e.send({type:"xyflow.applyEdgeChanges",changes:a})}),onEdgeMouseEnter:kt((a,i)=>{i.data.hovered||e.send({type:"xyflow.edgeMouseEnter",edge:i})}),onEdgeMouseLeave:kt((a,i)=>{i.data.hovered&&e.send({type:"xyflow.edgeMouseLeave",edge:i})}),onSelectionChange:kt(a=>{e.send({type:"xyflow.selectionChange",...a})}),nodesDraggable:!1,nodesSelectable:!0,pannable:!0,zoomable:!0,children:y.jsx(rXe,{})})}),tXe=e=>({subjectId:e.context.subject,viewId:e.context.viewId,scope:e.context.scope,closeable:e.context.closeable}),rXe=E.memo(()=>{const e=Ny(),{subjectId:r,viewId:n,scope:o,closeable:a}=Ww(tXe),i=Ar(),s=Bf();E.useEffect(()=>{s.viewportInitialized&&e.send({type:"xyflow.init",instance:s,store:i})},[i,s.viewportInitialized,e]);const l=rGe(r,n,o),[c,u,{history:d,current:h}]=$U(r);E.useEffect(()=>{c!==r&&u.set(r)},[r]),E.useEffect(()=>{c!==r&&e.navigateTo(c)},[c,e]),qE(()=>{e.updateView(l)},[l,e]);const f=h>0,g=h+1u.back(),onStepForward:()=>u.forward()}),a&&y.jsx(ku,{position:"top-right",children:y.jsx(br,{variant:"default",color:"gray",onClick:b=>{b.stopPropagation(),e.close()},children:y.jsx(Rp,{})})})]})}),nXe=({hasStepBack:e,hasStepForward:r,onStepBack:n,onStepForward:o})=>y.jsx(ku,{position:"top-left",children:y.jsxs(pn,{gap:4,wrap:"nowrap",children:[y.jsxs(Qn,{mode:"popLayout",children:[e&&y.jsx(Ei.div,{layout:!0,initial:{opacity:.05,transform:"translateX(-5px)"},animate:{opacity:1,transform:"translateX(0)"},exit:{opacity:.05,transform:"translateX(-10px)"},children:y.jsx(br,{variant:"default",color:"gray",onClick:a=>{a.stopPropagation(),n()},children:y.jsx(ete,{})})},"back"),r&&y.jsx(Ei.div,{layout:!0,initial:{opacity:.05,transform:"translateX(5px)"},animate:{opacity:1,transform:"translateX(0)"},exit:{opacity:0,transform:"translateX(5px)"},children:y.jsx(br,{variant:"default",color:"gray",onClick:a=>{a.stopPropagation(),o()},children:y.jsx(qu,{})})},"forward")]}),y.jsx(uGe,{})]})}),oXe=be({display:"inline-block",fontSize:"sm",fontWeight:500,whiteSpace:"nowrap",padding:"[3px 6px]",borderRadius:3,background:"var(--likec4-palette-fill)/75",lineHeight:1.2,color:"var(--likec4-palette-hiContrast)"}),aXe=be({_light:{background:"mantine.colors.gray[1]","&[data-missing":{}},"&[data-missing]":{color:"mantine.colors.orange[4]",background:"mantine.colors.orange[8]/15",borderColor:"mantine.colors.orange[5]/20",_light:{color:"mantine.colors.orange[8]"}}}),iXe=be({flex:"1 1 100%",position:"relative",width:"100%",height:"100%",background:"mantine.colors.body",border:"1px solid {colors.mantine.colors.defaultBorder}",borderRadius:"sm",_light:{borderColor:"mantine.colors.gray[3]",background:"mantine.colors.gray[1]"}});be({_before:{content:'"scope:"',position:"absolute",top:"0",left:"2",fontSize:"xxs",fontWeight:500,lineHeight:"1",color:"mantine.colors.dimmed",opacity:.85,transform:"translateY(-100%) translateY(-2px)"},_light:{"& .mantine-SegmentedControl-root":{background:"mantine.colors.gray[3]"}}}),be({display:"inline-block",fontSize:"xl",fontWeight:600,padding:"[1px 5px]",minWidth:24,textAlign:"center",borderRadius:"sm",background:"mantine.colors.dark[7]",color:"mantine.colors.defaultColor","&[data-zero]":{color:"mantine.colors.dimmed"},"&[data-missing]":{color:"mantine.colors.orange[4]",background:"mantine.colors.orange[8]/20"}});const sXe=[["path",{d:"M5 12l14 0",key:"svg-0"}],["path",{d:"M13 18l6 -6",key:"svg-1"}],["path",{d:"M13 6l6 6",key:"svg-2"}]],jm=Nt("outline","arrow-right","ArrowRight",sXe),lXe=[["path",{d:"M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6",key:"svg-0"}],["path",{d:"M11 13l9 -9",key:"svg-1"}],["path",{d:"M15 4h5v5",key:"svg-2"}]],rte=Nt("outline","external-link","ExternalLink",lXe),cXe=co.withProps({color:"dark",fz:"xs",openDelay:600,closeDelay:120,label:"",children:null,offset:8,withinPortal:!1});function uXe({node:e,element:r}){const n=IX(),o=WUe(),a=fn(o,d=>d.children[`${o.id}-relationships`]),i=[...r.incoming()].map(d=>d.id),s=[...r.outgoing()].map(d=>d.id),l=e?O9([...e.incoming()].flatMap(d=>d.$edge.relations)):[],c=e?O9([...e.outgoing()].flatMap(d=>d.$edge.relations)):[],u=[...i,...s].filter(d=>!l.includes(d)&&!c.includes(d)).length;return y.jsxs(Xo,{gap:"xs",pos:"relative",w:"100%",h:"100%",children:[i.length+s.length>0&&y.jsxs(pn,{gap:"xs",wrap:"nowrap",align:"center",children:[y.jsx(Re,{children:y.jsxs(pn,{gap:8,mb:4,wrap:"nowrap",children:[y.jsx(nte,{title:"incoming",total:i.length,included:l.length}),y.jsx(Ba,{size:"sm",variant:"transparent",c:"dimmed",children:y.jsx(jm,{style:{width:16}})}),y.jsx(ft,{className:oXe,children:g1(r.id)}),y.jsx(Ba,{size:"sm",variant:"transparent",c:"dimmed",children:y.jsx(jm,{style:{width:16}})}),y.jsx(nte,{title:"outgoing",total:s.length,included:c.length})]})}),u>0&&y.jsx(cXe,{label:"Current view does not include some relationships",children:y.jsxs(pn,{mt:"xs",gap:6,c:"orange",style:{cursor:"pointer"},children:[y.jsx(PT,{style:{width:14}}),y.jsxs(ft,{fz:"sm",children:[u," relationship",u>1?"s are":" is"," hidden"]})]})})]}),y.jsx(Re,{className:iXe,children:a&&y.jsxs(y.Fragment,{children:[y.jsx(tte,{actorRef:a}),y.jsx(Re,{pos:"absolute",top:12,right:12,children:y.jsx(br,{size:"md",variant:"default",radius:"sm",onClick:d=>{d.stopPropagation();const{subject:h,scope:f,viewId:g}=a.getSnapshot().context;n.send({type:"open.relationshipsBrowser",subject:h,scope:f,viewId:g})},children:y.jsx(rte,{stroke:1.6,style:{width:"70%"}})})})]})})]})}function nte({title:e,total:r,included:n}){return y.jsx(om,{withBorder:!0,shadow:"none",className:aXe,px:"md",py:"xs",radius:"md",mod:{zero:r===0,missing:r!==n},children:y.jsxs(Xo,{gap:4,align:"flex-end",children:[y.jsx(ft,{component:"div",c:r!==n?"orange":"dimmed",tt:"uppercase",fw:600,fz:10,lh:1,children:e}),y.jsx(ft,{fw:600,fz:"xl",component:"div",lh:1,children:r!==n?y.jsxs(y.Fragment,{children:[n," / ",r]}):y.jsx(y.Fragment,{children:r})})]})})}const dXe=be({marginTop:"sm",marginBottom:"sm"}),pXe=be({display:"inline-flex",transition:"fast",border:"1px dashed",borderColor:"mantine.colors.defaultBorder",borderRadius:"sm",px:"md",py:"xs",alignItems:"center",cursor:"pointer",color:"mantine.colors.gray[7]",_dark:{color:"mantine.colors.dark[1]"},"& > *":{transition:"fast"},_hover:{transitionTimingFunction:"out",borderStyle:"solid",color:"mantine.colors.defaultColor",background:"mantine.colors.defaultHover","& > *":{transitionTimingFunction:"out",transform:"translateX(1px)"}}}),MA=({element:e})=>y.jsx(Re,{className:pXe,children:y.jsx(ft,{component:"div",fz:"sm",fw:"500",children:e.title})}),hXe=()=>{};function fXe({element:e}){const r=G0({multiple:!1});r.setHoveredNode=hXe;const n=E.useMemo(()=>{let o=1;const a=s=>({label:s,value:`msg${o++}`,type:"message",children:[]}),i={label:y.jsx(MA,{type:"current",element:e}),value:e.id,element:e,type:"current",children:[...e.children()].map(s=>({label:y.jsx(MA,{type:"descedant",element:s}),value:s.id,element:s,type:"descedant",children:[]}))};return i.children.length===0&&i.children.push(a(y.jsx(K2,{radius:"sm",children:"no nested"}))),[[...e.ancestors()].reduce((s,l)=>({label:y.jsx(MA,{type:"ancestor",element:l}),value:l.id,element:l,type:"ancestor",children:[s]}),i)]},[e]);return E.useEffect(()=>{r.expandAllNodes()},[n]),y.jsxs(y.Fragment,{children:[y.jsxs(F2,{variant:"light",color:"orange",title:"In development",icon:y.jsx(PT,{}),children:["We need your feedback. Share your thoughts and ideas -"," ",y.jsx(W7,{fz:"sm",fw:500,underline:"hover",c:"orange",href:"https://github.com/likec4/likec4/discussions/",target:"_blank",children:"GitHub discussions"})]}),y.jsx(hm,{levelOffset:"xl",allowRangeSelection:!1,expandOnClick:!1,expandOnSpace:!1,classNames:{label:dXe},data:n,tree:r})]})}const mXe=[["path",{d:"M12 4l-8 4l8 4l8 -4l-8 -4",key:"svg-0"}],["path",{d:"M4 12l8 4l8 -4",key:"svg-1"}],["path",{d:"M4 16l8 4l8 -4",key:"svg-2"}]],PA=Nt("outline","stack-2","Stack2",mXe),ote=kp.withProps({mb:8,labelPosition:"left",variant:"dashed"}),ate=co.withProps({color:"dark",fz:"xs",openDelay:400,closeDelay:150,label:"",children:null,offset:4}),ite=ft.withProps({component:"div",fz:11,fw:500,c:"dimmed",lh:1}),jy=ft.withProps({component:"div",fz:"xs",c:"dimmed",className:HWe}),Lm=24,gXe=["Properties","Relationships","Views","Structure","Deployments"];function yXe({viewId:e,fromNode:r,rectFromNode:n,fqn:o,onClose:a}){const[i,s]=E.useState(!1),l=m$e(),c=l.width||window.innerWidth||1200,u=l.height||window.innerHeight||800,[d,h]=u$e({key:"likec4:element-details:active-tab",defaultValue:"Properties"}),f=Qt(),g=RWe(),b=r?g.findNode(r):g.findNodeWithElement(o),x=g.$model.element(o),[w,k]=En([...x.views()],Sn(K=>K.$view),Yq(K=>K._type==="element"&&K.viewOf===o));let C=b?.navigateTo?.$view??x.defaultView?.$view??null;C?.id===e&&(C=null);const _=q3(x.links),T=UUe(),A=(b?.$node.children?.length??0)>0,R=Math.min(700,c-Lm*2),D=Math.min(650,u-Lm*2),N=n?{x:n.x+(A?n.width-R/2:n.width/2),y:n.y+(A?0:n.height/2)}:{x:c/2,y:u/2},M=n?Math.min(n.width/R,n.height/D,.9):1,O=Math.round(us(N.x-R/2,{min:Lm,max:c-R-Lm})),F=Math.round(us(N.y-(A?0:60),{min:Lm,max:u-D-Lm})),L=us((N.x-O)/R,{min:.1,max:.9}),U=us((N.y-F)/D,{min:.1,max:.9}),P=HQ(R),V=HQ(D);qp(()=>{P.set(R),V.set(D)},[R,D]);const I=E.useCallback((K,j)=>{P.set(Math.max(P.get()+j.delta.x,320)),V.set(Math.max(V.get()+j.delta.y,300))},[]),H=E.useRef(null),q=Cf(a),Z=HE(()=>{q.current()},[],50),W=b?.$node.notation??null,G=Xx({element:{id:o,title:x.title,icon:b?.icon??x.icon},className:PWe});return Zx(()=>{H.current?.open||H.current?.showModal()},20),Zx(()=>{s(!0)},220),y.jsx(Ei.dialog,{ref:H,className:et(NWe,A0.classNames.fullWidth),layout:!0,initial:{[Bw]:"0px",[Fw]:"5%"},animate:{[Bw]:"3px",[Fw]:"60%"},exit:{[Bw]:"0px",[Fw]:"0%",transition:{duration:.1}},onClick:K=>{K.stopPropagation(),K.target?.nodeName?.toUpperCase()==="DIALOG"&&H.current?.close()},onDoubleClick:Cn,onPointerDown:Cn,onClose:K=>{K.stopPropagation(),Z()},children:y.jsx(A0,{forwardProps:!0,removeScrollBar:!1,children:y.jsxs(Ei.div,{layout:!0,layoutRoot:!0,drag:!0,dragControls:T,dragElastic:0,dragMomentum:!1,dragListener:!1,"data-likec4-color":b?.color??x.color,className:DWe,initial:{top:F,left:O,width:R,height:D,opacity:0,originX:L,originY:U,scale:Math.max(M,.65)},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9,translateY:-10,transition:{duration:.1}},style:{width:P,height:V},children:[y.jsxs("div",{className:$We,onPointerDown:K=>T.start(K),children:[y.jsxs(sn,{alignItems:"start",justify:"space-between",gap:"sm",mb:"sm",flexWrap:"nowrap",children:[y.jsxs(sn,{alignItems:"start",gap:"sm",style:{cursor:"default"},flexWrap:"nowrap",children:[G,y.jsxs("div",{children:[y.jsx(ft,{component:"div",className:MWe,children:x.title}),W&&y.jsx(ft,{component:"div",c:"dimmed",fz:"sm",fw:500,lh:1.3,lineClamp:1,children:W})]})]}),y.jsx(wp,{size:"lg",onClick:K=>{K.stopPropagation(),Z()}})]}),y.jsxs(sn,{alignItems:"baseline",gap:"sm",flexWrap:"nowrap",children:[y.jsxs("div",{children:[y.jsx(ite,{children:"kind"}),y.jsx(vl,{radius:"sm",size:"sm",fw:600,color:"gray",style:{cursor:"pointer"},onClick:K=>{K.stopPropagation(),f.openSearch(`kind:${x.kind}`)},children:x.kind})]}),y.jsxs("div",{style:{flex:1},children:[y.jsx(ite,{children:"tags"}),y.jsxs(mc,{gap:4,flex:1,mt:6,wrap:"wrap",children:[x.tags.map(K=>y.jsx(Lw,{tag:K,cursor:"pointer",onClick:j=>{j.stopPropagation(),f.openSearch(`#${K}`)}},K)),x.tags.length===0&&y.jsx(vl,{radius:"sm",size:"sm",fw:600,color:"gray",children:"—"})]})]}),y.jsxs(z2,{style:{alignSelf:"flex-start"},children:[_&&y.jsx(br,{component:"a",href:_.url,target:"_blank",size:"lg",variant:"default",radius:"sm",children:y.jsx(rte,{stroke:1.6,style:{width:"65%"}})}),y.jsx(_Le,{feature:"Vscode",children:y.jsx(ate,{label:"Open source",children:y.jsx(br,{size:"lg",variant:"default",radius:"sm",onClick:K=>{K.stopPropagation(),f.openSource({element:x.id})},children:y.jsx(zm,{stroke:1.8,style:{width:"62%"}})})})}),C&&y.jsx(ate,{label:"Open default view",children:y.jsx(br,{size:"lg",variant:"default",radius:"sm",onClick:K=>{K.stopPropagation(),f.navigateTo(C.id,r??void 0)},children:y.jsx(Ri,{style:{width:"70%"}})})})]})]})]}),y.jsx(EJ,{children:y.jsxs(Sp,{value:d,onChange:K=>h(K),variant:"none",classNames:{root:OWe,list:jWe,tab:LWe,panel:BWe},children:[y.jsx(Y0,{children:gXe.map(K=>y.jsx(pm,{value:K,children:K},K))}),y.jsx(yc,{value:"Properties",children:y.jsx(bl,{scrollbars:"y",type:"scroll",offsetScrollbars:!0,children:y.jsxs(Re,{className:FWe,pt:"xs",children:[x.hasSummary&&y.jsxs(y.Fragment,{children:[y.jsx(jy,{children:"summary"}),y.jsx(Wp,{value:x.summary})]}),y.jsxs(y.Fragment,{children:[y.jsx(jy,{children:"description"}),y.jsx(Wp,{value:x.description,emptyText:"no description"})]}),x.technology&&y.jsx(bXe,{title:"technology",children:x.technology}),x.links.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(jy,{children:"links"}),y.jsx(sn,{gap:"xs",flexWrap:"wrap",children:x.links.map((K,j)=>y.jsx(DT,{value:K},j))})]}),x.$element.metadata&&y.jsx(vXe,{value:x.$element.metadata})]})})}),y.jsx(yc,{value:"Relationships",children:y.jsx(Np,{overrides:{enableRelationshipBrowser:!1,enableNavigateTo:!1},children:i&&d==="Relationships"&&y.jsx(uXe,{element:x,node:b??null})})}),y.jsx(yc,{value:"Views",children:y.jsx(bl,{scrollbars:"y",type:"auto",children:y.jsxs(Xo,{gap:"lg",children:[w.length>0&&y.jsxs(Re,{children:[y.jsx(ote,{label:"views of the element (scoped)"}),y.jsx(Xo,{gap:"sm",children:w.map(K=>y.jsx(ste,{view:K,onNavigateTo:j=>f.navigateTo(j,r??void 0)},K.id))})]}),k.length>0&&y.jsxs(Re,{children:[y.jsx(ote,{label:"views including this element"}),y.jsx(Xo,{gap:"sm",children:k.map(K=>y.jsx(ste,{view:K,onNavigateTo:j=>f.navigateTo(j,r??void 0)},K.id))})]})]})})}),y.jsx(yc,{value:"Structure",children:y.jsx(bl,{scrollbars:"y",type:"auto",children:y.jsx(fXe,{element:x})})}),y.jsx(yc,{value:"Deployments",children:y.jsx(bl,{scrollbars:"y",type:"auto",children:y.jsx(aYe,{elementFqn:x.id})})})]})}),y.jsx(Ei.div,{className:VWe,drag:!0,dragElastic:0,dragMomentum:!1,onDrag:I,dragConstraints:{top:0,left:0,right:0,bottom:0}})]})})})}const ste=({view:e,onNavigateTo:r})=>y.jsx(Er,{className:zWe,onClick:n=>r(e.id,n),children:y.jsxs(pn,{gap:6,align:"start",wrap:"nowrap",children:[y.jsx(Ba,{size:"sm",variant:"transparent",children:e._type==="deployment"?y.jsx(PA,{stroke:1.8}):y.jsx(Ri,{stroke:1.8})}),y.jsx(Re,{children:y.jsx(ft,{component:"div",className:IWe,lineClamp:1,children:e.title||"untitled"})})]})});function bXe({title:e,emptyValue:r="undefined",children:n,style:o,...a}){return y.jsxs(y.Fragment,{children:[y.jsx(jy,{children:e}),y.jsx(ft,{component:"div",...z9(n)&&{c:"dimmed"},fz:"md",style:{whiteSpace:"preserve-breaks",userSelect:"all",...o},...a,children:n||r})]})}function vXe({value:e}){const r=M9(e).sort(([n],[o])=>n.localeCompare(o));return y.jsx(EJ,{children:y.jsxs(y.Fragment,{children:[y.jsx(jy,{style:{justifySelf:"end",textAlign:"right"},children:"metadata"}),y.jsx(Re,{className:be({display:"grid",gridTemplateColumns:"min-content 1fr",gridAutoRows:"min-content",gap:"[12px 16px]",alignItems:"baseline",justifyItems:"stretch"}),children:r.map(([n,o])=>y.jsx(YWe,{label:n,value:o},n))})]})})}const xXe=e=>({viewId:e.context.currentView.id,fromNode:e.context.initiatedFrom.node,rectFromNode:e.context.initiatedFrom.clientRect,fqn:e.context.subject});function wXe({actorRef:e,onClose:r}){const n=fn(e,xXe,an);return y.jsx(yT.Provider,{value:e,children:y.jsx(yXe,{onClose:r,...n})})}const t4="--_blur",r4="--_opacity",kXe="--_level",Ly=E.forwardRef(({onClose:e,className:r,classes:n,overlayLevel:o=0,children:a,fullscreen:i=!1,withBackdrop:s=!0,backdrop:l,openDelay:c=130,...u},d)=>{const[h,f]=E.useState(c===0),g=_U(h),b=E.useRef(null),x=E.useRef(!1),w=VQ()!==!0,k=E.useRef(e);k.current=e;const C=HE(()=>{x.current||(x.current=!0,k.current())},[],50);E.useLayoutEffect(()=>{b.current?.open||b.current?.showModal()},[]),Zx(()=>{f(!0)},c>0?c:void 0);const _=QUe({fullscreen:i,withBackdrop:s});let T=o>0?"50%":"60%";return l?.opacity!==void 0&&(T=`${l.opacity*100}%`),y.jsx(Ei.dialog,{ref:Hr(b,g,d),className:et(n?.dialog,r,_,i&&A0.classNames.fullWidth),layout:!0,style:{[kXe]:o},...w?{initial:{[t4]:"0px",[r4]:"0%",scale:.95,originY:0,translateY:-20,opacity:0},animate:{[t4]:o>0?"4px":"8px",[r4]:T,scale:1,opacity:1,translateY:0,transition:{delay:.075}},exit:{opacity:0,scale:.98,translateY:-20,transition:{duration:.1},[t4]:"0px",[r4]:"0%"}}:{initial:{[t4]:"8px",[r4]:T}},onClick:A=>{if(A.stopPropagation(),A.target?.nodeName?.toUpperCase()==="DIALOG"){b.current?.close();return}},onCancel:A=>{A.preventDefault(),A.stopPropagation(),C()},onDoubleClick:Cn,onPointerDown:Cn,onClose:A=>{A.stopPropagation(),C()},...u,children:y.jsx(A0,{forwardProps:!0,children:y.jsx("div",{className:et(n?.body,"likec4-overlay-body"),children:h&&y.jsx(y.Fragment,{children:a})})})})});Ly.displayName="Overlay";const n4=(e,r)=>e.size>2&&r.size!==e.size?new Set(uu([...Ix(e).flatten(),...r])):e.size>1?new Set(uu([...e])):e;function _Xe(e,r){const n=new Set,o=new Set,a=new Set,i={sources:new Set,targets:new Set},s=(l,c)=>{c==="source"?(n.add(l),i.sources.add(l)):(a.add(l),i.targets.add(l))};for(const l of e){const c=r.findEdge(l),u=c?[...c.relationships("model")]:[];if(!c||!bo(u,1)||!c.source.hasElement()||!c.target.hasElement())continue;const d=c.source.element,h=c.target.element;s(d,"source"),s(h,"target");for(const f of u){if(o.add(f),f.source!==d){s(f.source,"source");for(const g of f.source.ancestors()){if(g===d)break;n.add(g)}}if(f.target!==h){s(f.target,"target");for(const g of f.target.ancestors()){if(g===h)break;a.add(g)}}}}return{sources:n4(n,i.sources),targets:n4(a,i.targets),relationships:o}}function EXe({source:e,target:r}){const n=new Set,o=new Set,a=new Set,i={sources:new Set,targets:new Set},s=(c,u)=>{u==="source"?(n.add(c),i.sources.add(c)):(a.add(c),i.targets.add(c))};e&&s(e,"source"),r&&s(r,"target");const[l]=r8e.findConnection(e,r,"directed");if(!l)return{sources:n,targets:a,relationships:o};for(const c of l.relations){const u=c.source,d=c.target;if(s(u,"source"),s(d,"target"),o.add(c),e!==u){at(to(e,u),`${e.id} is not an ancestor of ${u.id}`);for(const h of u.ancestors()){if(h===e)break;n.add(h)}}if(r!==d){at(to(r,d),`${r.id} is not an ancestor of ${d.id}`);for(const h of d.ancestors()){if(h===r)break;a.add(h)}}}return{sources:n4(n,i.sources),targets:n4(a,i.targets),relationships:o}}const lte=E.createContext(null);function zA(){return bt(E.useContext(lte),"No RelationshipDetailsActorContext")}function cte(e,r=an){const n=kt(e),o=zA();return fn(o,n,r)}function IA(){const e=zA();return E.useMemo(()=>({actor:e,get rootElementId(){return`relationship-details-${e.sessionId.replaceAll(":","_")}`},getState:()=>e.getSnapshot().context,send:e.send,navigateTo:(...r)=>{r.length===1?e.send({type:"navigate.to",params:{edgeId:r[0]}}):e.send({type:"navigate.to",params:{source:r[0],target:r[1]}})},fitDiagram:()=>{e.send({type:"fitDiagram"})},close:()=>{e._parent?e._parent?.send({type:"close",actorId:e.id}):e.send({type:"close"})}}),[e])}const Cs={dagre:{ranksep:60,nodesep:35,edgesep:25},edgeLabel:{width:220,height:14},nodeWidth:330,nodeHeight:180,compound:{labelHeight:2,paddingTop:50,paddingBottom:32}};function SXe(){const e=new Gw.graphlib.Graph({directed:!0,compound:!0,multigraph:!0});return e.setGraph({...Cs.dagre,rankdir:"LR"}),e.setDefaultEdgeLabel(()=>({...Cs.edgeLabel})),e.setDefaultNodeLabel(()=>({})),e}const OA="-port";function ute(e,r,n){const o=new Xn(i=>({id:`${e}-${i}`,portId:`${e}-${i}`})),a=Ix(r);for(const i of a.sorted){const s=a.children(i).length>0,l=i.id,c=`${e}-${l}`,u=s?`${c}${OA}`:c;o.set(l,{id:c,portId:u}),n.setNode(c,{column:e,element:i,isCompound:s,portId:u,inPorts:[],outPorts:[],width:Cs.nodeWidth,height:Cs.nodeHeight}),s&&(n.setNode(u,{element:i,portId:u,isCompound:s,inPorts:[],outPorts:[],width:Cs.nodeWidth-Cs.dagre.ranksep,height:Cs.compound.labelHeight}),n.setParent(u,c));const d=a.parent(i);d&&n.setParent(c,`${e}-${d.id}`)}return{...a,byId:i=>{const s=a.byId(i),l=o.get(s.id);return{element:s,graph:l}},graphNodes:o}}function CXe(e){return Gw.layout(e,{}),r=>{const n=e.node(r),{x:o,y:a,width:i,height:s}=n;return{position:{x:o-Math.round(i/2),y:a-Math.round(s/2)},width:i,height:s}}}function TXe(e,r){const n=SXe(),o=ute("sources",e.sources,n),a=ute("targets",e.targets,n),i=Array.from(e.relationships).map(k=>{const C=o.byId(k.source.id).graph,_=a.byId(k.target.id).graph,T=k.id;return n.node(C.id).outPorts.push(_.id),n.node(_.id).inPorts.push(C.id),n.setEdge(C.portId,_.portId,{...Cs.edgeLabel},T),{name:T,source:C.id,sourceHandle:C.id+"_out"+(n.node(C.id).outPorts.length-1),target:_.id,targetHandle:_.id+"_in"+(n.node(_.id).inPorts.length-1),relationship:k}}),s=[...o.graphNodes.values(),...a.graphNodes.values()];for(const{id:k}of s){const C=n.node(k);if(C.isCompound)continue;const _=Math.max(n.inEdges(k)?.length??0,n.outEdges(k)?.length??0);_>3&&(C.height=C.height+(_-4)*14)}const l=n.edgeCount();if(l>5)for(const k of n.edges())n.setEdge(k,{...Cs.edgeLabel,width:l>10?800:400});const c=CXe(n),u=En(s,hp(k=>k.id===k.portId),V3(k=>[k.id,c(k.id)]));function d(k){return u[k]??=En(n.children(k)??[],hp(C=>!C.endsWith(OA)),Sn(C=>d(C)),Kq(C=>{at(C.length>0,`Node ${k} has no nested nodes`)}),U3((C,_)=>({minY:Math.min(C.minY,_.position.y),maxY:Math.max(C.maxY,_.position.y+_.height)}),{minY:1/0,maxY:-1/0}),({minY:C,maxY:_})=>{const{position:{x:T},width:A}=c(k);return C=C-Cs.compound.paddingTop,_=_+Cs.compound.paddingBottom,{position:{x:T,y:C},width:A,height:_-C}})}function h(k){const C=n.parent(k);return C?h(C)+1:0}function f(k){const C=n.children(k)??[];return C.length===0?0:1+Math.max(...C.map(f))}const g=(k,C,_)=>En(_,Sn((T,A)=>({port:k+"_"+C+A,topY:d(T).position.y})),W3(mp("topY")),Sn(mp("port")));let b=0,x=0;const w=s.map(({id:k})=>{const{element:C,inPorts:_,outPorts:T,column:A}=n.node(k);let{position:R,width:D,height:N}=d(k);const M=n.parent(k),O=(n.children(k)??[]).filter(V=>!V.endsWith(OA));b=Math.min(b,R.x),x=Math.min(x,R.y);const F=r?X1(C.scopedViews(),V=>V.id!==r.id)?.id??null:null,L=r?.findNodeWithElement(C.id),U=r&&!L?X1(C.ancestors(),V=>!!r.findNodeWithElement(V.id))?.id:null,P=L??(U&&r?.findNodeWithElement(U));return U1({id:k,parent:M??null,x:R.x,y:R.y,title:C.title,description:C.summary,technology:C.technology,tags:[...C.tags],links:null,color:P?.color??C.color,shape:L?.shape??C.shape,icon:L?.icon??C.icon??"none",modelRef:C.id,kind:C.kind,level:h(k),labelBBox:{x:R.x,y:R.y,width:D,height:N},style:Eu({...(L??P)?.style,...C.$element.style},["shape","color","icon"]),navigateTo:F,...O.length>0&&{depth:f(k)},children:O,width:D,height:N,column:A,ports:{in:g(k,"in",_),out:g(k,"out",T)}})});return{bounds:{x:Math.min(b,0),y:Math.min(x,0),width:n.graph().width??100,height:n.graph().height??100},nodes:w,edges:n.edges().reduce((k,C)=>{const _=n.edge(C),T=C.name;if(!T)return k;const{name:A,source:R,target:D,relationship:N,sourceHandle:M,targetHandle:O}=B3(i,V=>V.name===T),F=N.title??"untitled",L=N.navigateTo?.id??null,U=N.description??null,P=N.technology??null;return k.push({id:A,source:R,sourceHandle:M,target:D,targetHandle:O,label:F,color:N.color,...L&&{navigateTo:L},...U&&{description:U},...P&&{technology:P},points:_.points.map(V=>[V.x,V.y]),line:N.line,relationId:N.id,parent:null}),k},[])}}const jA=be.raw({display:"inline-flex",alignItems:"center",padding:"[6px 2px 0 2px]","& .mantine-Text-root":{color:"mantine.colors.text/90",fontSize:"xs",fontWeight:500,lineHeight:"1.2"}}),dte=be({paddingLeft:"1",gridColumn:1},jA),AXe=be({gridColumn:2},jA),pte=be({gridColumn:3,paddingRight:"1"},jA),hte="likec4-edge-label",RXe=et(hte,be({display:"grid",gridColumnStart:1,gridColumnEnd:4,borderBottom:"1px solid",borderBottomColor:"mantine.colors.defaultBorder",marginBottom:"0",padding:"[0 4px 5px 4px]",width:"100%","& .mantine-Text-root":{fontSize:"xxs",fontWeight:400,lineHeight:"xs",color:"mantine.colors.dimmed"}})),NXe=be({display:"contents",[`&:last-child .${hte}`]:{borderBottom:"none",marginBottom:"0"},"& > *":{transition:"all 0.15s ease-in"},"&:is(:hover, [data-selected=true]) > *":{transition:"all 0.15s ease-out",cursor:"pointer",backgroundColor:"mantine.colors.defaultHover"}}),DXe=be({display:"grid",gridTemplateColumns:"1fr 30px 1fr",gridAutoRows:"min-content max-content",gap:"0",alignItems:"stretch"});be({display:"grid",gridTemplateColumns:"min-content 1fr",gridAutoRows:"min-content max-content",gap:"[10px 12px]",alignItems:"baseline",justifyItems:"start"});const $Xe=be({maxHeight:["70vh","calc(100cqh - 70px)"]}),MXe=({edge:e,view:r})=>{const n=IA(),o=E.useRef(null),a=r.nodes.find(l=>l.id===e.source),i=r.nodes.find(l=>l.id===e.target),s=r.edges.flatMap(l=>{const c=r.nodes.find(d=>d.id===l.source),u=r.nodes.find(d=>d.id===l.target);return c&&u?{id:l.id,source:c,target:u,label:l.label}:[]});return!a||!i||s.length===0?null:y.jsxs(Rr,{position:"bottom-start",shadow:"md",keepMounted:!0,withinPortal:!1,closeOnClickOutside:!0,clickOutsideEvents:["pointerdown","mousedown","click"],onOpen:()=>{setTimeout(()=>{o.current?.querySelector(`[data-edge-id="${e.id}"]`)?.scrollIntoView({behavior:"instant",block:"nearest"})},100)},children:[y.jsx($u,{children:y.jsxs(Kn,{size:"xs",variant:"default",fw:"500",style:{padding:"0.25rem 0.75rem"},rightSection:y.jsx(RA,{size:16}),children:[y.jsx(Re,{className:dte,maw:160,p:0,mod:{"likec4-color":a.color},children:y.jsx(ft,{component:"span",truncate:!0,children:a.title})}),y.jsx(Ba,{color:"dark",variant:"transparent",size:"xs",children:y.jsx(jm,{style:{width:"80%"}})}),y.jsx(Re,{className:pte,maw:160,p:0,mod:{"likec4-color":i.color},children:y.jsx(ft,{component:"span",truncate:!0,children:i.title})})]})}),y.jsx(fc,{p:0,miw:250,maw:400,children:y.jsx(pa,{className:$Xe,scrollbars:"y",type:"never",viewportRef:o,children:y.jsx(Re,{className:DXe,p:"xs",maw:400,children:s.map(l=>y.jsxs("div",{className:NXe,"data-selected":l.id===e.id,onClick:c=>{c.stopPropagation(),n.navigateTo(l.id)},children:[y.jsx(Re,{className:dte,mod:{"edge-id":l.id,"likec4-color":l.source.color},children:y.jsx(ft,{component:"span",truncate:!0,children:l.source.title})}),y.jsx(Re,{className:AXe,children:y.jsx(Ba,{color:"dark",variant:"transparent",size:"xs",children:y.jsx(jm,{style:{width:"80%"}})})}),y.jsx(Re,{className:pte,mod:{"likec4-color":l.target.color},children:y.jsx(ft,{component:"span",truncate:!0,children:l.target.title})}),y.jsx(Re,{className:RXe,children:y.jsx(ft,{component:"span",truncate:!0,children:l.label||"untitled"})})]},l.id))})})})]})},PXe=NA(e=>{const{enableNavigateTo:r}=_r(),{data:{navigateTo:n}}=e,[o,a,i]=C3(e),s=Qt();return y.jsxs(My,{...e,children:[y.jsx(Py,{edgeProps:e,svgPath:o}),y.jsx(Qw,{edgeProps:e,labelPosition:{x:a,y:i,translate:"translate(-50%, 0)"},style:{maxWidth:Math.abs(e.targetX-e.sourceX-100)},children:y.jsx($y,{edgeProps:e,children:r&&n&&y.jsx(Zw,{...e,onClick:l=>{l.stopPropagation(),s.navigateTo(n)}})})})]})}),zXe=e=>{const{enableNavigateTo:r,enableVscode:n}=_r(),o=Qt(),a=Jw(),i=[],{navigateTo:s,fqn:l}=e.data;return s&&r&&a!==s&&i.push({key:"navigate",icon:y.jsx(Ri,{}),onClick:c=>{c.stopPropagation(),o.navigateTo(s)}}),l&&i.push({key:"relationships",icon:y.jsx(zy,{}),onClick:c=>{c.stopPropagation(),o.openRelationshipsBrowser(l)}}),l&&n&&i.push({key:"goToSource",icon:y.jsx(zm,{}),onClick:c=>{c.stopPropagation(),o.openSource({element:l})}}),y.jsx(e4,{buttons:i,...e})};function IXe(e,r){return e.id===r.id&<(e.type,r.type)&<(e.selected??!1,r.selected??!1)&<(e.dragging??!1,r.dragging??!1)&<(e.width??0,r.width??0)&<(e.height??0,r.height??0)&<(e.zIndex??0,r.zIndex??0)&<(e.data,r.data)}const fte=Symbol.for("isMemoized");function _c(e,r="Node"){if(e.hasOwnProperty(fte))return e;const n=E.memo(e,IXe);return n.displayName=r,Object.defineProperty(n,fte,{enumerable:!1,writable:!1,value:!0}),n}const mte=e=>{const r=Qt();return y.jsx($A,{...e,onClick:n=>{n.stopPropagation(),r.openElementDetails(e.data.fqn)}})},OXe=_c(e=>{const{enableElementTags:r}=_r();return y.jsxs(Im,{nodeProps:e,children:[y.jsx(Om,{...e}),y.jsx(Ss,{...e}),r&&y.jsx(Ry,{...e}),y.jsx(mte,{...e}),y.jsx(zXe,{...e}),y.jsx(LXe,{...e})]})}),jXe=_c(e=>y.jsxs(Iy,{nodeProps:e,children:[y.jsx(mte,{...e}),y.jsx(Oy,{...e}),y.jsx(BXe,{...e})]})),LXe=({data:{ports:e,height:r}})=>y.jsxs(y.Fragment,{children:[e.in.map((n,o)=>y.jsx(yo,{id:n,type:"target",position:tt.Left,style:{visibility:"hidden",top:`${15+(o+1)*((r-30)/(e.in.length+1))}px`}},n)),e.out.map((n,o)=>y.jsx(yo,{id:n,type:"source",position:tt.Right,style:{visibility:"hidden",top:`${15+(o+1)*((r-30)/(e.out.length+1))}px`}},n))]}),BXe=({data:e})=>y.jsxs(y.Fragment,{children:[e.ports.in.map((r,n)=>y.jsx(yo,{id:r,type:"target",position:tt.Left,style:{visibility:"hidden",top:`${20*(n+1)}px`}},r)),e.ports.out.map((r,n)=>y.jsx(yo,{id:r,type:"source",position:tt.Right,style:{visibility:"hidden",top:`${20*(n+1)}px`}},r))]}),FXe={element:OXe,compound:jXe},HXe={relationship:PXe};function VXe({actorRef:e}){const r=E.useRef(null);return r.current==null&&(r.current={defaultNodes:[],defaultEdges:[]}),y.jsx(lte.Provider,{value:e,children:y.jsx(O3,{...r.current,children:y.jsx($m,{id:e.sessionId,inherit:!1,children:y.jsxs(Qn,{children:[y.jsx(YXe,{},"xyflow"),y.jsx(UXe,{},"sync")]})})})})}const qXe=e=>({...e.context.subject,viewId:e.context.viewId}),UXe=E.memo(()=>{const e=zA(),r=fn(e,qXe,lt),n=Ko(),o=n.findView(r.viewId)??null,a=E.useMemo(()=>{let l;if("edgeId"in r&&ua(r.edgeId)){at(o,`view ${r.viewId} not found`);const c=bt(o.findEdge(r.edgeId),`edge ${r.edgeId} not found in ${r.viewId}`);l=_Xe([c.id],o)}else if(r.source&&r.target)l=EXe({source:n.element(r.source),target:n.element(r.target)});else return null;return TXe(l,o)},[r,o,n]),i=Ar(),s=Bf();return E.useEffect(()=>{s.viewportInitialized&&e.send({type:"xyflow.init",instance:s,store:i})},[i,s.viewportInitialized,e]),E.useEffect(()=>{a!==null&&e.send({type:"update.layoutData",data:a})},[a,e]),null}),WXe=({context:e})=>({initialized:e.initialized.xydata&&e.initialized.xyflow,nodes:e.xynodes,edges:e.xyedges}),YXe=E.memo(()=>{const e=IA(),{initialized:r,nodes:n,edges:o}=cte(WXe,lt);return y.jsxs(IT,{id:e.rootElementId,nodes:n,edges:o,className:et(r?"initialized":"not-initialized","likec4-relationship-details"),nodeTypes:FXe,edgeTypes:HXe,onNodesChange:io(a=>{e.send({type:"xyflow.applyNodeChanges",changes:a})}),onEdgesChange:io(a=>{e.send({type:"xyflow.applyEdgeChanges",changes:a})}),fitViewPadding:.05,onNodeClick:io((a,i)=>{a.stopPropagation(),e.send({type:"xyflow.nodeClick",node:i})}),onEdgeClick:io((a,i)=>{a.stopPropagation(),e.send({type:"xyflow.edgeClick",edge:i})}),onPaneClick:io(()=>{e.send({type:"xyflow.paneClick"})}),onDoubleClick:io(()=>{e.send({type:"xyflow.paneDblClick"})}),onViewportResize:io(()=>{e.send({type:"xyflow.resized"})}),onEdgeMouseEnter:io((a,i)=>{i.data.hovered||e.send({type:"xyflow.edgeMouseEnter",edge:i})}),onEdgeMouseLeave:io((a,i)=>{i.data.hovered&&e.send({type:"xyflow.edgeMouseLeave",edge:i})}),onSelectionChange:io(a=>{e.send({type:"xyflow.selectionChange",...a})}),nodesDraggable:!1,nodesSelectable:!0,fitView:!1,pannable:!0,zoomable:!0,children:[y.jsx(XXe,{}),y.jsx(ku,{position:"top-right",children:y.jsx(br,{variant:"default",color:"gray",onClick:a=>{a.stopPropagation(),e.close()},children:y.jsx(Rp,{})})})]})}),GXe=({context:e})=>({subject:e.subject,viewId:e.viewId}),XXe=E.memo(()=>{const{subject:e,viewId:r}=cte(GXe,lt),n=Ko().findView(r);if(!n||!n.isDiagram())return null;const o=[...n.edges()];let a="edgeId"in e&&ua(e.edgeId)?o.find(i=>i.id===e.edgeId):B3(o,i=>i.source.element?.id===e.source&&i.target.element?.id===e.target)||B3(o,i=>(i.source.element?.id===e.source||to(i.source.element?.id??"__",e.source??"__"))&&(i.target.element?.id===e.target||to(i.target.element?.id??"__",e.target??"__")));return a?y.jsx(KXe,{edge:a.$edge,view:n.$view}):null}),KXe=({edge:e,view:r})=>{const n=IA(),o=e.id,[a,i,{history:s,current:l}]=$U(e.id);E.useEffect(()=>{a!==o&&i.set(o)},[o]),E.useEffect(()=>{a!==o&&n.navigateTo(a)},[a]);const c=l>0,u=l+1{d.stopPropagation(),i.back()},children:y.jsx(ete,{})})},"back"),u&&y.jsx(Ei.div,{layout:!0,initial:{opacity:.05,transform:"translateX(5px)"},animate:{opacity:1,transform:"translateX(0)"},exit:{opacity:0,transform:"translateX(5px)"},children:y.jsx(br,{variant:"default",color:"gray",onClick:d=>{d.stopPropagation(),i.forward()},children:y.jsx(qu,{})})},"forward"),y.jsx(pn,{gap:"xs",wrap:"nowrap",ml:"sm",children:y.jsx(MXe,{edge:e,view:r})})]})})})},ZXe=e=>e.context.overlays.map(r=>{switch(r.type){case"relationshipsBrowser":return e.children[r.id]?{type:r.type,actorRef:e.children[r.id]}:null;case"relationshipDetails":return e.children[r.id]?{type:r.type,actorRef:e.children[r.id]}:null;case"elementDetails":return e.children[r.id]?{type:r.type,actorRef:e.children[r.id]}:null;default:Zi(r)}}).filter(Vq),QXe=(e,r)=>e.length===r.length&&e.every((n,o)=>n.actorRef===r[o].actorRef);function JXe({overlaysActorRef:e}){const r=Iw(c=>c.domNode),n=E.useMemo(()=>r?.querySelector(".react-flow__renderer")??null,[r]),o=fn(e,ZXe,QXe),a=VQ()??!1,i=o.some(c=>c.type==="elementDetails");E.useEffect(()=>{!n||a||NVe(n,{opacity:i?.7:1,filter:i?"grayscale(1)":"grayscale(0)",transform:i?"perspective(400px) translateZ(-12px) translateY(3px)":"translateY(0)"},{duration:i?.35:.17})},[i,n]);const s=c=>{e.send({type:"close",actorId:c.id})},l=o.map((c,u)=>{switch(c.type){case"relationshipsBrowser":return y.jsx(Ly,{overlayLevel:u,onClose:()=>s(c.actorRef),children:y.jsx(tte,{actorRef:c.actorRef})},c.actorRef.sessionId);case"relationshipDetails":return y.jsx(Ly,{overlayLevel:u,onClose:()=>s(c.actorRef),children:y.jsx(VXe,{actorRef:c.actorRef})},c.actorRef.sessionId);case"elementDetails":return y.jsx(wXe,{actorRef:c.actorRef,onClose:()=>s(c.actorRef)},c.actorRef.sessionId);default:Zi(c)}});return y.jsx(Np.Overlays,{children:y.jsx(RS,{FallbackComponent:NS,onReset:()=>e.send({type:"close.all"}),children:y.jsx($m,{children:y.jsx(Qn,{children:l})})})})}const[eKe,Wu]=hi("SearchActorContext"),tKe=e=>e.context.searchValue;function rKe(){const e=Wu(),r=fn(e,tKe),n=E.useCallback(o=>{e.send({type:"change.search",search:o})},[e]);return[r,n]}const nKe=e=>{const r=e.context.searchValue.trim().toLowerCase();return r.length>1?r:""};function LA(){const e=Wu();return E.useDeferredValue(fn(e,nKe))}function oKe(){const e=Wu();return E.useCallback(r=>{e.send({type:"change.search",search:r})},[e])}const aKe=e=>e.context.pickViewFor;function iKe(){const e=Wu();return fn(e,aKe)}const BA=be.raw({outline:"none",background:"mantine.colors.primary[8]",borderColor:"mantine.colors.primary[9]"}),o4=".mantine-Tree-node:focus > .mantine-Tree-label &",sKe=be.raw({display:"flex",width:"100%",background:"mantine.colors.body",rounded:"sm",padding:"[12px 8px 12px 14px]",minHeight:"60px",gap:"2",border:"1px solid",borderColor:"mantine.colors.defaultBorder",_hover:{...BA,borderColor:"mantine.colors.primary[9]",background:"mantine.colors.primary[8]/60"},_focus:BA,[o4]:BA,_dark:{borderColor:"transparent",background:"mantine.colors.dark[6]/80"},_light:{background:"mantine.colors.white/80",_hover:{borderColor:"mantine.colors.primary[6]",backgroundColor:"mantine.colors.primary[5]"}}}),a4="likec4-focusable",i4={ref:"var(--likec4-icon-size, 24px)"},lKe=be.raw({color:{base:"mantine.colors.dimmed",_light:"mantine.colors.gray[5]",_groupHover:"mantine.colors.primary[0]",_groupFocus:"mantine.colors.primary[0]"},[o4]:{color:"mantine.colors.primary[0]"},flex:`0 0 ${i4.ref}`,height:i4.ref,width:i4.ref,display:"flex",alignItems:"center",justifyContent:"center",alignSelf:"flex-start","--ti-size":i4.ref,"& svg, & img":{width:"100%",height:"auto",maxHeight:"100%",pointerEvents:"none"},"& img":{objectFit:"contain"},"&.likec4-shape-icon svg":{strokeWidth:1.5}}),cKe=be.raw({fontSize:"16px",fontWeight:500,lineHeight:"1.1",":where([data-disabled]) &":{opacity:.4},color:{base:"mantine.colors.dark[1]",_light:"mantine.colors.gray[7]",_groupHover:{base:"mantine.colors.primary[1]",_light:"mantine.colors.white"},_groupFocus:{base:"mantine.colors.primary[1]",_light:"mantine.colors.white"}},[o4]:{color:{base:"mantine.colors.primary[1]",_light:"mantine.colors.white"}}}),gte=be.raw({color:{base:"mantine.colors.dimmed",_groupHover:{base:"mantine.colors.primary[1]",_light:"mantine.colors.primary[0]"},_groupFocus:"mantine.colors.primary[0]"},[o4]:{color:"mantine.colors.primary[0]"}}),uKe=be.raw(gte,{marginTop:"1",fontSize:"12px",lineHeight:"1.4",":where([data-disabled]) &":{opacity:.85}}),dKe=be({width:"100%",height:"100%",border:"2px dashed",borderColor:"mantine.colors.defaultBorder",rounded:"md",display:"flex",justifyContent:"center",alignItems:"center",fontSize:"md",color:"mantine.colors.dimmed",padding:"md",paddingBlock:"xl"}),yte=vEe({slots:["root","icon","title","description","descriptionColor"],className:"search-button",base:{root:sKe,icon:lKe,title:cKe,description:uKe,descriptionColor:gte}}),FA="@container likec4-tree (max-width: 450px)",pKe=be({outline:"none",marginBottom:"2"}),hKe=be(QG.raw({containerName:"likec4-tree"}),{containerType:"inline-size",height:"100%"}),fKe=be({display:"flex",alignItems:"baseline",outline:"none !important",gap:"1"}),mKe=be({marginTop:"2"}),gKe=be({color:"mantine.colors.dimmed"}),yKe=be({[FA]:{flexDirection:"column-reverse",alignItems:"flex-start",gap:"0.5"}}),bKe=be({fontSize:"10px",lineHeight:"1.3",display:"block",fontWeight:500,whiteSpace:"nowrap",padding:"[1px 5px]",borderRadius:"4px",background:"mantine.colors.dark[9]/30",_light:{background:"mantine.colors.gray[3]/20"}}),vKe=be({"--likec4-icon-size":"24px",[FA]:{"--likec4-icon-size":"18px"}}),xKe=be({flex:0,fontSize:"10px",fontWeight:500,whiteSpace:"nowrap",lineHeight:"1.1",[FA]:{display:"none"}});function Di(e){e.stopPropagation(),e.preventDefault()}function bte(e){const r=e.getBoundingClientRect();return r.y+Math.floor(r.height/2)}function By(e){if(!e){console.error("moveFocusToSearchInput: from is null or undefined");return}const r=e.getRootNode();if(!C0(r.querySelector)){console.error("moveFocusToSearchInput: root.querySelector is not a function");return}let n=r.querySelector("[data-likec4-search-input]");if(n){const o=n.value.length;n.focus(),n.setSelectionRange(o,o)}}function s4(e){if(!e){console.error("focusToFirstFoundElement: from is null or undefined");return}const r=e.getRootNode();if(!C0(r.querySelector)){console.error("focusToFirstFoundElement: root.querySelector is not a function");return}r.querySelector(`[data-likec4-search] .${a4}`)?.focus()}function vte(e,r,n=`.${a4}`){if(!e)return console.error("queryAllFocusable: from is null or undefined"),[];const o=e.getRootNode();return C0(o.querySelectorAll)?[...o.querySelectorAll(`[data-likec4-search-${r}] ${n}`)]:(console.error("queryAllFocusable: root.querySelectorAll is not a function"),[])}const wKe="likec4-view-btn",kKe=et(be({flexWrap:"nowrap",display:"flex","&[data-disabled] .mantine-ThemeIcon-root":{opacity:.45}}),wKe);be({marginTop:"1",fontSize:"13px",lineHeight:"1.4",":where(.likec4-view-btn[data-disabled]) &":{opacity:.85}});const xte=()=>y.jsx(zr,{className:dKe,children:"Nothing found"}),_Ke=E.memo(()=>{const e=E.useRef(null);let r=[...Ko().views()],n=LA();return n&&(n.startsWith("kind:")?r=[]:r=r.filter(o=>n.startsWith("#")?o.tags.some(a=>a.toLocaleLowerCase().includes(n.slice(1))):`${o.id} ${o.title} ${o.description.text}`.toLocaleLowerCase().includes(n))),y.jsxs(Xo,{ref:e,renderRoot:o=>y.jsx(Br,{layout:!0,...o}),gap:8,"data-likec4-search-views":!0,onKeyDown:o=>{if(o.key==="ArrowLeft"||o.key==="ArrowRight"){const a=o.target.getBoundingClientRect().y,i=vte(e.current,"elements",".likec4-element-button");let s=i.length>1?i.find((l,c,u)=>bte(l)>a||c===u.length-1):null;s??=Ff(i),s&&(o.stopPropagation(),s.focus());return}},children:[r.length===0&&y.jsx(xte,{}),r.length>0&&y.jsx(D2,{children:y.jsx(Er,{"data-likec4-view":!0,tabIndex:-1,onFocus:o=>{o.stopPropagation(),By(e.current)}})}),r.map((o,a)=>y.jsx(Br,{layoutId:`@view${o.id}`,children:y.jsx(HA,{view:o,search:n,tabIndex:a===0?0:-1})},o.id))]})}),l4=yte();function HA({className:e,view:r,loop:n=!1,search:o,...a}){const i=Wu(),s=Qt(),l=Jw(),c=r.id===l,u=()=>{i.send({type:"close"}),setTimeout(()=>{s.navigateTo(r.id)},100)};return y.jsxs(Er,{...a,className:et(l4.root,"group",a4,kKe,e),"data-likec4-view":r.id,...c&&{"data-disabled":!0},onClick:d=>{d.stopPropagation(),u()},onKeyDown:N0({siblingSelector:"[data-likec4-view]",parentSelector:"[data-likec4-search-views]",activateOnFocus:!1,loop:n,orientation:"vertical",onKeyDown:d=>{d.nativeEvent.code==="Space"&&(d.stopPropagation(),u())}}),children:[y.jsx(Ba,{variant:"transparent",className:l4.icon,children:r.isDeploymentView()?y.jsx(PA,{stroke:1.8}):y.jsx(Ri,{stroke:1.8})}),y.jsxs(zr,{style:{flexGrow:1},children:[y.jsxs(pn,{gap:"xs",wrap:"nowrap",align:"center",children:[y.jsx(gc,{component:"div",highlight:o,className:l4.title,children:r.title||"untitled"}),c&&y.jsx(vl,{size:"xs",fz:9,radius:"sm",children:"current"})]}),y.jsx(gc,{highlight:r.description.nonEmpty?o:"",component:"div",className:l4.description,lineClamp:1,children:r.description.text||"No description"})]})]})}const Bm=yte(),EKe=E.memo(()=>{const e=Ko(),r=LA(),n=E.useMemo(()=>{const a=r.split(".");let i;fp(a)||a[0]==="kind:"?i=e.elements():i=Qd(e.elements(),u=>r.startsWith("kind:")?u.kind.toLocaleLowerCase().startsWith(r.slice(5)):r.startsWith("#")?u.tags.some(d=>d.toLocaleLowerCase().includes(r.slice(1))):(u.title+" "+u.id+" "+u.summary.text).toLocaleLowerCase().includes(r));const s={},{all:l,roots:c}=En([...i],uu,U3((u,d)=>{const h={label:d.title,value:d.id,element:d,searchTerms:a,children:[]};s[h.value]=h;const f=u.all.findLast(g=>to(g.value,h.value));return f?(f.children.push(h),f.children.length>1&&f.children.sort(Dy)):u.roots.push(h),u.all.push(h),u},{all:[],roots:[]}));return{all:l,byid:s,roots:c.sort(Dy)}},[e,r]),o=wte();return n.all.length===0?y.jsx(xte,{}):y.jsx(CKe,{data:n,handleClick:o})}),SKe=()=>{};function CKe({data:{all:e,byid:r,roots:n},handleClick:o}){const a=G0({multiple:!1});a.setHoveredNode=SKe,E.useEffect(()=>{a.collapseAllNodes();for(const s of e)s.children.length>0&&a.expand(s.value)},[e]);const i=kt(s=>{const l=s.target,c=l.getAttribute("data-value"),u=!!c&&r[c];if(u){if(s.key==="ArrowUp"){c===n[0]?.value&&(Di(s),By(l));return}if(s.key==="ArrowRight"){if(u.children.length>0&&a.expandedState[c]===!1)return;const d=(s.target.querySelector(".mantine-Tree-label")??l).getBoundingClientRect().y,h=vte(l,"views");let f=h.length>1?h.find((g,b,x)=>bte(g)>d||b===x.length-1):null;f??=Ff(h),f&&(Di(s),f.focus());return}if(s.key===" "||s.key==="Enter"){Di(s),o(u.element);return}}});return y.jsx(hm,{"data-likec4-search-elements":!0,allowRangeSelection:!1,clearSelectionOnOutsideClick:!0,selectOnClick:!1,tree:a,data:n,levelOffset:"lg",classNames:{root:hKe,node:et(a4,pKe),label:fKe,subtree:mKe},onKeyDownCapture:i,renderNode:TKe})}function TKe({node:e,elementProps:r,hasChildren:n,expanded:o}){const{element:a,searchTerms:i}=e,s=PEe({element:{id:a.id,title:a.title,shape:a.shape,icon:a.icon},className:et(Bm.icon,vKe)}),l=[...a.views()],c=wte(),u=`@tree.${e.value}`;return y.jsxs(Br,{layoutId:u,...r,children:[y.jsx(br,{variant:"transparent",size:16,tabIndex:-1,className:et(gKe),style:{visibility:n?"visible":"hidden"},children:y.jsx(qu,{stroke:3.5,style:{transition:"transform 150ms ease",transform:`rotate(${o?"90deg":"0"})`,width:"100%"}})}),y.jsxs(Er,{component:Ni,layout:!0,tabIndex:-1,"data-value":a.id,className:et(Bm.root,"group","likec4-element-button"),...l.length>0&&{onClick:d=>{(!n||o)&&(d.stopPropagation(),c(a))}},children:[s,y.jsxs(Re,{style:{flexGrow:1},children:[y.jsxs(pn,{gap:"xs",wrap:"nowrap",align:"center",className:yKe,children:[y.jsx(gc,{component:"div",highlight:i,className:Bm.title,children:e.label}),y.jsx(co,{label:a.id,withinPortal:!1,fz:"xs",disabled:!a.id.includes("."),children:y.jsx(gc,{component:"div",highlight:i,className:et(bKe,Bm.descriptionColor),children:g1(a.id)})})]}),y.jsx(gc,{component:"div",highlight:i,className:Bm.description,lineClamp:1,children:a.summary.text||"No description"})]}),y.jsx(ft,{component:"div",className:et(xKe,Bm.descriptionColor),fz:"xs",children:l.length===0?"No views":y.jsxs(y.Fragment,{children:[l.length," view",l.length>1?"s":""]})})]})]})}function wte(){const e=Qt(),r=Wu();return kt(n=>{const o=[...n.views()];if(o.length===0)return;const a=q3(o);if(a){r.send({type:"close"}),a.id!==e.currentView.id&&setTimeout(()=>{e.navigateTo(a.id)},100);return}r.send({type:"pickview.open",elementFqn:n.id})})}const AKe=be({border:"transparent",background:{base:"transparent",_focusWithin:{base:"mantine.colors.gray[4]/55 !important",_dark:"mantine.colors.dark[5]/55 !important"},_groupHover:{base:"mantine.colors.gray[3]/35",_dark:"mantine.colors.dark[5]/35"}}}),RKe=be({position:"absolute",inset:"0",width:"100%",height:"100%",backgroundColor:"[rgb(34 34 34 / 0.7)]",zIndex:902,backdropFilter:"auto",backdropBlur:"10px",_light:{backgroundColor:"[rgb(255 255 255 / 0.6)]"}}),NKe=be({position:"absolute",top:"[2rem]",left:"[50%]",width:"100%",maxWidth:"600px",minWidth:"200px",transform:"translateX(-50%)",zIndex:903}),kte=be({marginTop:"2","& + &":{marginTop:"[32px]"}});be({height:["100%","100cqh"],"& .mantine-ScrollArea-viewport":{minHeight:"100%","& > div":{minHeight:"100%",height:"100%"}}});function DKe({elementFqn:e}){const r=Wu(),n=Ko().element(e),o=[],a=[];for(const s of n.views())s.viewOf===n?o.push(s):a.push(s);const i=()=>{r.send({type:"pickview.close"})};return Gf("keydown",s=>{try{s.key==="Escape"&&(s.stopPropagation(),s.preventDefault(),i())}catch(l){console.warn(l)}},{capture:!0}),y.jsxs(y.Fragment,{children:[y.jsx(Br,{className:RKe,onClick:s=>{s.stopPropagation(),i()}},"pickview-backdrop"),y.jsx(P2,{children:y.jsxs(Br,{initial:{opacity:0,scale:.95,originY:0,translateX:"-50%",translateY:-20},animate:{opacity:1,scale:1,translateY:0},exit:{opacity:0,scale:.98,translateY:-20,transition:{duration:.1}},className:NKe,"data-likec4-search-views":!0,children:[y.jsxs(pn,{px:"sm",py:"md",justify:"space-between",children:[y.jsx(Cp,{order:2,lh:1,children:"Select view"}),y.jsx(br,{size:"md",variant:"default",onClick:s=>{s.stopPropagation(),i()},children:y.jsx(Rp,{})})]}),y.jsxs(pa,{mah:"calc(100vh - 110px)",type:"never",children:[o.length>0&&y.jsxs(Xo,{gap:"sm",px:"sm",className:kte,children:[y.jsx(Cp,{order:6,c:"dimmed",children:"scoped views of the element"}),o.map((s,l)=>y.jsx(HA,{view:s,search:"",loop:!0,mod:{autofocus:l===0}},s.id))]}),a.length>0&&y.jsxs(Xo,{gap:"sm",px:"sm",className:kte,children:[y.jsx(Cp,{order:6,c:"dimmed",children:"views including this element"}),a.map((s,l)=>y.jsx(HA,{view:s,search:"",loop:!0,mod:{autofocus:l===0&&o.length===0}},s.id))]})]})]},"pickview")})]})}function $Ke(){const e=E.useRef(null);let r=Ko().tagsSortedByUsage,n=oKe(),o=LA(),a=r.length,i=!1;if(o.startsWith("#")){const s=o.slice(1);r=r.filter(({tag:l})=>l.toLocaleLowerCase().includes(s)),i=r.length!==a}return r.length===0?null:(r=r.slice(0,15),y.jsxs(sn,{ref:e,css:{gap:"md",paddingLeft:"[48px]",flexWrap:"nowrap"},children:[y.jsx(sn,{css:{gap:"1.5",flexWrap:"wrap",opacity:i?1:.3,grayscale:i?0:.9,filter:"auto",transition:"fast",_groupHover:{opacity:1,grayscale:0},_groupFocusWithin:{opacity:1,grayscale:0}},children:r.map(({tag:s})=>y.jsx(Lw,{tag:s,className:be({userSelect:"none",cursor:"pointer"}),onClick:l=>{l.stopPropagation(),n(`#${s}`),setTimeout(()=>{s4(e.current)},350)}},s))}),i&&y.jsx(Kn,{size:"compact-xs",variant:"light",onClick:s=>{s.stopPropagation(),n(""),By(e.current)},rightSection:y.jsx(Rp,{size:14}),children:"Clear"})]}))}const MKe=[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]],VA=Nt("outline","search","Search",MKe);function _te(e){return e.match(/^(k|ki|kin|kind|kind:)$/)!=null}const PKe=["#","kind:"],zKe=E.memo(()=>{const e=Wu(),r=Ko(),n=E.useRef(null),{ref:o,focused:a}=_$e(),[i,s]=rKe(),l=FY({scrollBehavior:"smooth",loop:!1});Gf("keydown",d=>{try{!a&&(d.key==="Backspace"||d.key.startsWith("Arrow")||d.key.match(new RegExp("^\\p{L}$","u")))&&By(n.current)}catch(h){console.warn(h)}});let c=[],u=!1;switch(!0){case i.startsWith("#"):{const d=i.toLocaleLowerCase().slice(1),h=r.tags.filter(f=>f.toLocaleLowerCase().includes(d));h.length===0?(u=!1,c=[y.jsx(B0,{children:"No tags found"},"empty-tags")]):(u=r.tags.some(f=>f.toLocaleLowerCase()===d),c=h.map(f=>y.jsxs(F0,{value:`#${f}`,children:[y.jsx(ft,{component:"span",opacity:.5,mr:1,fz:"sm",children:"#"}),f]},f)));break}case i.startsWith("kind:"):case _te(i):{const d=i.length>5?i.slice(5).toLocaleLowerCase():"";let h=I9(r.specification.elements);d&&(h=h.filter(f=>f.toLocaleLowerCase().includes(d))),h.length===0?(u=!1,c=[y.jsx(B0,{children:"No kinds found"},"empty-kinds")]):(u=h.some(f=>f.toLocaleLowerCase()===d),c=h.map(f=>y.jsxs(F0,{value:`kind:${f}`,children:[y.jsx(ft,{component:"span",opacity:.5,mr:1,fz:"sm",children:"kind:"}),f]},f)));break}}return y.jsxs(lo,{onOptionSubmit:d=>{s(d),l.resetSelectedOption(),PKe.includes(d)||(l.closeDropdown(),setTimeout(()=>{s4(n.current)},350))},width:"max-content",position:"bottom-start",shadow:"md",offset:{mainAxis:4,crossAxis:50},store:l,withinPortal:!1,children:[y.jsx(J7,{children:y.jsx(La,{ref:Hr(n,o),placeholder:"Search by title, description or start with # or kind:",autoFocus:!0,"data-autofocus":!0,"data-likec4-search-input":!0,tabIndex:0,classNames:{input:AKe},size:"lg",value:i,leftSection:y.jsx(VA,{style:{width:Me(20)},stroke:2}),rightSection:y.jsx(La.ClearButton,{onClick:d=>{d.stopPropagation();const h=e.getSnapshot().context.openedWithSearch;i===""||i===h?e.send({type:"close"}):s("")}}),rightSectionPointerEvents:"auto",onChange:d=>{s(d.currentTarget.value),l.openDropdown(),l.updateSelectedOptionIndex()},onClick:()=>l.openDropdown(),onFocus:()=>l.openDropdown(),onBlur:()=>l.closeDropdown(),onKeyDownCapture:d=>{if(d.key==="Tab"){switch(!0){case l.getSelectedOptionIndex()>=0:return l.clickSelectedOption(),Di(d);case c.length===1:return l.selectFirstOption()&&l.clickSelectedOption(),Di(d);case _te(i):return s("kind:"),Di(d)}return}if(d.key==="Backspace"&&l.dropdownOpened){if(i==="kind:")return s(""),l.resetSelectedOption(),Di(d);if(i.startsWith("kind:")&&u)return s("kind:"),l.resetSelectedOption(),Di(d);if(i.startsWith("#")&&u)return s("#"),l.resetSelectedOption(),Di(d)}if(d.key==="Escape"&&l.dropdownOpened&&c.length>0){Di(d),l.closeDropdown();return}if(d.key==="ArrowUp"&&l.dropdownOpened&&i===""&&l.getSelectedOptionIndex()===0){l.closeDropdown(),Di(d);return}if(d.key==="ArrowDown"&&(!l.dropdownOpened||c.length===0||u||i===""&&l.getSelectedOptionIndex()===c.length-1)){l.closeDropdown(),Di(d),s4(n.current);return}}})}),y.jsx(H2,{hidden:c.length===0,style:{minWidth:300},children:y.jsx(V2,{children:y.jsx(pa,{mah:"min(322px, calc(100cqh - 50px))",type:"scroll",children:c})})})]})}),IKe=be({backgroundColor:"[rgb(34 34 34 / var(--_opacity, 95%))]",_light:{backgroundColor:"[rgb(250 250 250 / var(--_opacity, 95%))]"},backdropFilter:"auto",backdropBlur:"var(--_blur, 10px)"}),OKe=be({width:"100%",height:"100%",maxHeight:"100vh",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"stretch",gap:"sm",paddingTop:"[20px]",paddingLeft:"md",paddingRight:"md",paddingBottom:"sm",background:"[transparent]"}),jKe=e=>!e.matches("inactive");function LKe({searchActorRef:e}){const r=fn(e,jKe),n=()=>{e.send({type:"open"})},o=kt(()=>{e.send({type:"close"})});return x$e([["mod+k",n,{preventDefault:!0}],["mod+f",n,{preventDefault:!0}]]),y.jsx(eKe,{value:e,children:y.jsx(Np.Overlays,{children:y.jsx(RS,{FallbackComponent:NS,onReset:o,children:y.jsx(Qn,{children:r&&y.jsx(Ly,{fullscreen:!0,withBackdrop:!1,backdrop:{opacity:.9},classes:{dialog:IKe,body:OKe},openDelay:0,onClose:o,"data-likec4-search":"true",children:y.jsx(BKe,{searchActorRef:e})})})})})})}const Ete=be({height:["100%","100cqh"],"& .mantine-ScrollArea-viewport":{minHeight:"100%","& > div":{minHeight:"100%",height:"100%"}}}),BKe=({searchActorRef:e})=>{const r=E.useRef(null),n=iKe();return Zx(()=>{ua(e.getSnapshot().context.openedWithSearch)&&s4(r.current)},150),y.jsxs(zr,{ref:r,display:"contents",children:[y.jsx(pn,{className:"group",wrap:"nowrap",onClick:o=>{o.stopPropagation(),By(r.current)},children:y.jsxs(Ap,{flex:1,px:"sm",children:[y.jsx(zKe,{}),y.jsx($Ke,{})]})}),y.jsxs(V0,{children:[y.jsx(_p,{span:6,children:y.jsx(Cp,{component:"div",order:6,c:"dimmed",pl:"sm",children:"Elements"})}),y.jsx(_p,{span:6,children:y.jsx(Cp,{component:"div",order:6,c:"dimmed",pl:"sm",children:"Views"})})]}),y.jsxs(V0,{className:be({containerName:"likec4-search-elements",containerType:"size",overflow:"hidden",flexGrow:1}),children:[y.jsx(_p,{span:6,children:y.jsx(bl,{type:"scroll",className:Ete,pr:"xs",scrollbars:"y",children:y.jsx(Qn,{children:y.jsx($m,{id:"likec4-search-elements",children:y.jsx(EKe,{})})})})}),y.jsx(_p,{span:6,children:y.jsx(bl,{type:"scroll",className:Ete,pr:"xs",scrollbars:"y",children:y.jsx(Qn,{children:y.jsx($m,{id:"likec4-search-views",children:y.jsx(_Ke,{})})})})})]}),n&&y.jsx(DKe,{elementFqn:n})]})};function FKe({children:e}){const r=E.useContext(_S);if(!r)throw new Error("PortalToContainer must be used within RootContainer");return y.jsx(j0,{target:r.ref.current??`#${r.id}`,children:e})}const Ste={onChange:null,onNavigateTo:null,onNodeClick:null,onNodeContextMenu:null,onCanvasContextMenu:null,onEdgeClick:null,onEdgeContextMenu:null,onCanvasClick:null,onCanvasDblClick:null,onBurgerMenuClick:null,onOpenSource:null,onInitialized:null,onLayoutTypeChange:null},qA=I9(Ste),Cte=E.createContext({...V3(qA,e=>[e,null]),handlersRef:{current:Ste}});function HKe({handlers:e,children:r}){const n=Cf(e),o=qA.map(i=>C0(e[i])),a=E.useMemo(()=>({...V3(qA,i=>n.current[i]?[i,(...s)=>n.current[i]?.(...s)]:[i,null]),handlersRef:n}),[n,...o]);return y.jsx(Cte.Provider,{value:a,children:r})}function Fm(){return E.useContext(Cte)}function jn(e){return{get syncLayoutActorRef(){return e.get("syncLayout")??null},get overlaysActorRef(){return e.get("overlays")??null},get diagramActorRef(){return bt(e.get("diagram"),"Diagram actor not found")},get searchActorRef(){return e.get("search")??null}}}function Hm(e,r){return e.view.nodes.find(n=>n.id===r)??null}function UA(e,r){return e.view.edges.find(n=>n.id===r)??null}function VKe(e){const r=new Map,n=e.context.xynodes.reduce((o,a)=>{let i=a.position;if(a.parentId){const c=r.get(a.parentId)??{x:0,y:0};i={x:i.x+c.x,y:i.y+c.y}}if(r.set(a.id,i),a.hidden||a.data.dimmed)return o;const s=a.measured?.width??a.width??a.initialWidth,l=a.measured?.height??a.height??a.initialHeight;return o.minX=Math.min(o.minX,i.x),o.minY=Math.min(o.minY,i.y),o.maxX=Math.max(o.maxX,i.x+s),o.maxY=Math.max(o.maxY,i.y+l),o},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0});return n.minX===1/0?{bounds:e.context.view.bounds}:{duration:350,bounds:{x:n.minX-10,y:n.minY-10,width:n.maxX-n.minX+20,height:n.maxY-n.minY+20}}}const qKe=32;function UKe(e){const r=bt(e.context.activeWalkthrough),n=bt(e.context.xyedges.find(c=>c.id===r.stepId)),o=e.context.xystore.getState(),a=bt(o.nodeLookup.get(n.source)),i=bt(o.nodeLookup.get(n.target)),s=LH([a,i],o);let l;if(r.parallelPrefix){const c=e.context.xynodes.find(u=>u.type==="seq-parallel"&&u.data.parallelPrefix===r.parallelPrefix);c&&(l={x:c.position.x,y:c.position.y,...ao(c)})}return l??=WKe(n,o),l?l=il.merge(l,s):l=s,{duration:350,bounds:il.expand(l,qKe)}}function WKe(e,r){const n=r.nodeLookup.get(e.source),o=r.nodeLookup.get(e.target);if(!n||!o)return null;const a=iV({id:e.id,sourceNode:n,targetNode:o,sourceHandle:e.sourceHandle||null,targetHandle:e.targetHandle||null,connectionMode:r.connectionMode});return a?il.fromPoints([[a.sourceX,a.sourceY],[a.targetX,a.targetY]]):null}const YKe=wl({delays:{"open timeout":({context:e})=>e.openTimeout,"close timeout":600,"long idle":1500},actions:{"update edgeId":Zt(({context:e,event:r})=>(Tt(r,["xyedge.select","xyedge.mouseEnter"]),{edgeId:r.edgeId,edgeSelected:e.edgeSelected||r.type==="xyedge.select"})),"increase open timeout":Zt(()=>({openTimeout:800})),"decrease open timeout":Zt(()=>({openTimeout:300})),"reset edgeId":Zt({edgeId:null,edgeSelected:!1})},guards:{"edge was selected":({context:e})=>e.edgeSelected,"edge was hovered":({context:e})=>!e.edgeSelected}}).createMachine({id:"breadcrumbs",context:()=>({edgeId:null,edgeSelected:!1,openTimeout:800}),initial:"idle",on:{close:{target:"#idle",actions:["reset edgeId","increase open timeout"]}},states:{idle:{id:"idle",on:{"xyedge.mouseEnter":{target:"opening",actions:"update edgeId"},"xyedge.select":{target:"active",actions:"update edgeId"}},after:{"long idle":{actions:"increase open timeout"}}},opening:{on:{"xyedge.mouseLeave":{target:"idle"},"xyedge.select":{target:"active",actions:"update edgeId"}},after:{"open timeout":{actions:"decrease open timeout",target:"active"}}},active:{tags:["opened"],initial:"opened",exit:"reset edgeId",on:{"xyedge.unselect":{target:"idle",actions:"increase open timeout"},"xyedge.select":{actions:"update edgeId"}},states:{opened:{on:{"dropdown.mouseEnter":{target:"hovered"},"xyedge.mouseLeave":{guard:"edge was hovered",target:"closing"}}},hovered:{on:{"dropdown.mouseLeave":[{guard:"edge was selected",target:"opened"},{target:"closing"}]}},closing:{on:{"xyedge.mouseEnter":{guard:"edge was hovered",target:"opened",actions:"update edgeId"},"xyedge.select":{target:"opened",actions:"update edgeId"},"dropdown.mouseEnter":{target:"hovered"}},after:{"close timeout":{target:"#idle"}}}}}}}),GKe=YKe,Tte=be({display:"block",fontSize:"xxs",fontWeight:500,whiteSpace:"nowrap",paddingX:"1",paddingY:"0.5",borderRadius:"[2px]",background:{_light:"var(--likec4-palette-fill)/90",_dark:"var(--likec4-palette-fill)/60"},lineHeight:"1",color:{_light:"var(--likec4-palette-hiContrast)",_dark:"var(--likec4-palette-loContrast)"}}),XKe=be({whiteSpaceCollapse:"preserve-breaks",fontSize:"sm",lineHeight:"sm",userSelect:"all"});function KKe(e){let r=null;for(const n of e.xyedges)if(n.selected){if(r){r=null;break}r=n.data.id}return{viewId:e.view.id,selected:r}}const ZKe=E.memo(()=>{const e=Ko(),r=KS(GKe),n=Qt(),{viewId:o,selected:a}=vs(KKe),i=fn(r,g=>g.hasTag("opened")?g.context.edgeId:null);Fa("navigateTo",()=>{r.send({type:"close"})}),Fa("edgeMouseEnter",({edge:g})=>{r.send({type:"xyedge.mouseEnter",edgeId:g.data.id})}),Fa("edgeMouseLeave",()=>{r.send({type:"xyedge.mouseLeave"})}),Fa("walkthroughStarted",()=>{r.send({type:"close"})}),E.useEffect(()=>{a?r.send({type:"xyedge.select",edgeId:a}):r.send({type:"xyedge.unselect"})},[a]);const s=E.useCallback(g=>{if(!i)return;r.send({type:"dropdown.mouseEnter"});const b=n.findEdge(i);b&&!b.data.hovered&&n.send({type:"xyflow.edgeMouseEnter",edge:b,event:g})},[r,n,i]),l=E.useCallback(g=>{if(!i)return;r.send({type:"dropdown.mouseLeave"});const b=n.findEdge(i);b?.data.hovered&&n.send({type:"xyflow.edgeMouseLeave",edge:b,event:g})},[r,n,i]),{diagramEdge:c,sourceNode:u,targetNode:d}=vs(g=>{const b=i?UA(g,i):null,x=b?Hm(g,b.source):null,w=b?Hm(g,b.target):null;return{diagramEdge:b,sourceNode:x,targetNode:w}},an,[i]);if(!c||!u||!d||fp(c.relations))return null;const[h,f]=En(c.relations,Sn(g=>{try{return e.relationship(g)}catch(b){return console.error(`View is cached and likec4model missing relationship ${g} from ${u.id} -> ${d.id}`,b),null}}),hp(ua),Yq(g=>g.source.id===u.id&&g.target.id===d.id));return h.length===0&&f.length===0?(console.warn("No relationships found diagram edge",{diagramEdge:c,sourceNode:u,targetNode:d}),null):y.jsx(FKe,{children:y.jsx(JKe,{viewId:o,direct:h,nested:f,diagramEdge:c,sourceNode:u,targetNode:d,onMouseEnter:s,onMouseLeave:l})})}),QKe=(e,r)=>r?.querySelector(`.likec4-edge-label[data-edge-id="${e}"]`)??null,WA=8,JKe=({viewId:e,diagramEdge:r,direct:n,nested:o,sourceNode:a,targetNode:i,onMouseEnter:s,onMouseLeave:l})=>{const c=E.useRef(null),{enableNavigateTo:u,enableVscode:d}=_r(),{onOpenSource:h}=Fm(),f=pje(),[g,b]=E.useState(null);E.useLayoutEffect(()=>{b(QKe(r.id,f.current))},[r]),E.useEffect(()=>{const k=g,C=c.current;if(!k||!C)return;let _=!1;const T=_2(k,C,()=>{NW(k,C,{placement:"bottom-start",middleware:[CW(4),JPe({crossAxis:!0,padding:WA,allowedPlacements:["bottom-start","top-start","right-start","right-end","left-end"]}),TW({padding:WA,apply({availableHeight:A,availableWidth:R,elements:D}){_||Object.assign(D.floating.style,{maxWidth:`${us(Uu(R),{min:200,max:400})}px`,maxHeight:`${us(Uu(A),{min:0,max:500})}px`})}}),AW({padding:WA*2})]}).then(({x:A,y:R,middlewareData:D})=>{_||(C.style.transform=`translate(${Uu(A)}px, ${Uu(R)}px)`,C.style.visibility=D.hide?.referenceHidden?"hidden":"visible")})},{ancestorResize:!1,animationFrame:!0});return()=>{_=!0,T()}},[g]);const x=Qt(),w=E.useCallback((k,C)=>y.jsxs(E.Fragment,{children:[C>0&&y.jsx(kp,{}),y.jsx(eZe,{viewId:e,relationship:k,sourceNode:a,targetNode:i,onNavigateTo:u?_=>{x.navigateTo(_)}:void 0,...h&&d&&{onOpenSource:()=>h({relation:k.id})}})]},k.id),[e,a,i,x,u,h,d]);return y.jsx(pa,{ref:c,onMouseEnter:s,onMouseLeave:l,type:"auto",scrollbars:"y",scrollbarSize:6,styles:{viewport:{overscrollBehavior:"contain",minWidth:180}},className:et(be({layerStyle:"likec4.dropdown",p:"0",pointerEvents:{base:"all",_whenPanning:"none"},position:"absolute",top:"0",left:"0",width:"max-content",cursor:"default"})),children:y.jsxs(Ap,{css:{gap:"3",padding:"4",paddingTop:"2"},children:[y.jsx(Kn,{variant:"default",color:"gray",size:"compact-xs",style:{alignSelf:"flex-start",fontWeight:500,"--button-fz":"var(--font-sizes-xxs)"},onClick:k=>{k.stopPropagation(),x.openRelationshipDetails(r.id)},children:"browse relationships"}),n.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Vm,{children:"DIRECT RELATIONSHIPS"}),n.map(w)]}),o.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Vm,{css:{mt:n.length>0?"2":"0"},children:"RESOLVED FROM NESTED"}),o.map(w)]})]})})},eZe=E.forwardRef(({viewId:e,relationship:r,sourceNode:n,targetNode:o,onNavigateTo:a,onOpenSource:i},s)=>{const l=Ate(r,"source",n),c=Ate(r,"target",o),u=a&&r.navigateTo?.id!==e?r.navigateTo?.id:void 0,d=r.links;return y.jsxs(Ap,{ref:s,className:tX({block:"2",inline:"2",paddingY:"2.5",paddingX:"2",gap:"1",rounded:"sm",backgroundColor:{_hover:{base:"mantine.colors.gray[1]",_dark:"mantine.colors.dark[5]/70"}}}),children:[y.jsx(sn,{gap:"0.5",children:y.jsxs(Ep,{openDelay:200,children:[y.jsx(c4,{label:l.full,offset:2,position:"top-start",children:y.jsx(ft,{component:"div","data-likec4-color":n.color,className:Tte,children:l.short})}),y.jsx(jm,{stroke:2.5,size:"11px",opacity:.65}),y.jsx(c4,{label:c.full,offset:2,position:"top-start",children:y.jsx(ft,{component:"div","data-likec4-color":o.color,className:Tte,children:c.short})}),u&&y.jsx(c4,{label:"Open dynamic view",children:y.jsx(br,{size:"sm",radius:"sm",variant:"default",onClick:h=>{h.stopPropagation(),a?.(u)},style:{alignSelf:"flex-end"},role:"button",children:y.jsx(Ri,{size:"80%",stroke:2})})}),i&&y.jsx(c4,{label:"Open source",children:y.jsx(br,{size:"sm",radius:"sm",variant:"default",onClick:h=>{h.stopPropagation(),i()},role:"button",children:y.jsx(zm,{size:"80%",stroke:2})})})]})}),y.jsx(zr,{className:XKe,children:r.title||"untitled"}),r.kind&&y.jsxs(sn,{gap:"2",children:[y.jsx(Vm,{children:"kind"}),y.jsx(ft,{size:"xs",className:be({userSelect:"all"}),children:r.kind})]}),r.technology&&y.jsxs(sn,{gap:"2",children:[y.jsx(Vm,{children:"technology"}),y.jsx(ft,{size:"xs",className:be({userSelect:"all"}),children:r.technology})]}),r.description.nonEmpty&&y.jsxs(y.Fragment,{children:[y.jsx(Vm,{children:"description"}),y.jsx(zr,{css:{paddingLeft:"2.5",py:"1.5",borderLeft:"2px dotted",borderLeftColor:{base:"mantine.colors.gray[3]",_dark:"mantine.colors.dark[4]"}},children:y.jsx(Wp,{value:r.description,fontSize:"sm"})})]}),d.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Vm,{children:"links"}),y.jsx(sn,{gap:"1",flexWrap:"wrap",children:d.map(h=>y.jsx(DT,{size:"sm",value:h},h.url))})]})]})}),Vm=Iu("div",{base:{display:"block",fontSize:"xxs",fontWeight:500,userSelect:"none",lineHeight:"sm",color:"mantine.colors.dimmed"}}),c4=co.withProps({color:"dark",fz:"xs",label:"",children:null,offset:8,withinPortal:!1});function Ate(e,r,n){const o=e.isDeploymentRelation()?n.id:n.modelRef||"",a=e[r].id,i=g1(o)+a.slice(o.length);return{full:a,short:i}}function qm(){const e=hje();return E.useMemo(()=>e?{portalProps:{target:e},withinPortal:!0}:{withinPortal:!1},[e])}const tZe=wl({delays:{"open timeout":500,"close timeout":350},actions:{"update activatedBy":Zt({activatedBy:({context:e,event:r})=>{switch(!0){case r.type.includes("click"):return"click";case r.type.includes("mouseEnter"):return"hover";default:return e.activatedBy}}}),"keep dropdown open":Zt({activatedBy:"click"}),"update selected folder":Zt(({event:e})=>e.type==="breadcrumbs.click.root"?{selectedFolder:""}:(Tt(e,["breadcrumbs.click.folder","select.folder"]),{selectedFolder:e.folderPath})),"reset selected folder":Zt({selectedFolder:({context:e})=>e.viewModel?.folder.path??""}),"update inputs":Zt(({context:e,event:r})=>{Tt(r,"update.inputs");const n=r.inputs.viewModel?.id!==e.viewModel?.id;let o=e.selectedFolder;return r.inputs.viewModel?.folder.path.startsWith(o)||(o=r.inputs.viewModel?.folder.path??""),{view:r.inputs.view,viewModel:r.inputs.viewModel,selectedFolder:o,activatedBy:n?"hover":e.activatedBy}}),"reset search query":Zt({searchQuery:""}),"update search query":Zt(({event:e})=>(Tt(e,"searchQuery.change"),{searchQuery:e.value??""})),"emit navigateTo":GS(({event:e})=>(Tt(e,"select.view"),{type:"navigateTo",viewId:e.viewId}))},guards:{"was opened on hover":({context:e})=>e.activatedBy==="hover","has search query":({context:e})=>!fp(e.searchQuery),"search query is empty":({context:e})=>fp(e.searchQuery)}}).createMachine({id:"breadcrumbs",context:({input:e})=>({...e,breadcrumbs:[],activatedBy:"hover",selectedFolder:"",searchQuery:"",folderColumns:[]}),initial:"idle",entry:["update activatedBy","reset selected folder"],on:{"update.inputs":{actions:"update inputs"},"searchQuery.change":{actions:["update search query",fa({type:"searchQuery.changed"})]}},states:{idle:{id:"idle",on:{"breadcrumbs.mouseEnter.*":{target:"pending",actions:"update activatedBy"},"breadcrumbs.click.*":{target:"active",actions:"update activatedBy"}}},pending:{on:{"breadcrumbs.mouseEnter.*":{actions:"update activatedBy"},"breadcrumbs.mouseLeave.*":{target:"idle"},"breadcrumbs.click.*":{target:"active",actions:"update activatedBy"}},after:{"open timeout":{target:"active"}}},active:{tags:["active"],initial:"decide",on:{"dropdown.dismiss":{target:"#idle"},"breadcrumbs.mouseLeave":{guard:"was opened on hover",target:".closing"},"dropdown.mouseLeave":{guard:"was opened on hover",target:".closing"},"searchQuery.changed":{target:".decide"}},states:{decide:{always:[{guard:"has search query",target:"search"},{target:"opened"}]},opened:{on:{"searchQuery.changed":{guard:"has search query",actions:"keep dropdown open",target:"search"},"breadcrumbs.click.viewtitle":{actions:"reset selected folder"},"breadcrumbs.click.*":{actions:"update selected folder"},"select.folder":{actions:["keep dropdown open","update selected folder"]},"select.view":{actions:["emit navigateTo"]}}},search:{on:{"breadcrumbs.click.viewtitle":{actions:["reset search query","reset selected folder"],target:"opened"},"breadcrumbs.click.*":{actions:["reset search query","update selected folder"],target:"opened"},"select.view":{actions:["emit navigateTo"]}}},closing:{on:{"breadcrumbs.mouseEnter.*":{target:"decide"},"dropdown.mouseEnter":{target:"decide"}},after:{"close timeout":{target:"#idle"}}}}}}}),rZe=tZe,YA=E.createContext(null);YA.displayName="NavigationPanelActorSafeContext";const nZe=YA.Provider,GA=()=>{const e=E.useContext(YA);if(e===null)throw new Error("NavigationPanelActorRef is not found in the context");return e};function XA(e,r=an){const n=GA();return fn(n,e,r)}function oZe(e,r=an){return XA(n=>e(n.context),r)}function Fy(){const e=GA();return E.useMemo(()=>({actorRef:e,send:r=>e.send(r),selectFolder:r=>e.send({type:"select.folder",folderPath:r}),selectView:r=>e.send({type:"select.view",viewId:r}),isOpened:()=>e.getSnapshot().hasTag("active"),clearSearch:()=>e.send({type:"searchQuery.change",value:""}),closeDropdown:()=>e.send({type:"dropdown.dismiss"})}),[e])}const Rte=co.withProps({color:"dark",fz:"xs",openDelay:600,closeDelay:120,label:"",children:null,offset:8,withinPortal:!1}),Nte=()=>y.jsx(Ba,{component:Br,variant:"transparent",size:16,className:be({display:{base:"none","@/md":"flex"},color:{base:"mantine.colors.gray[5]",_dark:"mantine.colors.dark[3]"}}),children:y.jsx(qu,{})});q2.withProps({separator:y.jsx(Nte,{}),separatorMargin:4});const Ec=E.forwardRef(({variant:e="default",className:r,disabled:n=!1,type:o,...a},i)=>y.jsx(br,{size:"md",variant:"transparent",radius:"sm",component:Ni,...!n&&{whileHover:{scale:1.085},whileTap:{scale:1,translateY:1}},disabled:n,...a,className:et(r,CT({variant:e,type:o})),ref:i})),u4=o0({base:{fontSize:"sm",fontWeight:"500",transition:"fast",color:{base:"likec4.panel.action",_hover:"likec4.panel.action.hover"}},variants:{truncate:{true:{truncate:!0}},dimmed:{true:{color:{base:"likec4.panel.text.dimmed",_hover:"likec4.panel.action"}}}}}),aZe=E.forwardRef((e,r)=>y.jsxs("svg",{ref:r,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 222 56",...e,children:[y.jsx("path",{fill:"#5E98AF",d:"M33.95 33.78V0H2.37A2.37 2.37 0 0 0 0 2.35V33.9h33.95v-.12ZM38.57 33.78H55.6v-14.6c0-1.3-1.06-2.35-2.36-2.35H38.57v16.95ZM33.95 38.37H17.04v14.6c0 1.29 1.06 2.35 2.36 2.35h14.67V38.37h-.12ZM38.57 38.37v16.95h14.67c1.3 0 2.36-1.06 2.36-2.36v-14.6H38.57Z"}),y.jsx("path",{className:be({fill:"[#FCFBF7]",_light:{fill:"[#222221]"}}),d:"M71.61 12.08c-.06 3.61.3 29.95.23 31.87 0 1.8 0 3.6.06 5.41 0 .3.18.58.47.58 4.1.18 8.13-.17 12.22-.11 1.34.05 2.69 0 3.97 0 1.29-.06 1.4-.59 1.35-1.63-.06-1.63-.06-3.08-.06-4.65-.06-.82-.53-1.11-1.23-1.11-2.4.06-4.8-.06-7.19.06-.4.06-.82.06-1.23.06-.7-.06-.87-.24-.93-1v-.86c-.18-4.83.17-9.83.17-14.66-.06-4.07 0-7.73-.06-11.34 0-1.57 0-3.14-.05-4.65-.06-.93 0-1.92-.24-2.85-.11-.35-.29-.81-.7-.81h-5.5c-.93 0-1.22.64-1.28 1.57v4.12ZM103.81 35c-.17-6.63-.1-13.67-.05-20.24 0-2.04-.12-4.25-.12-6.28 0-2.21-.87-2.1-2.04-2.15-1.7-.06-2.46-.06-4.15-.06-1.11-.06-1.58.23-1.58 1.34 0 5.7-.18 21.8-.12 24.13.06 2.33.3 12.91.18 15.24-.06.81 0 1.62.06 2.44.05.29.23.58.7.58 1.93-.12 3.74-.12 5.67-.17.7-.06 1.28-.24 1.58-1 .05-.4-.12-11.04-.12-13.83Zm13.92 4.47c0-2.03-.3-7.56-.23-8.72 0-.17.11-.4.17-.4.12 0 .35.11.41.17 1.87 2.44 10.64 19.36 11.7 19.42.28.06.58.06.87.06 1.99-.12 3.74 0 5.73 0 2.04 0 .7-1.98.35-2.5-.53-.76-7.48-13.14-7.9-13.9-1.16-1.98-2.16-4.13-3.32-6.05-.12-.23-.24-.58-.18-.81.12-.7.3-1.34.59-1.98a93.18 93.18 0 0 1 4.55-8.14c1.88-2.97 2.93-4.83 4.45-7.5.35-.64.58-1.34.82-2.1.05-.29-.18-.58-.53-.58-1.11-.05-5.15 0-6.43 0-.59 0-1.17.12-1.46.64-.76 1.46-8.6 15.7-9.35 16.98-.06.12-.24.18-.41.18 0 0-.12-.18-.12-.3-.06-3.25.53-13.9.4-16.04-.05-1.28-.28-1.4-1.57-1.46-1.4-.05-3.33-.05-4.73-.05-1.3 0-1.4.7-1.58 1.62-.06.18-.06 5.64-.06 8.09 0 3.54-.3 25.76.11 32.8 0 .7.18 1.1.77 1.1 1.57-.12 3.91 0 5.49 0 1.11 0 1.29-.12 1.29-1.98 0-2.5.23-4.77.23-7.85 0-.23-.06-.46-.06-.7Zm25.66-1.4h-.06c0 1.46-.05 2.97 0 4.49.06 1.86.18 3.72.3 5.58 0 .64.17.81.76.93 1.22.29 2.4.35 3.62.35 3.16-.12 6.31.11 9.47 0 1.29-.06 1.87.06 3.16-.18 1.17-.23 1.58-.87 1.58-2.61-.12-1.1-.06-1.57-.06-2.91 0-1.92-1.35-2.56-2.52-2.5-.81.06-4.73-.06-6.31-.06-2.63.06-2.22.4-2.22-2.33 0-2.2.06-5.05.06-7.32 0-1.22.11-1.63 1.28-1.63h7.31c1.17.17 1.99-.64 1.99-1.86 0-1.22.12-1.28.12-2.5l-.18-1.75c-.12-.99-.47-1.33-1.46-1.33-.64 0-1.29.05-1.93.11-2.52.18-3.68-.17-6.14 0-.82 0-.93-.11-1-.87-.23-2.27 0-4.77.24-7.04.06-.93.3-1.1 1.17-1.16l8.24-.06c1.11-.11 1.46-.06 1.4-1.16-.11-1.69.06-3.43-.11-5.12-.12-.93-.41-1.1-1.46-1.1-1.76.05-2.17.05-3.92.17-1.75.06-8.77.06-10.46.06-2.46 0-2.63-.18-2.7 2.8-.1 2.32-.05 4.7-.05 7.09 0 4.07-.23 18.66-.12 21.92Zm47.76-24.82c.06-1.92 0-3.5 0-5.35 0-2.15-3.92-1.92-5.32-1.86a18.95 18.95 0 0 0-15.08 9.77c-.82 1.57-1.4 3.2-1.81 4.88a34 34 0 0 0-.59 12.15c.41 3.78 1.4 7.56 3.74 10.59 4.04 5.3 11.46 7.15 17.83 6.16.3-.06.59-.11.82-.29.18-.11.35-.35.35-.58l.18-3.31c.06-1.05 0-1 0-2.04 0-1.4-2.93-.35-4.74-.35-1.75 0-3.62-.06-5.2-.87-2.8-1.57-4.38-4.71-5.26-7.68-1-3.2-1.23-6.63-.64-9.88.7-4.25 2.74-9.13 7.25-10.59 2.57-.87 5.31-.58 7.89-.29.35.06.58-.17.58-.46Zm26.77 15.3c.06-2.5 0-14.84 0-18.38.06-.82 0-1.63-.11-2.45-.06-.99-.24-1.28-1.29-1.33h-4.44c-.82 0-1.35.4-1.82 1.27-1.34 3.2-10.75 24.02-12.15 26.58-.53.99-1 1.63-1 2.68v4.24c0 .76-.06 1.28 1.23 1.28l11.1-.06c1.47 0 1.47.3 1.47 1.1 0 .88-.12 4.9-.12 5.3 0 .58.12 1.16 1.23 1.16h5.08c1.23 0 1.23-.7 1.23-2.03.06-1.17-.06-3.5-.06-4.66 0-.93.18-.98 1.76-.98 1.22 0 1.75-.12 1.75-.88.06-1.57 0-2.67 0-4.42 0-1.04-.93-.98-2.92-.98-.65 0-.7-.18-.7-1.05-.12-1.8-.24-4.6-.24-6.4Zm-7.25-5.94c-.05.7-.11 10.82-.11 12.27-.06.81-.24 1.05-1 1.1-1.93.06-3.85.06-5.78.06-.47 0-.65-.4-.41-.87.23-.4 4.85-11.57 6.13-14.48.18-.17.24-.35.41-.52.18-.12.41-.18.59-.23.06 0 .23.29.23.46 0 .76-.06 1.51-.06 2.21Z"})]})),iZe=E.forwardRef((e,r)=>y.jsx("svg",{ref:r,xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 56 56",...e,children:y.jsx("path",{fill:"#5E98AF",d:"M33.95 33.78V0H2.37A2.37 2.37 0 0 0 0 2.35V33.9h33.95v-.12ZM38.57 33.78H55.6v-14.6c0-1.3-1.06-2.35-2.36-2.35H38.57v16.95ZM33.95 38.37H17.04v14.6c0 1.29 1.06 2.35 2.36 2.35h14.67V38.37h-.12ZM38.57 38.37v16.95h14.67c1.3 0 2.36-1.06 2.36-2.36v-14.6H38.57Z"})})),sZe=()=>{const e=Fy(),{onBurgerMenuClick:r}=Fm();return y.jsx(Br,{layout:"position",children:y.jsxs(Er,{onMouseEnter:()=>{e.send({type:"breadcrumbs.mouseEnter.root"})},onMouseLeave:()=>{e.send({type:"breadcrumbs.mouseLeave.root"})},onClick:n=>{n.stopPropagation(),r&&e.isOpened()&&setTimeout(()=>{r()},100),e.send({type:"breadcrumbs.click.root"})},className:et("mantine-active",Zn({padding:"0.5",width:{base:"[20px]","@/md":"[64px]"}})),children:[y.jsx(aZe,{className:be({display:{base:"none","@/md":"block"}})}),y.jsx(iZe,{className:be({display:{base:"block","@/md":"none"}})})]})})},lZe=[["path",{d:"M5 12l14 0",key:"svg-0"}],["path",{d:"M5 12l6 6",key:"svg-1"}],["path",{d:"M5 12l6 -6",key:"svg-2"}]],cZe=Nt("outline","arrow-left","ArrowLeft",lZe),uZe=()=>{const e=Qt(),{hasStepBack:r,hasStepForward:n}=vs(o=>({hasStepBack:o.navigationHistory.currentIndex>0,hasStepForward:o.navigationHistory.currentIndex{o.stopPropagation(),e.navigate("back")},children:y.jsx(cZe,{size:14})}),y.jsx(Ec,{disabled:!n,onClick:o=>{o.stopPropagation(),e.navigate("forward")},children:y.jsx(jm,{size:14})})]})},dZe=[["path",{d:"M9 15l6 -6",key:"svg-0"}],["path",{d:"M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464",key:"svg-1"}],["path",{d:"M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463",key:"svg-2"}]],pZe=Nt("outline","link","Link",dZe),hZe=({context:e})=>{const r=e.view;return{id:r.id,title:e.viewModel?.title??(r.title&&kE(r.title))??"Untitled View",description:e.viewModel?.description??or.from(r.description),tags:r.tags??[],links:r.links??[]}},fZe=e=>{const[r,n]=E.useState(!1),o=XA(hZe,lt),a=qm();return y.jsxs(Rr,{position:"bottom-end",shadow:"xl",clickOutsideEvents:["pointerdown","mousedown","click"],offset:{mainAxis:4},opened:r,onChange:n,...a,...e,children:[y.jsx(mZe,{linksCount:o.links.length,onOpen:()=>n(!0)}),r&&y.jsx(gZe,{data:o,onClose:()=>n(!1)})]})},mZe=({linksCount:e,onOpen:r})=>y.jsx(Rr.Target,{children:y.jsxs(Er,{component:Ni,layout:"position",whileTap:{scale:.95,translateY:1},onClick:n=>{n.stopPropagation(),r()},className:et("group",Zn({gap:"2",paddingInline:"2",paddingBlock:"1",rounded:"sm",userSelect:"none",cursor:"pointer",color:{base:"likec4.panel.action",_hover:"likec4.panel.action.hover"},backgroundColor:{_hover:"likec4.panel.action.bg.hover"},display:{base:"none","@/xs":"flex"}}),""),children:[y.jsx(DA,{size:16,stroke:1.8}),e>0&&y.jsxs(sn,{gap:"[1px]",children:[y.jsx(pZe,{size:14,stroke:2}),y.jsx(zr,{css:{fontSize:"11px",fontWeight:600,lineHeight:1,opacity:.8},children:e})]})]})}),Dte=Iu("div",{base:{fontSize:"xs",color:"mantine.colors.dimmed",fontWeight:500,userSelect:"none",mb:"xxs"}}),gZe=({data:{id:e,title:r,description:n,tags:o,links:a},onClose:i})=>{const s=Qt();return Fa("paneClick",i),Fa("nodeClick",i),y.jsxs(Rr.Dropdown,{className:et("nowheel nopan nodrag",Z0({margin:"xs",layerStyle:"likec4.dropdown",gap:"md",padding:"md",paddingBottom:"lg",pointerEvents:"all",maxWidth:"calc(100cqw - 52px)",minWidth:"200px",maxHeight:"calc(100cqh - 100px)",width:"max-content",cursor:"default",overflow:"auto",overscrollBehavior:"contain","@/sm":{minWidth:400,maxWidth:550},"@/lg":{maxWidth:700}})),children:[y.jsxs("section",{children:[y.jsx(ft,{component:"div",fw:500,size:"xl",lh:"sm",children:r}),y.jsxs(sn,{alignItems:"flex-start",mt:"1",children:[y.jsx(yZe,{label:"id",value:e}),y.jsx(sn,{gap:"xs",flexWrap:"wrap",children:o.map(l=>y.jsx(Lw,{tag:l,cursor:"pointer",onClick:c=>{c.stopPropagation(),s.openSearch(`#${l}`)}},l))})]})]}),a.length>0&&y.jsxs("section",{className:Zn({alignItems:"baseline"}),children:[y.jsx(Dte,{children:"Links"}),y.jsx(sn,{gap:"xs",flexWrap:"wrap",children:a.map((l,c)=>y.jsx(DT,{value:l},`${c}-${l.url}`))})]}),n.isEmpty&&y.jsx(ft,{component:"div",fw:500,size:"xs",c:"dimmed",style:{userSelect:"none"},children:"No description"}),n.nonEmpty&&y.jsxs("section",{children:[y.jsx(Dte,{children:"Description"}),y.jsx(Wp,{value:n,fontSize:"sm",emptyText:"No description",className:be({userSelect:"all"})})]})]})},yZe=({label:e,value:r})=>y.jsxs(sn,{gap:"0.5",children:[y.jsx(bZe,{children:e}),y.jsx(vl,{size:"sm",radius:"sm",variant:"light",color:"gray",tt:"none",fw:500,classNames:{root:be({width:"max-content",overflow:"visible",px:"1",color:{_dark:"mantine.colors.gray[4]",_light:"mantine.colors.gray[8]"}}),label:be({overflow:"visible"}),section:be({opacity:.5,userSelect:"none",marginInlineEnd:"0.5"})},children:r})]}),bZe=Iu("div",{base:{color:"mantine.colors.dimmed",fontWeight:500,fontSize:"xxs",userSelect:"none"}}),vZe=()=>{const e=Jw(),{enableVscode:r}=_r(),{onOpenSource:n}=Fm();return r?y.jsx(Rte,{label:"Open View Source",children:y.jsx(Ec,{onClick:o=>{o.stopPropagation(),n?.({view:e})},children:y.jsx(zm,{style:{width:"60%",height:"60%"}})})}):null},xZe=[["path",{d:"M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6z",key:"svg-0"}],["path",{d:"M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-1"}],["path",{d:"M8 11v-4a4 4 0 1 1 8 0v4",key:"svg-2"}]],wZe=Nt("outline","lock","Lock",xZe),kZe=[["path",{d:"M3 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M9 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-1"}],["path",{d:"M13 11v-4a4 4 0 1 1 8 0v4",key:"svg-2"}]],$te=Nt("outline","lock-open-2","LockOpen2",kZe),_Ze=e=>({visible:e.features.enableReadOnly!==!0&&(e.view._type!=="dynamic"||e.dynamicViewVariant!=="sequence"),isReadOnly:e.toggledFeatures.enableReadOnly??e.features.enableReadOnly}),EZe=()=>{const{visible:e,isReadOnly:r}=vs(_Ze),n=Qt();return y.jsx(Qn,{mode:"popLayout",children:e&&y.jsxs(Er,{component:Ni,layout:"position",onClick:o=>{o.stopPropagation(),n.toggleFeature("ReadOnly")},initial:{opacity:0,scale:.6},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.6},whileTap:{translateY:1},className:et("group",Zn({gap:"0.5",paddingInline:"xxs",paddingBlock:"xxs",rounded:"sm",userSelect:"none",cursor:"pointer",color:{base:"likec4.panel.action",_hover:"likec4.panel.action.hover"},backgroundColor:{_hover:"likec4.panel.action.bg.hover"}})),children:[r?y.jsx(wZe,{size:14,stroke:2}):y.jsx($te,{size:14,stroke:2}),r&&y.jsx(Br,{className:be({fontSize:"11px",fontWeight:600,lineHeight:1,opacity:.8}),children:"Edit"})]})})},SZe=[["path",{d:"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1 1 0 0 0 -1.524 .852z",key:"svg-0"}]],CZe=Nt("filled","player-play-filled","PlayerPlayFilled",SZe),Mte=E.forwardRef((e,r)=>y.jsx(Kn,{variant:"filled",size:"xs",fw:"500",...e,ref:r,component:Ni,whileTap:{scale:.95},layout:"position",layoutId:"trigger-dynamic-walkthrough",className:be({flexShrink:0})}));function TZe(){const{enableReadOnly:e,enableCompareWithLatest:r}=_r(),n=Qt(),o=Fy();let a="Start Dynamic View Walkthrough";switch(!0){case!e:a="Walkthrough not available in Edit mode";break;case r:a="Walkthrough not available when Compare is active";break}return y.jsx(Rte,{label:a,children:y.jsx(Mte,{onClick:i=>{i.stopPropagation(),o.closeDropdown(),n.startWalkthrough()},initial:{opacity:0,scale:.6,translateX:-10},animate:{opacity:1,scale:1,translateX:0},exit:{opacity:0,translateX:-20},size:"compact-xs",h:26,disabled:!e||r,classNames:{label:be({display:{base:"none","@/md":"inherit"}}),section:be({marginInlineStart:{base:"0","@/md":"2"}})},rightSection:y.jsx(CZe,{size:10}),children:"Start"})})}const AZe=E.forwardRef(({value:e,onChange:r},n)=>y.jsx(Br,{ref:n,layout:"position",children:y.jsx(dm,{size:"xs",value:e,component:Br,onChange:o=>{at(o==="diagram"||o==="sequence","Invalid dynamic view variant"),r(o)},classNames:{label:be({fontSize:"xxs"})},data:[{value:"diagram",label:"Diagram"},{value:"sequence",label:"Sequence"}]})}));function RZe(){const e=vs(n=>n.dynamicViewVariant),r=Qt();return y.jsxs(Qn,{children:[y.jsx(AZe,{value:e,onChange:n=>{r.switchDynamicViewVariant(n)}}),y.jsx(TZe,{},"trigger-dynamic-walkthrough")]})}const Pte=E.memo(()=>{const{enableSearch:e,enableCompareWithLatest:r}=_r(),n=Qt(),o=zf();return y.jsx(Qn,{children:e&&!r&&y.jsxs(Er,{component:Ni,layout:"position",onClick:a=>{a.stopPropagation(),n.openSearch()},whileTap:{scale:.95,translateY:1},className:et("group",Zn({gap:"xxs",paddingInline:"sm",paddingBlock:"xxs",userSelect:"none",layerStyle:"likec4.panel.action",display:{base:"none","@/md":"flex"}})),children:[y.jsx(VA,{size:14,stroke:2.5}),y.jsx(zr,{css:{fontSize:"11px",fontWeight:600,lineHeight:1,opacity:.8,whiteSpace:"nowrap"},children:o?"⌘ + K":"Ctrl + K"})]})})});Pte.displayName="SearchControl";const NZe=({context:e})=>{const r=e.view.drifts??null;return!e.features.enableCompareWithLatest||!r?{isEnabled:!1,isEditable:!1,isActive:!1,drifts:[],layout:e.view._layout??"auto"}:{isEnabled:!0,isEditable:!e.features.enableReadOnly,isActive:e.toggledFeatures.enableCompareWithLatest===!0,drifts:r,layout:e.view._layout??"auto"}};function KA(){const e=zp(),r=fn(e,NZe,an),n=kt(i=>{if(!r.isEnabled){console.warn("Compare with latest feature is not enabled");return}e.send({type:"emit.onLayoutTypeChange",layoutType:i})}),o=kt(i=>{if(!r.isEnabled){console.warn("Compare with latest feature is not enabled");return}const s=i?i==="on":!r.isActive;r.isActive&&!s&&r.layout==="auto"&&n("manual"),e.send({type:"toggle.feature",feature:"CompareWithLatest",forceValue:s})}),a=kt(()=>{if(!r.isEnabled){console.warn("Compare with latest feature is not enabled");return}e.send({type:"layout.resetManualLayout"})});return[r,{toggleCompare:o,switchLayout:n,resetManualLayout:a}]}const DZe=[["path",{d:"M12 9v4",key:"svg-0"}],["path",{d:"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]],zte=Nt("outline","alert-triangle","AlertTriangle",DZe),Ite=E.memo(()=>{const[e,{toggleCompare:r}]=KA(),n=qm(),{drifts:o,isActive:a,isEnabled:i}=e;return y.jsx(Qn,{propagate:!0,children:i&&!a&&y.jsxs(cm,{position:"bottom-start",openDelay:600,closeDelay:200,floatingStrategy:"absolute",offset:{mainAxis:4,crossAxis:-22},...n,children:[y.jsx(cS,{children:y.jsx(Er,{component:Ni,layout:"position",onClick:s=>{r()},whileTap:{scale:.95,translateY:1},className:et("group",CT({variant:"filled",type:"warning"}),Zn({gap:"xxs",padding:"1.5",rounded:"sm",userSelect:"none",cursor:"pointer",fontSize:"xs",fontWeight:600})),children:a?y.jsx(y.Fragment,{children:"Stop Compare"}):y.jsx(zte,{size:18})})}),y.jsx(sS,{p:"0",children:y.jsxs(Z2,{color:"orange",withBorder:!1,withCloseButton:!1,title:"View is out of sync",children:[y.jsx(ft,{mt:2,size:"sm",lh:"xs",children:"Model has changed since this view was last updated."}),y.jsxs(ft,{mt:4,size:"sm",lh:"xs",children:["Detected changes:",o.map(s=>y.jsxs(E.Fragment,{children:[y.jsx("br",{}),y.jsxs("span",{children:["- ",s]})]},s))]}),y.jsx(Kn,{mt:"xs",size:"compact-sm",variant:"default",onClick:s=>{s.stopPropagation(),r()},children:"Compare with current state"})]})})]})})});Ite.displayName="ManualLayoutWarning";const $Ze=({context:e})=>{const r=e.view,n=e.viewModel?.folder;return{folders:!n||n.isRoot?[]:n.breadcrumbs.map(o=>({folderPath:o.path,title:o.title})),viewId:r.id,viewTitle:e.viewModel?.title??(r.title&&kE(r.title))??"Untitled View",isDynamicView:(e.viewModel?._type??r._type)==="dynamic"}},Ote=E.memo(()=>{const e=Fy(),{enableNavigationButtons:r,enableDynamicViewWalkthrough:n}=_r(),{folders:o,viewTitle:a,isDynamicView:i}=fn(e.actorRef,$Ze,lt),s=o.flatMap(({folderPath:c,title:u},d)=>[y.jsx(Er,{component:Ni,className:et(u4({dimmed:!0,truncate:!0}),"mantine-active",be({userSelect:"none",maxWidth:"200px",display:{base:"none","@/md":"block"}})),initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},title:u,onMouseEnter:()=>e.send({type:"breadcrumbs.mouseEnter.folder",folderPath:c}),onMouseLeave:()=>e.send({type:"breadcrumbs.mouseLeave.folder",folderPath:c}),onClick:h=>{h.stopPropagation(),e.send({type:"breadcrumbs.click.folder",folderPath:c})},children:u},c),y.jsx(Nte,{},`separator-${d}`)]),l=y.jsx(Er,{component:Ni,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:et("mantine-active",u4({truncate:!0}),be({userSelect:"none"})),title:a,onMouseEnter:()=>e.send({type:"breadcrumbs.mouseEnter.viewtitle"}),onMouseLeave:()=>e.send({type:"breadcrumbs.mouseLeave.viewtitle"}),onClick:c=>{c.stopPropagation(),e.send({type:"breadcrumbs.click.viewtitle"})},children:a},"view-title");return y.jsxs(Qn,{propagate:!0,mode:"popLayout",children:[y.jsx(sZe,{},"burger-button"),r&&y.jsx(uZe,{},"nav-buttons"),y.jsxs(Br,{layout:"position",className:Zn({gap:"1",flexShrink:1,flexGrow:1,overflow:"hidden"}),children:[s,l]},"breadcrumbs"),y.jsxs(Br,{layout:"position",className:Zn({gap:"0.5",flexGrow:0,_empty:{display:"none"}}),children:[y.jsx(fZe,{onOpen:()=>e.closeDropdown()}),y.jsx(vZe,{}),y.jsx(EZe,{})]},"actions"),n&&i&&y.jsx(RZe,{},"dynamic-view-controls"),y.jsx(Pte,{},"search-control"),y.jsx(Ite,{},"outdated-manual-layout-warning")]})});Ote.displayName="NavigationPanelControls";const ZA=E.forwardRef(({className:e,truncateLabel:r=!0,...n},o)=>y.jsx(mS,{...n,component:"button",classNames:uWe({truncateLabel:r}),className:et("group","mantine-active",e),ref:o}));ZA.displayName="NavigationLink";const MZe=E.createContext(null),PZe=[],zZe=()=>{},IZe={projects:PZe,onProjectChange:zZe};function OZe(){return E.useContext(MZe)??IZe}function jZe(){const e=E.useContext(K0);if(!e)throw new Error("No LikeC4ModelContext found");return e.projectId}const LZe=E.memo(e=>{const{projects:r,onProjectChange:n}=OZe(),o=jZe();return r.length<=1?null:y.jsxs(sn,{gap:"0.5",alignItems:"baseline",children:[y.jsx(zr,{css:{fontWeight:"400",fontSize:"xxs",color:"likec4.panel.text.dimmed",userSelect:"none"},children:"Project"}),y.jsxs(hn,{withinPortal:!1,shadow:"md",position:"bottom-start",offset:{mainAxis:2},children:[y.jsx(G2,{children:y.jsx(Kn,{tabIndex:-1,autoFocus:!1,variant:"subtle",size:"compact-xs",color:"gray",classNames:{root:be({fontWeight:"400",fontSize:"xxs",height:"auto",lineHeight:1.1,color:{_light:"mantine.colors.gray[9]"}}),section:be({'&:is([data-position="right"])':{marginInlineStart:"1"}})},rightSection:y.jsx(MT,{opacity:.5,size:12,stroke:1.5}),children:o})}),y.jsx(q0,{children:r.map(({id:a,title:i})=>y.jsx(U0,{onClick:s=>{if(o===a){s.stopPropagation();return}n(a)},children:i??a},a))})]})]})}),BZe=[["path",{d:"M10.52 2.614a2.095 2.095 0 0 1 2.835 -.117l.126 .117l7.905 7.905c.777 .777 .816 2.013 .117 2.836l-.117 .126l-7.905 7.905a2.094 2.094 0 0 1 -2.836 .117l-.126 -.117l-7.907 -7.906a2.096 2.096 0 0 1 -.115 -2.835l.117 -.126l7.905 -7.905zm5.969 9.535l.01 -.116l-.003 -.12l-.016 -.114l-.03 -.11l-.044 -.112l-.052 -.098l-.076 -.105l-.07 -.081l-3.5 -3.5l-.095 -.083a1 1 0 0 0 -1.226 0l-.094 .083l-.083 .094a1 1 0 0 0 0 1.226l.083 .094l1.792 1.793h-5.085l-.117 .007a1 1 0 0 0 0 1.986l.117 .007h5.085l-1.792 1.793l-.083 .094a1 1 0 0 0 1.403 1.403l.094 -.083l3.5 -3.5l.097 -.112l.05 -.074l.037 -.067l.05 -.112l.023 -.076l.025 -.117z",key:"svg-0"}]],FZe=Nt("filled","direction-sign-filled","DirectionSignFilled",BZe),HZe=[["path",{d:"M8.243 7.34l-6.38 .925l-.113 .023a1 1 0 0 0 -.44 1.684l4.622 4.499l-1.09 6.355l-.013 .11a1 1 0 0 0 1.464 .944l5.706 -3l5.693 3l.1 .046a1 1 0 0 0 1.352 -1.1l-1.091 -6.355l4.624 -4.5l.078 -.085a1 1 0 0 0 -.633 -1.62l-6.38 -.926l-2.852 -5.78a1 1 0 0 0 -1.794 0l-2.853 5.78z",key:"svg-0"}]],VZe=Nt("filled","star-filled","StarFilled",HZe),qZe=[["path",{d:"M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z",key:"svg-0"}]],UZe=Nt("filled","folder-filled","FolderFilled",qZe),jte=N0({siblingSelector:"[data-likec4-focusable]",parentSelector:"[data-likec4-breadcrumbs-dropdown]",activateOnFocus:!1,loop:!0,orientation:"vertical"});function WZe(e){return e.context.searchQuery.trim().length>=2}const Lte=E.memo(()=>{const e=Fy(),r=XA(WZe);Fa("paneClick",()=>{e.closeDropdown()}),Fa("nodeClick",()=>{e.closeDropdown()}),Fa("edgeClick",()=>{e.closeDropdown()});const n=C$e(o=>{e.send({type:"searchQuery.change",value:o})},250);return y.jsxs(fc,{className:et("nowheel",Z0({layerStyle:"likec4.dropdown",gap:"xs",pointerEvents:"all"})),"data-likec4-breadcrumbs-dropdown":!0,onMouseLeave:()=>e.send({type:"dropdown.mouseLeave"}),onMouseEnter:()=>e.send({type:"dropdown.mouseEnter"}),children:[y.jsx(LZe,{}),y.jsx(sn,{gap:"xs",children:y.jsx(oQe,{defaultValue:e.actorRef.getSnapshot().context.searchQuery,onChange:n})}),y.jsx(pa,{scrollbars:"x",type:"auto",offsetScrollbars:"present",classNames:{root:be({maxWidth:["calc(100vw - 50px)","calc(100cqw - 50px)"]})},styles:{viewport:{overscrollBehavior:"none"}},children:r?y.jsx(XZe,{}):y.jsx(tQe,{})})]})});Lte.displayName="NavigationPanelDropdown";function YZe(e){return Lx(e.context.searchQuery)}const GZe=eO($a),XZe=E.memo(()=>{const e=Ko(),r=Fy(),n=fn(r.actorRef,YZe),o=E.useDeferredValue(n),a=o.includes($a),i=a?o.split($a):o,[s,l]=E.useState([]);return E.useEffect(()=>{l(c=>{const u=En(e.views(),Qd(d=>a&&d.$view.title?Lx(d.$view.title).toLowerCase().includes(o):d.id.toLowerCase().includes(o)||!!d.title?.toLowerCase().includes(o)),V6e(20),K1(),GNe((d,h)=>GZe(d.folder.path,h.folder.path)));return an(u,c)?c:u})},[e,o,a]),s.length===0?y.jsx("div",{children:"no results"}):y.jsx(pa,{scrollbars:"xy",offsetScrollbars:!1,className:be({width:"100%",maxWidth:["calc(100vw - 250px)","calc(100cqw - 250px)"],maxHeight:["calc(100vh - 200px)","calc(100cqh - 200px)"]}),children:y.jsx(Ap,{gap:"0.5",children:s.map(c=>y.jsx(ZZe,{view:c,highlight:i,onClick:u=>{u.stopPropagation(),r.selectView(c.id)},"data-likec4-focusable":!0,onKeyDown:jte},c.id))})})}),KZe=Zn({gap:"xxs",rounded:"sm",px:"xs",py:"xxs",_hover:{backgroundColor:{base:"mantine.colors.gray[1]",_dark:"mantine.colors.dark[5]"}},_focus:{outline:"none",color:"mantine.colors.primary.lightColor!",backgroundColor:"mantine.colors.primary.lightHover!"}}),Bte=be({_groupFocus:{color:"[inherit!]",transition:"none"}});function ZZe({view:e,highlight:r,...n}){const o=e.folder,a=Hte[e.id==="index"?"index":e._type],i=y.jsx(gc,{component:"div",className:et(Bte,u4({truncate:!0}),be({"& > mark":{backgroundColor:{base:"mantine.colors.yellow[2]/90",_dark:"mantine.colors.yellow[5]/80",_groupFocus:"[transparent]"},color:{_groupFocus:"[inherit!]"}}})),maw:350,highlight:r,children:e.title??e.id},e.id),s=et(n.className,"group",KZe);if(o.isRoot)return y.jsxs(Er,{...n,className:s,children:[a,i]});const l=o.breadcrumbs.map(c=>y.jsx(gc,{component:"div",className:et(be({_groupHover:{color:"mantine.colors.dimmed"}}),Bte,u4({dimmed:!0,truncate:!0})),maw:170,highlight:P9(r)?r:[],children:c.title},c.path));return l.push(y.jsxs(sn,{gap:"[4px]",children:[a,i]})),y.jsxs(Er,{...n,className:s,children:[Fte,y.jsx(q2,{separator:y.jsx(qu,{size:12,stroke:1.5}),separatorMargin:3,children:l})]})}const QZe=y.jsx(qu,{size:12,stroke:1.5,className:"mantine-rotate-rtl"}),Fte=y.jsx(UZe,{size:16,className:be({opacity:{base:.3,_groupHover:.5,_groupActive:.5,_groupFocus:.5}})}),d4=be({opacity:{base:.3,_dark:.5,_groupHover:.8,_groupActive:.8,_groupFocus:.8}}),Hte={index:y.jsx(VZe,{size:16,className:d4}),element:y.jsx(Ri,{size:18,stroke:2,className:d4}),deployment:y.jsx(PA,{size:16,stroke:1.5,className:d4}),dynamic:y.jsx(FZe,{size:18,className:d4})},JZe=pa.withProps({scrollbars:"y",className:be({maxHeight:["calc(100vh - 160px)","calc(100cqh - 160px)"]})});function Vte(e,r){return{folderPath:e.path,items:[...e.folders.map(n=>({type:"folder",folderPath:n.path,title:n.title,selected:r.selectedFolder.startsWith(n.path)})),...e.views.map(n=>({type:"view",viewType:n.id==="index"?"index":n._type,viewId:n.id,title:n.title??n.id,description:n.description.nonEmpty&&n.description.text||null,selected:n.id===r.viewModel?.id}))]}}const eQe=e=>{const r=e.viewModel;if(!r)return[];const n=r.$model,o=[Vte(n.rootViewFolder,e)],a=n.viewFolder(e.selectedFolder);if(!a.isRoot)for(const i of a.breadcrumbs)o.push(Vte(i,e));return o},tQe=E.memo(()=>{const e=oZe(eQe,lt);return y.jsx(sn,{gap:"xs",alignItems:"stretch",children:e.flatMap((r,n)=>[n>0&&y.jsx(kp,{orientation:"vertical"},"divider"+n),y.jsx(rQe,{data:r,isLast:n>0&&n==e.length-1},r.folderPath)])})});function rQe({data:e,isLast:r}){const n=E.useRef(null),o=GA(),a=i=>s=>{s.stopPropagation(),i.type==="folder"?o.send({type:"select.folder",folderPath:i.folderPath}):o.send({type:"select.view",viewId:i.viewId})};return LEe(()=>{r&&n.current&&n.current.scrollIntoView({block:"nearest",inline:"nearest",behavior:"smooth"})}),y.jsx(zr,{mb:"1",ref:n,children:y.jsx(JZe,{children:y.jsx(Ap,{gap:"0.5",children:e.items.map((i,s)=>y.jsx(nQe,{columnItem:i,onClick:a(i)},`${e.folderPath}/${i.type}/${s}`))})})})}function nQe({columnItem:e,...r}){switch(e.type){case"folder":return y.jsx(ZA,{variant:"light",active:e.selected,label:e.title,leftSection:Fte,rightSection:QZe,maw:"300px",miw:"200px",...r},e.folderPath);case"view":return y.jsx(ZA,{variant:"filled",active:e.selected,label:e.title,description:e.description,leftSection:Hte[e.viewType],maw:"300px",miw:"200px",...r},e.viewId);default:Zi(e)}}function oQe(e){const[r,n]=uc({...e,finalValue:""});return y.jsx(La,{size:"xs",placeholder:"Search by title or id",variant:"unstyled",height:Me(26),value:r,onKeyDown:jte,onChange:o=>n(o.currentTarget.value),"data-likec4-focusable":!0,classNames:{wrapper:be({flexGrow:1,backgroundColor:{base:"mantine.colors.gray[1]",_dark:"mantine.colors.dark[5]/80",_hover:{base:"mantine.colors.gray[2]",_dark:"mantine.colors.dark[4]"},_focus:{base:"mantine.colors.gray[2]",_dark:"mantine.colors.dark[4]"}},rounded:"sm"}),input:be({_placeholder:{color:"mantine.colors.dimmed"},_focus:{outline:"none"}})},style:{"--input-fz":"var(--mantine-font-size-sm)"},leftSection:y.jsx(VA,{size:14}),rightSectionPointerEvents:"all",rightSectionWidth:"min-content",rightSection:!e.value||fp(e.value)?null:y.jsx(Kn,{variant:"subtle",h:"100%",size:"compact-xs",color:"gray",onClick:o=>{o.stopPropagation(),n("")},children:"clear"})})}const aQe=Iu("div",{base:{fontSize:"xs",color:"mantine.colors.dimmed",fontWeight:500,userSelect:"none",mb:"xxs"}});function iQe(e){const r=RNe(e.activeWalkthrough),n=r?e.xyedges.findIndex(o=>o.id===e.activeWalkthrough?.stepId):-1;return{isActive:r,isParallel:r&&ua(e.activeWalkthrough?.parallelPrefix),hasNext:r&&n0,notes:r?e.xyedges[n]?.data?.notes??or.EMPTY:null}}const sQe=E.memo(()=>{const{isActive:e,notes:r}=vs(iQe);return y.jsx(Qn,{children:e&&r&&!r.isEmpty&&y.jsx(Ei.div,{layout:"position",className:be({position:"relative"}),initial:{opacity:0,translateX:-20},animate:{opacity:1,translateX:0},exit:{opacity:0,translateX:-20},children:y.jsxs(pa,{className:Z0({position:"absolute",layerStyle:"likec4.dropdown",gap:"sm",padding:"md",paddingTop:"xxs",pointerEvents:"all",maxWidth:"calc(100cqw - 32px)",minWidth:"calc(100cqw - 50px)",maxHeight:"calc(100cqh - 100px)",width:"max-content",cursor:"default",overflow:"auto",overscrollBehavior:"contain","@/sm":{minWidth:400,maxWidth:550},"@/lg":{maxWidth:700}}),type:"scroll",children:[y.jsx(aQe,{children:"Notes"}),y.jsx(Wp,{value:r,fontSize:"sm",emptyText:"No description",className:be({userSelect:"all"})})]})})})});function lQe({onResetManualLayout:e}){return y.jsxs(hn,{withinPortal:!1,floatingStrategy:"absolute",shadow:"lg",position:"bottom-start",offset:{mainAxis:4},children:[y.jsx(hn.Target,{children:y.jsxs(Er,{className:et("mantine-active",CT({variant:"default"}),Zn({gap:"2",py:"1.5",px:"2",lineHeight:"1",rounded:"sm",textStyle:"xs",fontWeight:"medium",color:{base:"likec4.panel.action",_hover:"likec4.panel.action.hover"},userSelect:"none"})),children:[y.jsx(zr,{children:"Actions"}),y.jsx(MT,{size:12,stroke:2,opacity:.7})]})}),y.jsxs(hn.Dropdown,{children:[y.jsx(hn.Item,{disabled:!0,rightSection:y.jsx(vl,{size:"xs",radius:"sm",children:"Soon"}),children:"Apply changes"}),y.jsx(hn.Item,{fz:"sm",onClick:e,children:"Reset manual layout"})]})]})}function cQe({value:e,onChange:r}){const n=E.useMemo(()=>[{value:"manual",label:"Saved"},{value:"auto",label:"Latest"}],[]);return y.jsx(Br,{layout:"position",children:y.jsx(dm,{size:"xs",color:e==="manual"?"orange":"green",value:e,component:Br,onChange:o=>{at(o==="manual"||o==="auto","Invalid layout type"),r(o)},classNames:{label:be({fontSize:"xxs",fontWeight:"medium"})},data:n})})}const qte=kp.withProps({mx:2,size:"xs",orientation:"vertical"});function uQe(){const[e,{toggleCompare:r,switchLayout:n,resetManualLayout:o}]=KA();return y.jsxs(y.Fragment,{children:[y.jsx(zr,{css:{textStyle:"xs",color:"likec4.panel.text",userSelect:"none"},children:"Compare"}),y.jsx(cQe,{value:e.layout,onChange:n}),e.isEditable&&y.jsxs(sn,{gap:"1",children:[y.jsx(qte,{}),y.jsx(lQe,{onResetManualLayout:o}),y.jsx(qte,{})]}),y.jsx(Ec,{size:"sm",onClick:a=>{a.stopPropagation(),r()},children:y.jsx(Rp,{})})]})}const Ute=E.memo(()=>{const{enableCompareWithLatest:e}=_r();return y.jsx(Qn,{children:e&&y.jsx(Br,{layout:"position",className:Zn({gap:"2",layerStyle:"likec4.panel",position:"relative",px:"2",py:"1",pl:"3",pointerEvents:"all"}),initial:{opacity:0,translateX:-20},animate:{opacity:1,translateX:0},exit:{opacity:0,translateX:-20},children:y.jsx(uQe,{})})})});Ute.displayName="ComparePanel";const Hy=co.withProps({color:"dark",fz:"xs",openDelay:600,closeDelay:120,label:"",children:null,offset:8,position:"right"}),dQe=[["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M4 8v-2a2 2 0 0 1 2 -2h2",key:"svg-1"}],["path",{d:"M4 16v2a2 2 0 0 0 2 2h2",key:"svg-2"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v2",key:"svg-3"}],["path",{d:"M16 20h2a2 2 0 0 0 2 -2v-2",key:"svg-4"}]],pQe=Nt("outline","focus-centered","FocusCentered",dQe),hQe=()=>{const e=Qt();return y.jsx(Hy,{label:"Center camera",children:y.jsx(Ec,{onClick:()=>e.fitDiagram(),children:y.jsx(pQe,{})})})};be({gap:"xxs",_empty:{display:"none"}}),be({top:"md",left:"md",margin:"0",pointerEvents:"none","& :where(button, .action-icon, [role='dialog'])":{pointerEvents:"all"},"& .action-icon":{"--ai-size":"2rem"},"& .tabler-icon":{width:"65%",height:"65%"},_reduceGraphics:{"& .action-icon":{"--ai-radius":"0px"}}}),be({shadow:{base:"md",_whenPanning:"none"}}),be({"& .tabler-icon":{width:"65%",height:"65%"}});const p4=be({flex:"1 1 40%",textAlign:"center",fontWeight:500,padding:"[4px 6px]",fontSize:"11px",zIndex:1}),fQe=be({background:"mantine.colors.gray[2]",borderRadius:"sm",border:"1px solid",borderColor:"mantine.colors.gray[4]",_dark:{background:"mantine.colors.dark[5]",borderColor:"mantine.colors.dark[4]"}}),mQe=be({position:"relative",borderRadius:"sm",background:"mantine.colors.gray[3]",boxShadow:"inset 1px 1px 3px 0px #00000024",_dark:{background:"mantine.colors.dark[7]"}}),gQe=be({position:"absolute",width:8,height:8,border:"2px solid",borderColor:"mantine.colors.gray[5]",borderRadius:3,transform:"translate(-50%, -50%)"}),yQe=[["path",{d:"M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1",key:"svg-0"}],["path",{d:"M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1",key:"svg-1"}],["path",{d:"M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1",key:"svg-2"}],["path",{d:"M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1",key:"svg-3"}]],bQe=Nt("outline","layout-dashboard","LayoutDashboard",yQe),vQe=e=>({viewId:e.view.id,isManualLayout:e.view._layout==="manual",autoLayout:e.view.autoLayout}),xQe=()=>{const e=Qt(),[r,n]=E.useState(null),[o,a]=E.useState({}),{autoLayout:i,viewId:s,isManualLayout:l}=vs(vQe),{ref:c,hovered:u}=X9(),d=g=>b=>{o[g]=b,a(o)},h=g=>b=>{b.stopPropagation(),e.fitDiagram(),e.triggerChange({op:"change-autolayout",layout:{...i,direction:g}})},f=(g,b)=>{e.fitDiagram(),e.triggerChange({op:"change-autolayout",layout:{...i,nodeSep:g,rankSep:b}})};return l?null:y.jsxs(Rr,{position:"right-start",clickOutsideEvents:["pointerdown"],radius:"xs",shadow:"lg",offset:{mainAxis:10},children:[y.jsx($u,{children:y.jsx(Hy,{label:"Change Auto Layout",children:y.jsx(Ec,{children:y.jsx(bQe,{})})})}),y.jsx(fc,{className:"likec4-top-left-panel",p:8,pt:6,opacity:u?.6:1,children:y.jsxs(Re,{pos:"relative",ref:n,children:[y.jsx(B2,{target:o[i.direction],parent:r,className:fQe}),y.jsx(Re,{mb:10,children:y.jsx(ft,{inline:!0,fz:"xs",c:"dimmed",fw:500,children:"Auto layout:"})}),y.jsxs(mc,{gap:2,wrap:"wrap",justify:"stretch",maw:160,children:[y.jsx(Er,{className:p4,ref:d("TB"),onClick:h("TB"),children:"Top-Bottom"}),y.jsx(Er,{className:p4,ref:d("BT"),onClick:h("BT"),children:"Bottom-Top"}),y.jsx(Er,{className:p4,ref:d("LR"),onClick:h("LR"),children:"Left-Right"}),y.jsx(Er,{className:p4,ref:d("RL"),onClick:h("RL"),children:"Right-Left"})]}),y.jsx(Re,{my:10,children:y.jsx(ft,{inline:!0,fz:"xs",c:"dimmed",fw:500,children:"Spacing:"})}),y.jsx(wQe,{ref:c,isVertical:i.direction==="TB"||i.direction==="BT",nodeSep:i.nodeSep,rankSep:i.rankSep,onChange:f},s)]})})]})},Um=400,wQe=E.forwardRef(({isVertical:e,nodeSep:r,rankSep:n,onChange:o},a)=>{e||([r,n]=[n,r]);const i=HE(({x:f,y:g})=>{e||([f,g]=[g,f]),o(Math.round(f*Um),Math.round(g*Um))},[o,e],250,2e3),[s,l]=uc({defaultValue:d$e({x:(r??100)/Um,y:(n??120)/Um}),onChange:i}),{ref:c}=CU(l);let u=Math.round(s.x*Um),d=Math.round(s.y*Um);e||([u,d]=[d,u]);const h=Hr(c,a);return y.jsxs(Re,{ref:h,className:mQe,pt:"100%",children:[y.jsx(Re,{className:gQe,style:{left:`${s.x*100}%`,top:`${s.y*100}%`}}),y.jsx(Re,{pos:"absolute",left:2,bottom:2,children:y.jsxs(ft,{component:"div",fz:8,c:"dimmed",fw:500,children:[d,", ",u]})})]})}),kQe=[["path",{d:"M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M10 4l4 16",key:"svg-1"}],["path",{d:"M12 12l-8 2",key:"svg-2"}]],_Qe=Nt("outline","layout-collage","LayoutCollage",kQe),EQe=[["path",{d:"M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M4 12h8",key:"svg-1"}],["path",{d:"M12 15h8",key:"svg-2"}],["path",{d:"M12 9h8",key:"svg-3"}],["path",{d:"M12 4v16",key:"svg-4"}]],Wte=Nt("outline","layout-board-split","LayoutBoardSplit",EQe),SQe=[["path",{d:"M4 4l0 16",key:"svg-0"}],["path",{d:"M8 9m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-1"}]],CQe=Nt("outline","layout-align-left","LayoutAlignLeft",SQe),TQe=[["path",{d:"M12 4l0 5",key:"svg-0"}],["path",{d:"M12 15l0 5",key:"svg-1"}],["path",{d:"M6 9m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-2"}]],AQe=Nt("outline","layout-align-center","LayoutAlignCenter",TQe),RQe=[["path",{d:"M20 4l0 16",key:"svg-0"}],["path",{d:"M4 9m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-1"}]],NQe=Nt("outline","layout-align-right","LayoutAlignRight",RQe),DQe=[["path",{d:"M4 4l16 0",key:"svg-0"}],["path",{d:"M9 8m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z",key:"svg-1"}]],$Qe=Nt("outline","layout-align-top","LayoutAlignTop",DQe),MQe=[["path",{d:"M4 12l5 0",key:"svg-0"}],["path",{d:"M15 12l5 0",key:"svg-1"}],["path",{d:"M9 6m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z",key:"svg-2"}]],PQe=Nt("outline","layout-align-middle","LayoutAlignMiddle",MQe),zQe=[["path",{d:"M4 20l16 0",key:"svg-0"}],["path",{d:"M9 4m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z",key:"svg-1"}]],IQe=Nt("outline","layout-align-bottom","LayoutAlignBottom",zQe),OQe=[["path",{d:"M6 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M18 5m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-1"}],["path",{d:"M12 19h4.5c.71 0 1.372 -.212 1.924 -.576m1.545 -2.459a3.5 3.5 0 0 0 -3.469 -3.965h-.499m-4 0h-3.501a3.5 3.5 0 0 1 -2.477 -5.972m2.477 -1.028h3.5",key:"svg-2"}],["path",{d:"M3 3l18 18",key:"svg-3"}]],jQe=Nt("outline","route-off","RouteOff",OQe),Sc=({label:e,icon:r,onClick:n})=>y.jsx(Hy,{label:e,withinPortal:!1,position:"top",children:y.jsx(Ec,{classNames:{root:"action-icon",icon:be({"& > svg":{width:"70%",height:"70%"}})},onClick:n,children:r})}),Yte=E.memo(()=>{const e=Qt(),r=qm();return y.jsxs(Rr,{position:"right",offset:{mainAxis:12},clickOutsideEvents:["pointerdown"],...r,children:[y.jsx($u,{children:y.jsx(Hy,{label:"Manual layouting tools",children:y.jsx(Ec,{children:y.jsx(_Qe,{})})})}),y.jsx(fc,{className:Zn({gap:"0.5",layerStyle:"likec4.panel",padding:"1",pointerEvents:"all"}),children:y.jsxs(Ep,{children:[y.jsx(Sc,{label:"Align in columns",icon:y.jsx(Wte,{}),onClick:n=>{n.stopPropagation(),e.align("Column")}}),y.jsx(Sc,{label:"Align left",icon:y.jsx(CQe,{}),onClick:n=>{n.stopPropagation(),e.align("Left")}}),y.jsx(Sc,{label:"Align center",icon:y.jsx(AQe,{}),onClick:n=>{n.stopPropagation(),e.align("Center")}}),y.jsx(Sc,{label:"Align right",icon:y.jsx(NQe,{}),onClick:n=>{n.stopPropagation(),e.align("Right")}}),y.jsx(Sc,{label:"Align in rows",icon:y.jsx(Wte,{style:{transform:"rotate(90deg)"}}),onClick:n=>{n.stopPropagation(),e.align("Row")}}),y.jsx(Sc,{label:"Align top",icon:y.jsx($Qe,{}),onClick:n=>{n.stopPropagation(),e.align("Top")}}),y.jsx(Sc,{label:"Align middle",icon:y.jsx(PQe,{}),onClick:n=>{n.stopPropagation(),e.align("Middle")}}),y.jsx(Sc,{label:"Align bottom",icon:y.jsx(IQe,{}),onClick:n=>{n.stopPropagation(),e.align("Bottom")}}),y.jsx(Sc,{label:"Reset all control points",icon:y.jsx(jQe,{}),onClick:n=>{n.stopPropagation(),e.resetEdgeControlPoints()}})]})})]})});Yte.displayName="ManualLayoutToolsButton";const LQe=()=>{const e=Qt();return y.jsx(Hy,{label:"Switch to Read-only",children:y.jsx(Ec,{onClick:()=>e.toggleFeature("ReadOnly"),children:y.jsx($te,{size:14,stroke:2})})})};function BQe(){const{enableReadOnly:e}=_r();return y.jsx(Qn,{children:!e&&y.jsx(Br,{layout:"position",className:Z0({gap:"xs",layerStyle:"likec4.panel",position:"relative",cursor:"pointer",padding:"xxs",pointerEvents:"all"}),initial:{opacity:0,translateX:-20},animate:{opacity:1,translateX:0},exit:{opacity:0,translateX:-20},children:y.jsxs(Ep,{openDelay:600,closeDelay:120,children:[y.jsx(xQe,{}),y.jsx(Yte,{}),y.jsx(hQe,{}),y.jsx(LQe,{})]})})})}const FQe=[["path",{d:"M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z",key:"svg-0"}]],HQe=Nt("filled","player-stop-filled","PlayerStopFilled",FQe),VQe=[["path",{d:"M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z",key:"svg-0"}],["path",{d:"M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z",key:"svg-1"}]],qQe=Nt("filled","player-skip-back-filled","PlayerSkipBackFilled",VQe),UQe=[["path",{d:"M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z",key:"svg-0"}],["path",{d:"M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z",key:"svg-1"}]],WQe=Nt("filled","player-skip-forward-filled","PlayerSkipForwardFilled",UQe),Gte=Kn.withProps({component:Ni,layout:"position",whileTap:{scale:.95},variant:"light",size:"xs",fw:"500"}),YQe=()=>{const{portalProps:e}=qm();return y.jsx(j0,{...e,children:y.jsx(zr,{css:{position:"absolute",margin:"0",padding:"0",top:"0",left:"0",width:"100%",height:"100%",border:"2px solid",borderColor:"mantine.colors.orange[6]",pointerEvents:"none",md:{borderWidth:4}}})})};function GQe(){const e=Qt(),{isParallel:r,hasNext:n,hasPrevious:o,currentStep:a,totalSteps:i}=vs(s=>{const l=s.xyedges.findIndex(c=>c.id===s.activeWalkthrough?.stepId);return{isParallel:ua(s.activeWalkthrough?.parallelPrefix),hasNext:l0,currentStep:l+1,totalSteps:s.xyedges.length}});return y.jsxs(Qn,{propagate:!0,mode:"popLayout",children:[y.jsx(Mte,{variant:"light",size:"xs",color:"orange",mr:"sm",onClick:s=>{s.stopPropagation(),e.stopWalkthrough()},rightSection:y.jsx(HQe,{size:10}),children:"Stop"},"stop-walkthrough"),y.jsx(Gte,{disabled:!o,onClick:()=>e.walkthroughStep("previous"),leftSection:y.jsx(qQe,{size:10}),children:"Previous"},"prev"),y.jsxs(vl,{component:Br,layout:"position",size:"md",radius:"sm",variant:r?"gradient":"transparent",gradient:{from:"red",to:"orange",deg:90},rightSection:y.jsx(Br,{className:be({fontSize:"xxs",display:r?"block":"none"}),children:"parallel"}),className:be({alignItems:"baseline"}),children:[a," / ",i]},"step-badge"),y.jsx(Gte,{disabled:!n,onClick:()=>e.walkthroughStep("next"),rightSection:y.jsx(WQe,{size:10}),children:"Next"},"next"),r&&y.jsx(YQe,{},"parallel-frame")]})}const Xte=E.memo(()=>{const e=zp(),r=NGe(),n=AWe(),o=KS(rZe,{input:{view:r,viewModel:n}});return E.useEffect(()=>{const a=o.on("navigateTo",i=>{e.getSnapshot().context.view.id!==i.viewId&&e.send({type:"navigate.to",viewId:i.viewId})});return()=>a.unsubscribe()},[o,e]),OF(()=>{o.send({type:"update.inputs",inputs:{viewModel:n,view:r}})},[n,r]),y.jsx(Ap,{css:{alignItems:"flex-start",pointerEvents:"none",position:"absolute",top:"0",left:"0",margin:"0",width:"100%",gap:"xxs",maxWidth:["calc(100vw)","calc(100cqw)"],"@/sm":{margin:"xs",gap:"xs",width:"max-content",maxWidth:["calc(100vw - 2 * {spacing.md})","calc(100cqw - 2 * {spacing.md})"]}},children:y.jsxs(nZe,{value:o,children:[y.jsx(XQe,{actor:o}),y.jsx(Ute,{}),y.jsx(sQe,{}),y.jsx(BQe,{})]})})});Xte.displayName="NavigationPanel";const XQe=({actor:e})=>{const r=fn(e,o=>o.hasTag("active")),n=qm();return y.jsxs(Rr,{offset:{mainAxis:4},opened:r,position:"bottom-start",trapFocus:!0,...n,clickOutsideEvents:["pointerdown","mousedown","click"],onDismiss:()=>e.send({type:"dropdown.dismiss"}),children:[y.jsx(KQe,{actor:e}),r&&y.jsx(Lte,{})]})},KQe=({actor:e})=>{const r=vs(n=>n.activeWalkthrough!==null);return y.jsx($m,{children:y.jsx($u,{children:y.jsx(Br,{layout:!0,className:Zn({layerStyle:"likec4.panel",position:"relative",gap:"xs",cursor:"pointer",pointerEvents:"all",width:"100%"}),onMouseLeave:()=>e.send({type:"breadcrumbs.mouseLeave"}),children:y.jsx(Qn,{mode:"popLayout",children:r?y.jsx(GQe,{}):y.jsx(Ote,{})})})})})},QA=be({position:"absolute",bottom:"0",right:"0",padding:"2",margin:"0",width:"min-content",height:"min-content"}),ZQe=be({"--ai-radius":"0px",_noReduceGraphics:{"--ai-radius":"{radii.md}"}}),QQe=be({cursor:"default",userSelect:"none",minWidth:200,maxWidth:"calc(100vw - 20px)",backgroundColor:"mantine.colors.body/80",sm:{minWidth:300,maxWidth:"65vw"},md:{maxWidth:"40vw"},_dark:{backgroundColor:"mantine.colors.dark[6]/80"}}),JQe=be({padding:"xxs"}),eJe=be({backgroundColor:"transparent",transition:"all 100ms ease-in",_hover:{transition:"all 120ms ease-out",backgroundColor:"mantine.colors.primary[2]/50"},_dark:{_hover:{backgroundColor:"mantine.colors.dark[3]/40"}}});be({fill:"var(--likec4-palette-fill)",stroke:"var(--likec4-palette-stroke)",strokeWidth:1,overflow:"visible",width:"100%",height:"auto",filter:` + drop-shadow(0 2px 3px rgb(0 0 0 / 22%)) + drop-shadow(0 1px 8px rgb(0 0 0 / 10%)) + `});const tJe=be({fontWeight:500,letterSpacing:"0.2px",paddingTop:"0",paddingBottom:"0",textTransform:"lowercase",transition:"all 150ms ease-in-out",cursor:"pointer","--badge-radius":"2px","--badge-fz":"9.5px","--badge-padding-x":"3px","--badge-height":"13.5px","--badge-lh":"1","--badge-bg":"var(--likec4-palette-fill)","--badge-color":"var(--likec4-palette-hiContrast)"}),rJe=[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 16v.01",key:"svg-1"}],["path",{d:"M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483",key:"svg-2"}]],nJe=Nt("outline","help-circle","HelpCircle",rJe),oJe=[["path",{d:"M7 7l10 10",key:"svg-0"}],["path",{d:"M17 8l0 9l-9 0",key:"svg-1"}]],aJe=Nt("outline","arrow-down-right","ArrowDownRight",oJe),iJe=({value:e})=>{const{title:r,color:n="primary",shape:o="rectangle"}=e,[a,i]=E.useState(null),s=Qt(),l=300,c=200;return y.jsx(W2,{shadow:"none",px:"xs",py:"sm",className:et(eJe),"data-likec4-color":n,onMouseEnter:()=>{i(null),s.highlightNotation(e)},onMouseLeave:()=>{i(null),s.unhighlightNotation()},children:y.jsxs(pn,{gap:"sm",align:"stretch",wrap:"nowrap",children:[y.jsx(Re,{flex:"0 0 70px",style:{position:"relative",width:70,height:XRe(70*(c/l),0)},children:y.jsx(Om,{data:{shape:o,width:l,height:c}})}),y.jsxs(Xo,{gap:4,flex:1,children:[y.jsx(pn,{gap:4,flex:"0 0 auto",children:e.kinds.map(u=>y.jsx(vl,{className:et(tJe),onMouseEnter:()=>{i(u),s.highlightNotation(e,u)},onMouseLeave:()=>{i(null),s.highlightNotation(e)},opacity:Vq(a)&&a!==u?.25:1,children:u},u))}),y.jsx(ft,{component:"div",fz:"sm",fw:500,lh:"1.25",style:{textWrap:"pretty"},children:r})]})]})})},sJe=e=>({id:e.view.id,notations:e.view.notation?.nodes??[]}),lJe=E.memo(()=>{const e=Iw(l=>l.height),{id:r,notations:n}=vs(sJe),[o,a]=c$e({key:"notation-webview-collapsed",defaultValue:!0}),i=n.length>0,s=qm();return y.jsxs(Qn,{children:[!i&&y.jsx(Ei.div,{initial:{opacity:.75,translateX:"50%"},animate:{opacity:1,translateX:0},exit:{translateX:"100%",opacity:.6},className:QA,children:y.jsx(co,{label:"View has no notations",color:"orange",...s,children:y.jsx(Ba,{size:"lg",variant:"light",color:"orange",radius:"md",children:y.jsx(zte,{})})})},"empty"),i&&o&&y.jsx(Ei.div,{initial:{opacity:.75,translateX:"50%"},animate:{opacity:1,translateX:0},exit:{translateX:"100%",opacity:.6},className:QA,children:y.jsx(co,{label:"Show notation",color:"dark",fz:"xs",...s,children:y.jsx(br,{size:"lg",variant:"default",color:"gray",className:ZQe,onClick:()=>a(!1),children:y.jsx(nJe,{stroke:1.5})})})},"collapsed"),i&&!o&&y.jsx(Ei.div,{initial:{opacity:.75,scale:.2},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.25},className:et("react-flow__panel",QA),style:{transformOrigin:"bottom right"},children:y.jsx(om,{radius:"sm",withBorder:!0,shadow:"lg",className:QQe,children:y.jsxs(Sp,{defaultValue:"first",radius:"xs",children:[y.jsxs(Y0,{children:[y.jsx(br,{size:"md",variant:"subtle",color:"gray",ml:2,style:{alignSelf:"center"},onClick:()=>a(!0),children:y.jsx(aJe,{stroke:2})}),y.jsx(pm,{value:"first",fz:"xs",children:"Elements"}),y.jsx(pm,{value:"second",fz:"xs",disabled:!0,children:"Relationships"})]}),y.jsx(yc,{value:"first",className:JQe,hidden:o,children:y.jsx(pa,{viewportProps:{style:{maxHeight:`min(40vh, ${Math.max(e-60,50)}px)`}},children:y.jsx(Xo,{gap:0,children:n.map((l,c)=>y.jsx(iJe,{value:l},c))})})})]})})},r)]})}),cJe=E.memo(()=>{const[{layout:e,isActive:r},{toggleCompare:n}]=KA(),o=e==="manual"?"var(--mantine-color-orange-6)":"var(--mantine-color-green-6)";return y.jsx(zr,{className:Zn({position:"absolute",top:"0",left:"0",width:"full",height:"full",border:"default",borderWidth:4,pointerEvents:"none",alignItems:"flex-start",justifyContent:"center"}),style:{zIndex:"9999",display:r?void 0:"none",borderColor:o},children:y.jsx(uJe,{style:{backgroundColor:o},onClick:a=>{a.stopPropagation(),n()},children:"Close compare"})})}),uJe=Er.withProps({className:be({fontSize:"xs",fontWeight:"medium",py:"1.5",lineHeight:"1",borderBottomLeftRadius:"sm",borderBottomRightRadius:"sm",transform:"translateY(-4px)",px:"4",color:"mantine.colors.gray[9]",pointerEvents:"all",_active:{transform:"translateY(-3px)"}})}),Kte=E.memo(()=>{const{enableControls:e,enableNotations:r,enableSearch:n,enableRelationshipDetails:o,enableReadOnly:a,enableCompareWithLatest:i}=_r(),s=FEe(),l=IX(),c=VBe(),u=E.useCallback(()=>{console.warn("DiagramUI: resetting error boundary and rerendering..."),s()},[]);return y.jsxs(rX,{onReset:u,children:[e&&y.jsx(Xte,{}),l&&y.jsx(JXe,{overlaysActorRef:l}),r&&y.jsx(lJe,{}),n&&c&&y.jsx(LKe,{searchActorRef:c}),o&&a&&y.jsx(ZKe,{}),i&&y.jsx(cJe,{})]})});Kte.displayName="DiagramUI";const dJe=be({overflow:"visible",position:"absolute",pointerEvents:"none",top:"0",left:"0",mixBlendMode:"normal"}),pJe=be({fill:"var(--likec4-palette-relation-stroke)",stroke:"var(--likec4-palette-relation-stroke)",fillOpacity:.75,strokeWidth:1,cursor:"grab",pointerEvents:"auto",visibility:"hidden",_hover:{fillOpacity:1,stroke:"mantine.colors.primary.filledHover",strokeWidth:18,transition:"stroke 100ms ease-out, stroke-width 100ms ease-out"},":where([data-likec4-selected='true'], [data-likec4-hovered='true']) &":{visibility:"visible",transition:"fill-opacity 150ms ease-out, stroke 150ms ease-out, stroke-width 150ms ease-out",transitionDelay:"50ms",fillOpacity:1,strokeWidth:12}}),hJe=be({cursor:"grabbing","& *":{cursor:"grabbing !important"},"& .react-flow__edge-interaction":{cursor:"grabbing !important"}});function fJe({sourceX:e,sourceY:r,targetX:n,targetY:o,data:a}){const[i,s]=E.useState(()=>a.controlPoints??jw(a.points));qp(()=>{const c=a.controlPoints??jw(a.points);s(u=>lt(u,c)?u:c)},[a.controlPoints?.map(c=>`${c.x},${c.y}`).join("|")??"",a.points.map(c=>`${c[0]},${c[1]}`).join("|")]);const l=kt(({x:c,y:u})=>{const d=jo(e,r),h=jo(n,o),f=[a.dir==="back"?h:d,...i.map(jo)||[],a.dir==="back"?d:h],g=jo(Math.round(c),Math.round(u));let b=0,x=1/0;for(let k=0;k=0))throw new Error(`invalid digits: ${e}`);if(r>15)return Qte;const n=10**r;return function(o){this._+=o[0];for(let a=1,i=o.length;aYp)if(!(Math.abs(h*c-u*d)>Yp)||!i)this._append`L${this._x1=r},${this._y1=n}`;else{let g=o-s,b=a-l,x=c*c+u*u,w=g*g+b*b,k=Math.sqrt(x),C=Math.sqrt(f),_=i*Math.tan((JA-Math.acos((x+f-w)/(2*k*C)))/2),T=_/C,A=_/k;Math.abs(T-1)>Yp&&this._append`L${r+T*d},${n+T*h}`,this._append`A${i},${i},0,0,${+(h*g>d*b)},${this._x1=r+A*c},${this._y1=n+A*u}`}}arc(r,n,o,a,i,s){if(r=+r,n=+n,o=+o,s=!!s,o<0)throw new Error(`negative radius: ${o}`);let l=o*Math.cos(a),c=o*Math.sin(a),u=r+l,d=n+c,h=1^s,f=s?a-i:i-a;this._x1===null?this._append`M${u},${d}`:(Math.abs(this._x1-u)>Yp||Math.abs(this._y1-d)>Yp)&&this._append`L${u},${d}`,o&&(f<0&&(f=f%eR+eR),f>mJe?this._append`A${o},${o},0,1,${h},${r-l},${n-c}A${o},${o},0,1,${h},${this._x1=u},${this._y1=d}`:f>Yp&&this._append`A${o},${o},0,${+(f>=JA)},${h},${this._x1=r+o*Math.cos(i)},${this._y1=n+o*Math.sin(i)}`)}rect(r,n,o,a){this._append`M${this._x0=this._x1=+r},${this._y0=this._y1=+n}h${o=+o}v${+a}h${-o}Z`}toString(){return this._}}function bJe(e){let r=3;return e.digits=function(n){if(!arguments.length)return r;if(n==null)r=null;else{const o=Math.floor(n);if(!(o>=0))throw new RangeError(`invalid digits: ${n}`);r=o}return e},()=>new yJe(r)}function vJe(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Jte(e){this._context=e}Jte.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,r){switch(e=+e,r=+r,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 1:this._point=2;default:this._context.lineTo(e,r);break}}};function xJe(e){return new Jte(e)}function wJe(e){return e[0]}function kJe(e){return e[1]}function _Je(e,r){var n=Wm(!0),o=null,a=xJe,i=null,s=bJe(l);e=typeof e=="function"?e:e===void 0?wJe:Wm(e),r=typeof r=="function"?r:r===void 0?kJe:Wm(r);function l(c){var u,d=(c=vJe(c)).length,h,f=!1,g;for(o==null&&(i=a(g=s())),u=0;u<=d;++u)!(uZte){var l=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,c=3*e._l01_a*(e._l01_a+e._l12_a);o=(o*l-e._x0*e._l12_2a+e._x2*e._l01_2a)/c,a=(a*l-e._y0*e._l12_2a+e._y2*e._l01_2a)/c}if(e._l23_a>Zte){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,d=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*u+e._x1*e._l23_2a-r*e._l12_2a)/d,s=(s*u+e._y1*e._l23_2a-n*e._l12_2a)/d}e._context.bezierCurveTo(o,a,i,s,e._x2,e._y2)}function tre(e,r){this._context=e,this._alpha=r}tre.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);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,r){if(e=+e,r=+r,this._point){var n=this._x2-e,o=this._y2-r;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+o*o,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 1:this._point=2;break;case 2:this._point=3;default:ere(this,e,r);break}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=e,this._y0=this._y1,this._y1=this._y2,this._y2=r}},(function e(r){function n(o){return r?new tre(o,r):new rR(o,0)}return n.alpha=function(o){return e(+o)},n})(.5);function rre(e,r){this._context=e,this._alpha=r}rre.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||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,r){if(e=+e,r=+r,this._point){var n=this._x2-e,o=this._y2-r;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+o*o,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:ere(this,e,r);break}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=e,this._y0=this._y1,this._y1=this._y2,this._y2=r}};const EJe=(function e(r){function n(o){return r?new rre(o,r):new nR(o,0)}return n.alpha=function(o){return e(+o)},n})(.5),SJe=_Je().curve(EJe.alpha(.7)).x(e=>Math.round(e.x)).y(e=>Math.round(e.y)),CJe=(e,r)=>bJ(e.sourceNode,r.sourceNode)&&bJ(e.targetNode,r.targetNode);function TJe({props:{sourceX:e,sourceY:r,source:n,target:o,targetX:a,targetY:i,data:s},controlPoints:l,isControlPointDragging:c}){const{sourceNode:u,targetNode:d}=Iw(E.useCallback(({nodeLookup:h})=>{const f=bt(h.get(n),`source node ${n} not found`),g=bt(h.get(o),`target node ${o} not found`);return{sourceNode:yJ(f),targetNode:yJ(g)}},[n,o]),CJe);if(ua(s.controlPoints)||c){const h={x:e,y:r},f={x:a,y:i},g=6,b=s.dir==="back"?[f,Ay(d,Ff(l)??h,g),...l,Ay(u,lc(l)??f,g),h]:[h,Ay(u,Ff(l)??f,g),...l,Ay(d,lc(l)??h,g),f];return bt(SJe(b))}return kWe(s.points)}const nre=e=>{const r=e.getPointAtLength(e.getTotalLength()*.5);return{x:Math.round(r.x),y:Math.round(r.y)}},ore=NA(e=>{const[r,n]=E.useState(!1),o=hJ(),a=Qt(),{enableNavigateTo:i,enableReadOnly:s}=_r(),l=!s,{id:c,selected:u=!1,data:{hovered:d=!1,active:h=!1,labelBBox:f,labelXY:g,...b}}=e,x=i?b.navigateTo:void 0,{controlPoints:w,setControlPoints:k,insertControlPoint:C}=fJe(e);let _=TJe({props:e,controlPoints:w,isControlPointDragging:r}),T=f?.x??0,A=f?.y??0;const[R,D]=E.useState({x:g?.x??T,y:g?.y??A});qp(()=>{D({x:T,y:A})},[T,A]);const N=E.useRef(null);qE(()=>{const V=N.current;!V||!r||D(nre(V))},[_,r]),r&&(T=R.x,A=R.y);const M=kt(V=>{const I=N.current?nre(N.current):null;f&&I?a.updateEdgeData(c,{controlPoints:V,labelBBox:{...f,...I},labelXY:I}):a.updateEdgeData(c,{controlPoints:V}),a.stopEditing(!0),n(!1)}),O=kt(()=>{a.startEditing("edge"),n(!0)}),F=kt(()=>{a.stopEditing(),n(!1)}),L=kt(V=>{k(V),requestAnimationFrame(()=>{M(V)})}),U=kt(V=>{a.startEditing("edge"),n(!0),k(V),requestAnimationFrame(()=>{M(V)})}),P=kt(V=>{if(V.pointerType!=="mouse"||V.button!==2)return;V.stopPropagation(),V.preventDefault(),a.startEditing("edge");const I=C(o.screenToFlowPosition({x:V.clientX,y:V.clientY},{snapToGrid:!1}));a.updateEdgeData(c,{controlPoints:I}),a.stopEditing(!0)});return r&&!e.data.hovered&&(e={...e,data:{...e.data,hovered:!0}}),y.jsxs(y.Fragment,{children:[y.jsxs(My,{...e,className:et(r&&hJe),children:[y.jsx(Py,{edgeProps:e,svgPath:_,ref:N,isDragging:r,...l&&{onEdgePointerDown:P}}),f&&y.jsx(Qw,{edgeProps:e,labelPosition:{x:T,y:A},children:y.jsx($y,{pointerEvents:l?"none":"all",edgeProps:e,children:!l&&x&&y.jsx(Zw,{onClick:V=>{V.stopPropagation(),a.navigateTo(x)}})})})]}),l&&w.length>0&&(u||h||d||r)&&y.jsx(AJe,{edgeProps:e,controlPoints:w,onMove:k,onStartMove:O,onCancelMove:F,onFinishMove:L,onDelete:U,zIndex:_l.Element+500})]})});ore.displayName="RelationshipEdge";function AJe({edgeProps:e,controlPoints:r,onMove:n,onStartMove:o,onCancelMove:a,onFinishMove:i,onDelete:s,zIndex:l}){const c=AT(),u=hJ(),d=e.data.id,h=(b,x,w)=>{let k=!1,C={x:x.clientX,y:x.clientY},_=null,T=r;const A=D=>{const N={x:D.clientX,y:D.clientY};wJ(C,N)||(k||(k=!0,o()),C=N,_??=requestAnimationFrame(()=>{_=null,T=T.slice();const{x:M,y:O}=u.screenToFlowPosition(C,{snapToGrid:!1});T[b]={x:Math.round(M),y:Math.round(O)},n(T)})),D.stopPropagation()},R=D=>{D.stopPropagation(),w.removeEventListener("pointermove",A,{capture:!0}),w.removeEventListener("click",oR,{capture:!0}),k?i(T):a()};w.addEventListener("pointermove",A,{capture:!0}),w.addEventListener("pointerup",R,{once:!0,capture:!0}),w.addEventListener("click",oR,{capture:!0,once:!0})},f=(b,x)=>{if(r.length<=1)return;x.stopPropagation(),x.preventDefault();const w=r.slice();w.splice(b,1),setTimeout(()=>{s(w)},10)},g=kt(b=>{const{domNode:x,addSelectedEdges:w}=c.getState();if(!x||b.pointerType!=="mouse")return;const k=parseFloat(b.currentTarget.getAttribute("data-control-point-index")||"");if(isNaN(k))throw new Error("data-control-point-index is not a number");switch(b.button){case 0:{b.stopPropagation(),w([d]),h(k,b,x);break}case 2:f(k,b);break}});return y.jsx(Dq,{children:y.jsx(My,{component:"svg",className:dJe,...e,style:{...e.style,zIndex:l},children:y.jsx("g",{onContextMenu:oR,children:r.map((b,x)=>y.jsx("circle",{"data-control-point-index":x,onPointerDownCapture:g,className:et("nodrag nopan",pJe),cx:b.x,cy:b.y,r:3},"controlPoints"+d+"#"+x))})})})}const oR=e=>{e.stopPropagation(),e.preventDefault()},h4=16;function RJe(e){const{enableNavigateTo:r}=_r(),n=Qt(),{navigateTo:o}=e.data,a=e.source===e.target,i=e.sourceX>e.targetX,[s]=T3({sourceX:e.sourceX,sourceY:e.sourceY,sourcePosition:e.sourcePosition,targetX:e.targetX,targetY:e.targetY,targetPosition:e.targetPosition,...a&&{offset:30,borderRadius:16}});let l=e.sourceX;switch(!0){case a:l=e.sourceX+24+h4;break;case i:l=e.sourceX-h4;break;default:l=e.sourceX+h4;break}return y.jsxs(My,{...e,children:[y.jsx(Py,{edgeProps:e,svgPath:s}),y.jsx(Qw,{edgeProps:e,labelPosition:{x:l,y:e.sourceY+(a?0:h4),translate:i?"translate(-100%, 0)":void 0},children:y.jsx($y,{edgeProps:e,children:r&&o&&y.jsx(Zw,{onClick:c=>{c.stopPropagation(),n.navigateTo(o)}})})})]})}const NJe=(e,r)=>lt(e.data.id,r.data.id)&<(e.selected??!1,r.selected??!1)&<(e.data.modelFqn??null,r.data.modelFqn??null)&<(e.data.navigateTo??null,r.data.navigateTo??null)&<(e.data.hovered??!1,r.data.hovered??!1)&&(!e.extraButtons&&!r.extraButtons||an(e.extraButtons,r.extraButtons)),are=E.memo(({extraButtons:e,...r})=>{const{enableNavigateTo:n,enableRelationshipBrowser:o}=_r(),a=Qt(),{id:i,navigateTo:s,modelFqn:l}=r.data;let c=E.useMemo(()=>{const u=[];return s&&n&&u.push({key:"navigate",icon:y.jsx(Ri,{}),onClick:d=>{d.stopPropagation(),a.navigateTo(s,i)}}),o&&u.push({key:"relationships",icon:y.jsx(zy,{}),onClick:d=>{d.stopPropagation(),a.openRelationshipsBrowser(l)}}),u},[n,o,l,s,i,a]);return e&&bo(e,1)&&(c=[...c,...e]),y.jsx(e4,{...r,buttons:c})},NJe),DJe=({extraButtons:e,...r})=>{const{enableNavigateTo:n,enableRelationshipBrowser:o}=_r(),a=Qt(),{id:i,navigateTo:s,modelFqn:l}=r.data;let c=E.useMemo(()=>{const u=[];return s&&n&&u.push({key:"navigate",icon:y.jsx(Ri,{}),onClick:d=>{d.stopPropagation(),a.navigateTo(s,i)}}),o&&l&&u.push({key:"relationships",icon:y.jsx(zy,{}),onClick:d=>{d.stopPropagation(),a.openRelationshipsBrowser(l)}}),u},[n,o,l,s,i]);return e&&bo(e,1)&&(c=[...c,...e]),y.jsx(e4,{...r,buttons:c})};function $Je({data:{hovered:e=!1},icon:r,onClick:n}){const o=W9(e,e?130:0)[0]&&e;return y.jsx(Br,{initial:!1,animate:{scale:o?1.2:1,x:o?-1:0,y:o?-1:0},whileHover:{scale:1.4,x:-3,y:-1},className:"likec4-compound-navigation compound-action",whileTap:{scale:1},onClick:Cn,children:y.jsx(br,{className:et("nodrag nopan",Vee({delay:e&&!o}),zw({variant:"transparent"})),onClick:n,onDoubleClick:Cn,children:r??y.jsx(Ri,{stroke:2})})})}const ire=e=>{const{enableNavigateTo:r}=_r(),n=Qt(),{navigateTo:o}=e.data;return o&&r?y.jsx($Je,{onClick:a=>{a.stopPropagation(),n.navigateTo(o,e.id)},...e}):null};function sre({data:e}){const r=e.drifts;return!r||r.length===0?null:y.jsx(zr,{className:"likec4-node-drifts",css:{position:"absolute",inset:"0",pointerEvents:"none","& + .likec4-element-shape":{outlineColor:"likec4.compare.manual.outline",outlineWidth:{base:"2px",_light:"4px"},outlineStyle:"solid",outlineOffset:"1"}},children:y.jsx(D9,{isVisible:e.hovered===!0,align:"start",position:tt.Bottom,children:y.jsx(Z2,{color:"orange",withBorder:!1,withCloseButton:!1,title:"Changes:",children:r.map(n=>y.jsxs(ft,{mt:2,size:"sm",lh:"xs",children:["- ",n]},n))})})})}const lre=co.withProps({color:"dark",fz:"xs",openDelay:400,closeDelay:150,label:"",children:null,offset:4,withinPortal:!1});function f4({fqn:e}){const r=Qt();return y.jsx(lre,{label:"Browse relationships",children:y.jsx(br,{size:"sm",variant:"subtle",color:"gray",onClick:n=>{n.stopPropagation(),r.openRelationshipsBrowser(e)},children:y.jsx(zy,{stroke:2,style:{width:"72%",height:"72%"}})})})}function m4(e){const{onOpenSource:r}=Fm();return r?y.jsx(lre,{label:"Open source",children:y.jsx(br,{size:"sm",variant:"subtle",color:"gray",onClick:n=>{n.stopPropagation(),e.elementId?r?.({element:e.elementId}):e.deploymentId&&r?.({deployment:e.deploymentId})},children:y.jsx(zm,{stroke:1.8,style:{width:"70%"}})})}):null}function cre(){const e=E.useContext(K0);e||console.error("No LikeC4ModelContext found");const r=e?.$styles??ZI.DEFAULT,[n,o]=E.useState(r);return E.useEffect(()=>{o(a=>a.equals(r)?a:r)},[r]),n}const ure=["primary","secondary","muted"];function g4({elementColor:e,elementOpacity:r,onColorPreview:n,isOpacityEditable:o=!1,onChange:a,...i}){const{theme:s}=cre();return y.jsxs(Rr,{clickOutsideEvents:["pointerdown","mousedown","click"],position:"right-end",offset:2,withinPortal:!1,...i,children:[y.jsx($u,{children:y.jsx(Kn,{variant:"subtle",color:"gray",size:"compact-xs",px:3,children:y.jsx(H0,{color:s.colors[e].elements.fill,size:14,withShadow:!0,style:{color:"#fff",cursor:"pointer"}})})}),y.jsxs(fc,{p:"xs",children:[y.jsx(MJe,{theme:s,elementColor:e,onColorPreview:n,onChange:l=>a({color:l})}),o&&y.jsxs(y.Fragment,{children:[y.jsx(xS,{h:"xs"}),y.jsx(kp,{label:"opacity",labelPosition:"left"}),y.jsx(xS,{h:"xs"}),y.jsx(PJe,{elementOpacity:r,onOpacityChange:l=>{a({opacity:l})}})]})]})]})}function MJe({theme:e,elementColor:r,onColorPreview:n,onChange:o}){const a=s=>l=>{l.stopPropagation(),n(null),r!==s&&o(s)},i=I9(e.colors).filter(s=>!ure.includes(s));return y.jsx(Xo,{gap:2,onMouseLeave:()=>n(null),children:y.jsxs(Ep,{openDelay:1e3,closeDelay:300,children:[y.jsx(mc,{maw:120,gap:"6",justify:"flex-start",align:"flex-start",direction:"row",wrap:"wrap",children:ure.map(s=>y.jsx(co,{label:s,fz:"xs",color:"dark",offset:2,withinPortal:!1,transitionProps:{duration:140,transition:"slide-up"},children:y.jsx(H0,{color:e.colors[s].elements.fill,size:18,withShadow:!0,onMouseEnter:()=>n(s),onClick:a(s),style:{color:"#fff",cursor:"pointer"},children:r===s&&y.jsx(HY,{style:{width:Me(10),height:Me(10)}})})},s))}),y.jsx(mc,{mt:"sm",maw:110,gap:"6",justify:"flex-start",align:"flex-start",direction:"row",wrap:"wrap",children:i.map(s=>y.jsx(co,{label:s,fz:"xs",color:"dark",offset:2,transitionProps:{duration:140,transition:"slide-up"},children:y.jsx(H0,{color:e.colors[s].elements.fill,size:18,onMouseEnter:()=>n(s),onClick:a(s),style:{color:"#fff",cursor:"pointer"},children:r===s&&y.jsx(HY,{style:{width:Me(10),height:Me(10)}})})},s))})]})})}function PJe({elementOpacity:e=100,onOpacityChange:r}){const[n,o]=E.useState(e);return OF(()=>{o(e)},[e]),y.jsx(vS,{size:"sm",color:"dark",value:n,onChange:o,onChangeEnd:r})}const zJe=be({color:"mantine.colors.dimmed",fontSize:"10px",fontWeight:600,maxWidth:"220px",cursor:"default",userSelect:"all",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"}),IJe=()=>vs(e=>e.xynodes.filter(r=>r.selected).length);function y4({title:e,children:r,nodeProps:n,...o}){const a=IJe(),{selected:i=!1,dragging:s=!1,data:{hovered:l=!1}}=n,c=l&&a===0||i&&a===1;let u=150;c?i?u=100:u=1e3:a>0&&(u=50);const[d]=W9(c,u);return d?y.jsx(D9,{isVisible:!s,offset:4,...o,children:y.jsx(om,{className:et("nodrag","nopan"),px:5,pb:8,pt:4,radius:"sm",shadow:"xl",onDoubleClickCapture:Cn,onPointerDown:Cn,onClick:Cn,onDoubleClick:Cn,withBorder:!0,children:y.jsxs(Xo,{gap:"6px",children:[y.jsx(Re,{px:"4px",children:y.jsx(ft,{className:zJe,children:e})}),y.jsx(pn,{gap:4,children:r})]})})}):null}function b4(e,r){const n=Qt(),[o,a]=E.useState(null),i=kt(l=>{if(l===null){if(!o)return;a(null),n.updateNodeData(r.data.id,{color:o});return}a(c=>c??r.data.color),n.updateNodeData(r.data.id,{color:l})}),s=kt(l=>{const{shape:c,color:u,...d}=l;n.updateNodeData(r.data.id,{...c&&{shape:c},...u&&{color:u},style:d}),n.triggerChange({op:"change-element-style",style:l,targets:[e]})});return{elementColor:o??r.data.color,onColorPreview:i,onChange:s}}function OJe(e){const{enableVscode:r,enableRelationshipBrowser:n}=_r(),{data:{style:o,modelFqn:a}}=e,{elementColor:i,onColorPreview:s,onChange:l}=b4(a,e),c=o?.opacity??100;return y.jsxs(y4,{nodeProps:e,title:a,align:"start",children:[y.jsx(g4,{elementColor:i,onColorPreview:s,isOpacityEditable:!0,elementOpacity:c,onChange:l,position:"left-start"}),y.jsx(dre,{elementBorderStyle:o?.border??(c<99?"dashed":"none"),onChange:l}),r&&y.jsx(m4,{elementId:a}),n&&y.jsx(f4,{fqn:a})]})}function jJe(e){const{enableVscode:r,enableRelationshipBrowser:n}=_r(),{data:{deploymentFqn:o,style:a,modelFqn:i}}=e,{elementColor:s,onColorPreview:l,onChange:c}=b4(o,e);return y.jsxs(y4,{nodeProps:e,title:o,align:"start",children:[y.jsx(g4,{elementColor:s,onColorPreview:l,isOpacityEditable:!0,elementOpacity:a?.opacity,onChange:c,position:"left-start"}),y.jsx(dre,{elementBorderStyle:a?.border,onChange:c}),r&&y.jsx(m4,{deploymentId:o}),n&&i&&y.jsx(f4,{fqn:i})]})}function dre({elementBorderStyle:e="dashed",onChange:r}){const[n,o]=E.useState(e);return E.useEffect(()=>{o(e)},[e]),y.jsx(Re,{children:y.jsx(dm,{size:"xs",fullWidth:!0,withItemsBorders:!1,value:n,onChange:a=>{const i=a;o(i),r({border:i})},styles:{label:{paddingTop:"0.5",paddingBottom:"0.5"}},data:[{label:"Solid",value:"solid"},{label:"Dashed",value:"dashed"},{label:"Dotted",value:"dotted"},{label:"None",value:"none"}]})})}function LJe(e){const{enableVscode:r,enableRelationshipBrowser:n}=_r(),{data:{shape:o,modelFqn:a}}=e,{elementColor:i,onColorPreview:s,onChange:l}=b4(a,e);return y.jsxs(y4,{nodeProps:e,title:a,align:"start",children:[y.jsx(pre,{elementShape:o,onChange:l}),y.jsx(g4,{elementColor:i,onColorPreview:s,onChange:l,position:"right-end"}),r&&y.jsx(m4,{elementId:a}),n&&y.jsx(f4,{fqn:a})]})}function BJe(e){const{enableVscode:r,enableRelationshipBrowser:n}=_r(),{data:{shape:o,deploymentFqn:a,modelFqn:i}}=e,{elementColor:s,onColorPreview:l,onChange:c}=b4(a,e);return y.jsxs(y4,{nodeProps:e,title:a,align:"start",children:[y.jsx(pre,{elementShape:o,onChange:c}),y.jsx(g4,{elementColor:s,onColorPreview:l,onChange:c,position:"right-end"}),r&&y.jsx(m4,{deploymentId:a}),n&&i&&y.jsx(f4,{fqn:i})]})}function pre({elementShape:e,onChange:r}){return y.jsxs(hn,{openDelay:300,closeDelay:450,floatingStrategy:"fixed",closeOnClickOutside:!0,clickOutsideEvents:["pointerdown","mousedown","click"],closeOnEscape:!0,closeOnItemClick:!1,position:"top-start",offset:2,styles:{item:{padding:"calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-xs)"}},withinPortal:!1,children:[y.jsx(G2,{children:y.jsx(Kn,{variant:"light",color:"gray",size:"compact-xs",rightSection:y.jsx(RA,{size:12}),children:e})}),y.jsx(q0,{onDoubleClick:Cn,onClick:Cn,children:Fye.map(n=>y.jsx(U0,{fz:12,fw:500,value:n,rightSection:e===n?y.jsx(kJ,{size:12}):void 0,onClick:o=>{o.stopPropagation(),r({shape:n})},children:n},n))})]})}const v4={top:"50%",left:"50%",right:"unset",bottom:"unset",visibility:"hidden",width:5,height:5,transform:"translate(-50%, -50%)"},Vy=()=>y.jsxs(y.Fragment,{children:[y.jsx(yo,{type:"target",position:tt.Top,style:v4}),y.jsx(yo,{type:"target",position:tt.Left,style:v4}),y.jsx(yo,{type:"source",position:tt.Right,style:v4}),y.jsx(yo,{type:"source",position:tt.Bottom,style:v4})]});function aR(e){const r=Qt(),n=e.data.modelFqn;return n?y.jsx($A,{...e,onClick:o=>{o.stopPropagation(),r.openElementDetails(n,e.id)}}):null}function hre(e){const r=Qt(),n=e.data.modelFqn;return n?y.jsx(qee,{...e,onClick:o=>{o.stopPropagation(),r.openElementDetails(n,e.id)}}):null}function FJe(e){const{enableElementTags:r,enableElementDetails:n,enableReadOnly:o,enableCompareWithLatest:a}=_r();return y.jsxs(Im,{nodeProps:e,children:[a&&y.jsx(sre,{...e}),y.jsx(Om,{...e}),y.jsx(Ss,{...e}),r&&y.jsx(Ry,{...e}),y.jsx(are,{...e}),n&&y.jsx(aR,{...e}),!o&&y.jsx(LJe,{...e}),y.jsx(Vy,{})]})}function HJe(e){const{enableElementTags:r,enableElementDetails:n,enableReadOnly:o,enableCompareWithLatest:a}=_r();return y.jsxs(Im,{nodeProps:e,children:[a&&y.jsx(sre,{...e}),y.jsx(Om,{...e}),y.jsx(Ss,{...e}),r&&y.jsx(Ry,{...e}),y.jsx(DJe,{...e}),n&&y.jsx(aR,{...e}),!o&&y.jsx(BJe,{...e}),y.jsx(Vy,{})]})}function VJe(e){const{enableElementDetails:r,enableReadOnly:n}=_r();return y.jsxs(Iy,{nodeProps:e,children:[y.jsx(Oy,{...e}),y.jsx(ire,{...e}),r&&y.jsx(hre,{...e}),!n&&y.jsx(OJe,{...e}),y.jsx(Vy,{})]})}function qJe(e){const{enableElementDetails:r,enableReadOnly:n}=_r();return y.jsxs(Iy,{nodeProps:e,children:[y.jsx(Oy,{...e}),y.jsx(ire,{...e}),r&&y.jsx(hre,{...e}),!n&&y.jsx(jJe,{...e}),y.jsx(Vy,{})]})}function UJe(e){return y.jsxs(Iy,{nodeProps:e,children:[y.jsx(Oy,{...e}),y.jsx(Vy,{})]})}const WJe={left:tt.Left,right:tt.Right,top:tt.Top,bottom:tt.Bottom},YJe=({data:e,port:r})=>y.jsxs(y.Fragment,{children:[y.jsx(zr,{"data-likec4-color":e.color,className:be({position:"absolute",backgroundColor:"var(--likec4-palette-fill)",rounded:"xs",width:{base:"5px",_whenHovered:"7px",_whenSelected:"7px"},transition:"fast",translateX:"-1/2",translateY:"-1/2",translate:"auto"}),style:{top:r.cy,left:r.cx,height:r.height}}),y.jsx(yo,{id:r.id,type:r.type,position:WJe[r.position],style:{top:r.cy-3,left:r.cx-3,width:6,height:6,right:"unset",bottom:"unset",visibility:"hidden",transform:r.position==="left"?"translate(-150%, 0)":"translate(100%, 0)"}})]}),GJe=e=>ua(e.modelFqn);function XJe(e){const{enableElementDetails:r}=_r(),n=e.data,{id:o,positionAbsoluteY:a,data:{viewHeight:i,hovered:s=!1,ports:l}}=e;return y.jsxs(y.Fragment,{children:[y.jsx(zr,{"data-likec4-color":"gray",className:be({position:"absolute",rounded:"xs",top:"1",pointerEvents:"none",transition:"fast",translateX:"-1/2",translate:"auto"}),style:{backgroundColor:"var(--likec4-palette-stroke)",opacity:s?.6:.4,left:"50%",width:s?3:2,height:i-a,zIndex:-1,pointerEvents:"none"}}),y.jsxs(Im,{nodeProps:e,children:[y.jsx(Om,{...e}),y.jsx(Ss,{...e}),GJe(n)&&y.jsxs(y.Fragment,{children:[y.jsx(are,{...e,data:n}),r&&y.jsx(aR,{id:o,data:n})]})]}),l.map(c=>y.jsx(YJe,{port:c,data:e.data},c.id))]})}function KJe(e){return y.jsx(zr,{"data-likec4-color":e.data.color,css:{width:"100%",height:"100%",border:"default",rounded:"sm",borderWidth:1,"--_color":{base:"var(--likec4-palette-stroke)",_dark:"[color-mix(in srgb, var(--likec4-palette-hiContrast) 40%, var(--likec4-palette-fill))]"},borderColor:"[var(--_color)/30]",backgroundColor:"var(--likec4-palette-fill)/15",pointerEvents:"none",paddingLeft:"2",paddingTop:"0.5",fontSize:"xs",fontWeight:"bold",letterSpacing:".75px",color:"[var(--_color)/75]"},children:"PARALLEL"})}const Gp={ElementNode:FJe,DeploymentNode:HJe,CompoundElementNode:VJe,CompoundDeploymentNode:qJe,ViewGroupNode:UJe,SequenceActorNode:XJe,SequenceParallelArea:KJe},fre={RelationshipEdge:ore,SequenceStepEdge:RJe};var mre=Symbol.for("immer-nothing"),gre=Symbol.for("immer-draftable"),Ha=Symbol.for("immer-state");function Ts(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var qy=Object.getPrototypeOf;function Ym(e){return!!e&&!!e[Ha]}function Xp(e){return e?bre(e)||Array.isArray(e)||!!e[gre]||!!e.constructor?.[gre]||Uy(e)||k4(e):!1}var ZJe=Object.prototype.constructor.toString(),yre=new WeakMap;function bre(e){if(!e||typeof e!="object")return!1;const r=Object.getPrototypeOf(e);if(r===null||r===Object.prototype)return!0;const n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;if(n===Object)return!0;if(typeof n!="function")return!1;let o=yre.get(n);return o===void 0&&(o=Function.toString.call(n),yre.set(n,o)),o===ZJe}function x4(e,r,n=!0){w4(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(o=>{r(o,e[o],e)}):e.forEach((o,a)=>r(a,o,e))}function w4(e){const r=e[Ha];return r?r.type_:Array.isArray(e)?1:Uy(e)?2:k4(e)?3:0}function iR(e,r){return w4(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function vre(e,r,n){const o=w4(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function QJe(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function Uy(e){return e instanceof Map}function k4(e){return e instanceof Set}function Kp(e){return e.copy_||e.base_}function sR(e,r){if(Uy(e))return new Map(e);if(k4(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=bre(e);if(r===!0||r==="class_only"&&!n){const o=Object.getOwnPropertyDescriptors(e);delete o[Ha];let a=Reflect.ownKeys(o);for(let i=0;i1&&Object.defineProperties(e,{set:_4,add:_4,clear:_4,delete:_4}),Object.freeze(e),r&&Object.values(e).forEach(n=>lR(n,!0))),e}function JJe(){Ts(2)}var _4={value:JJe};function E4(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var eet={};function Zp(e){const r=eet[e];return r||Ts(0,e),r}var Wy;function xre(){return Wy}function tet(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function wre(e,r){r&&(Zp("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function cR(e){uR(e),e.drafts_.forEach(ret),e.drafts_=null}function uR(e){e===Wy&&(Wy=e.parent_)}function kre(e){return Wy=tet(Wy,e)}function ret(e){const r=e[Ha];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function _re(e,r){r.unfinalizedDrafts_=r.drafts_.length;const n=r.drafts_[0];return e!==void 0&&e!==n?(n[Ha].modified_&&(cR(r),Ts(4)),Xp(e)&&(e=S4(r,e),r.parent_||C4(r,e)),r.patches_&&Zp("Patches").generateReplacementPatches_(n[Ha].base_,e,r.patches_,r.inversePatches_)):e=S4(r,n,[]),cR(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==mre?e:void 0}function S4(e,r,n){if(E4(r))return r;const o=e.immer_.shouldUseStrictIteration(),a=r[Ha];if(!a)return x4(r,(i,s)=>Ere(e,a,r,i,s,n),o),r;if(a.scope_!==e)return r;if(!a.modified_)return C4(e,a.base_,!0),a.base_;if(!a.finalized_){a.finalized_=!0,a.scope_.unfinalizedDrafts_--;const i=a.copy_;let s=i,l=!1;a.type_===3&&(s=new Set(i),i.clear(),l=!0),x4(s,(c,u)=>Ere(e,a,i,c,u,n,l),o),C4(e,i,!1),n&&e.patches_&&Zp("Patches").generatePatches_(a,n,e.patches_,e.inversePatches_)}return a.copy_}function Ere(e,r,n,o,a,i,s){if(a==null||typeof a!="object"&&!s)return;const l=E4(a);if(!(l&&!s)){if(Ym(a)){const c=i&&r&&r.type_!==3&&!iR(r.assigned_,o)?i.concat(o):void 0,u=S4(e,a,c);if(vre(n,o,u),Ym(u))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Xp(a)&&!l){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||r&&r.base_&&r.base_[o]===a&&l)return;S4(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&(Uy(n)?n.has(o):Object.prototype.propertyIsEnumerable.call(n,o))&&C4(e,a)}}}function C4(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&lR(r,n)}function net(e,r){const n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:xre(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=o,i=dR;n&&(a=[o],i=Yy);const{revoke:s,proxy:l}=Proxy.revocable(a,i);return o.draft_=l,o.revoke_=s,l}var dR={get(e,r){if(r===Ha)return e;const n=Kp(e);if(!iR(n,r))return oet(e,n,r);const o=n[r];return e.finalized_||!Xp(o)?o:o===pR(e.base_,r)?(fR(e),e.copy_[r]=mR(o,e)):o},has(e,r){return r in Kp(e)},ownKeys(e){return Reflect.ownKeys(Kp(e))},set(e,r,n){const o=Sre(Kp(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){const a=pR(Kp(e),r),i=a?.[Ha];if(i&&i.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(QJe(n,a)&&(n!==void 0||iR(e.base_,r)))return!0;fR(e),hR(e)}return e.copy_[r]===n&&(n!==void 0||r in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=n,e.assigned_[r]=!0),!0},deleteProperty(e,r){return pR(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,fR(e),hR(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){const n=Kp(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){Ts(11)},getPrototypeOf(e){return qy(e.base_)},setPrototypeOf(){Ts(12)}},Yy={};x4(dR,(e,r)=>{Yy[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}}),Yy.deleteProperty=function(e,r){return Yy.set.call(this,e,r,void 0)},Yy.set=function(e,r,n){return dR.set.call(this,e[0],r,n,e[0])};function pR(e,r){const n=e[Ha];return(n?Kp(n):e)[r]}function oet(e,r,n){const o=Sre(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function Sre(e,r){if(!(r in e))return;let n=qy(e);for(;n;){const o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=qy(n)}}function hR(e){e.modified_||(e.modified_=!0,e.parent_&&hR(e.parent_))}function fR(e){e.copy_||(e.copy_=sR(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var aet=class{constructor(r){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(n,o,a)=>{if(typeof n=="function"&&typeof o!="function"){const s=o;o=n;const l=this;return function(c=s,...u){return l.produce(c,d=>o.call(this,d,...u))}}typeof o!="function"&&Ts(6),a!==void 0&&typeof a!="function"&&Ts(7);let i;if(Xp(n)){const s=kre(this),l=mR(n,void 0);let c=!0;try{i=o(l),c=!1}finally{c?cR(s):uR(s)}return wre(s,a),_re(i,s)}else if(!n||typeof n!="object"){if(i=o(n),i===void 0&&(i=n),i===mre&&(i=void 0),this.autoFreeze_&&lR(i,!0),a){const s=[],l=[];Zp("Patches").generateReplacementPatches_(n,i,s,l),a(s,l)}return i}else Ts(1,n)},this.produceWithPatches=(n,o)=>{if(typeof n=="function")return(s,...l)=>this.produceWithPatches(s,c=>n(c,...l));let a,i;return[this.produce(n,o,(s,l)=>{a=s,i=l}),a,i]},typeof r?.autoFreeze=="boolean"&&this.setAutoFreeze(r.autoFreeze),typeof r?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(r.useStrictShallowCopy),typeof r?.useStrictIteration=="boolean"&&this.setUseStrictIteration(r.useStrictIteration)}createDraft(r){Xp(r)||Ts(8),Ym(r)&&(r=iet(r));const n=kre(this),o=mR(r,void 0);return o[Ha].isManual_=!0,uR(n),o}finishDraft(r,n){const o=r&&r[Ha];(!o||!o.isManual_)&&Ts(9);const{scope_:a}=o;return wre(a,n),_re(void 0,a)}setAutoFreeze(r){this.autoFreeze_=r}setUseStrictShallowCopy(r){this.useStrictShallowCopy_=r}setUseStrictIteration(r){this.useStrictIteration_=r}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(r,n){let o;for(o=n.length-1;o>=0;o--){const i=n[o];if(i.path.length===0&&i.op==="replace"){r=i.value;break}}o>-1&&(n=n.slice(o+1));const a=Zp("Patches").applyPatches_;return Ym(r)?a(r,n):this.produce(r,i=>a(i,n))}};function mR(e,r){const n=Uy(e)?Zp("MapSet").proxyMap_(e,r):k4(e)?Zp("MapSet").proxySet_(e,r):net(e,r);return(r?r.scope_:xre()).drafts_.push(n),n}function iet(e){return Ym(e)||Ts(10,e),Cre(e)}function Cre(e){if(!Xp(e)||E4(e))return e;const r=e[Ha];let n,o=!0;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=sR(e,r.scope_.immer_.useStrictShallowCopy_),o=r.scope_.immer_.shouldUseStrictIteration()}else n=sR(e,!0);return x4(n,(a,i)=>{vre(n,a,Cre(i))},o),r&&(r.finalized_=!1),n}var set=new aet,T4=set.produce;class Gm{static LeftPadding=42;static RightPadding=42;static TopPadding=60;static BottomPadding=42;id;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;initialX;initialY;get positionAbsolute(){return{x:this.minX,y:this.minY}}get initialPositionAbsolute(){return{x:this.initialX,y:this.initialY}}set positionAbsolute(r){const n=Math.round(r.x),o=Math.round(r.y);this.maxX+=n-this.minX,this.maxY+=o-this.minY,this.minX=n,this.minY=o}get dimensions(){return{width:this.maxX-this.minX,height:this.maxY-this.minY}}get diff(){return{x:this.positionAbsolute.x-this.initialX,y:this.positionAbsolute.y-this.initialY}}get isMoved(){return this.diff.x!==0||this.diff.y!==0}get position(){const r=this.positionAbsolute;if(!this.parent)return r;const n=this.parent.positionAbsolute;return{x:r.x-n.x,y:r.y-n.y}}constructor(r,n=null){this.id=r.id,this.positionAbsolute=n?{x:r.position.x+n.minX,y:r.position.y+n.minY}:r.position;const{width:o,height:a}=ao(r);this.maxX=this.minX+Math.ceil(o),this.maxY=this.minY+Math.ceil(a),this.initialX=this.positionAbsolute.x,this.initialY=this.positionAbsolute.y,n&&n.children.push(this)}}class A4 extends Gm{constructor(r,n=null){super(r,n),this.parent=n}children=[]}class cet extends Gm{constructor(r,n=null){super(r,n),this.parent=n}}function Tre(e,r){return n=>{const o=bt(n.get(e.id),`Edge ${e.id} not found`),{x:a,y:i}=r.diff;return a===0&&i===0?{id:e.id,type:"replace",item:T4(o,s=>{s.data.points=e.data.points,s.data.controlPoints=e.data.controlPoints,s.data.labelXY=e.data.labelXY,s.data.labelBBox=e.data.labelBBox})}:{id:e.id,type:"replace",item:T4(o,s=>{s.data.points=Sn(e.data.points,l=>[l[0]+a,l[1]+i]),e.data.controlPoints&&(s.data.controlPoints=(e.data.controlPoints??[]).map(l=>({x:l.x+a,y:l.y+i}))),e.data.labelXY&&(s.data.labelXY={x:e.data.labelXY.x+a,y:e.data.labelXY.y+i}),e.data.labelBBox&&(s.data.labelBBox={x:e.data.labelBBox.x+a,y:e.data.labelBBox.y+i,width:e.data.labelBBox.width,height:e.data.labelBBox.height})})}}}function Are(e,r){const{parentLookup:n,nodeLookup:o,edges:a,edgeLookup:i}=e.getState(),s=new Map,l=new Xn(T=>{let A=o.get(T)?.parentId;return A?[A,...l.get(A)]:[]}),c=new Xn(T=>{const A=n.get(T);if(!A||A.size===0)return new Set;const R=new Set;for(const D of A.values()){R.add(D.id);for(const N of c.get(D.id))R.add(N)}return R}),u=new Set(r.flatMap(T=>l.get(T))),d=[...o.values()].flatMap(T=>T.parentId?[]:{xynode:T,parent:null});for(;d.length>0;){const{xynode:T,parent:A}=d.shift();if(!r.includes(T.id)&&u.has(T.id)){const R=new A4(T,A);s.set(T.id,R),n.get(T.id)?.forEach(D=>{d.push({xynode:D,parent:R})})}else s.set(T.id,new cet(T,A))}const h=[...s.values()],f=new Map;for(const T of h){if(T instanceof A4)continue;const A=c.get(T.id);A.size!==0&&En(a,hp(R=>!f.has(R)&&A.has(R.source)&&A.has(R.target)),mNe(R=>{f.set(R,Tre(R,T))}))}const g=T=>s.get(T)??l.get(T).map(A=>s.get(A)).find(A=>!!A)??null,b=new Set(r.flatMap(T=>[T,...c.get(T)]));for(const T of a){if(f.has(T))continue;const A=b.has(T.source),R=b.has(T.target);if(A&&R){let D=s.get(T.source)??s.get(T.target)??l.get(T.source).map(N=>s.get(N)).find(N=>!!N)??l.get(T.target).map(N=>s.get(N)).find(N=>!!N);D&&f.set(T,Tre(T,D));continue}if(A!==R){const D=g(A?T.source:T.target);if(!D)continue;const N=T.data.controlPoints??jw(T.data.points),M=bt(o.get(T.source),`Source node ${T.source} not found`),O=bt(o.get(T.target),`Target node ${T.target} not found`),F=jo(vJ(M,O)),L=jo(vJ(O,M)),[U,P]=A?[F,L]:[L,F],V=U.subtract(P),I=V.length();f.set(T,H=>{const q=bt(H.get(T.id),`Edge ${T.id} not found`),{x:Z,y:W}=D.diff;if(Z===0&&W===0)return{id:T.id,type:"replace",item:T4(q,j=>{j.data.points=T.data.points,j.data.controlPoints=T.data.controlPoints,j.data.labelXY=T.data.labelXY,j.data.labelBBox=T.data.labelBBox})};const G=jo(Z,W),K=j=>{const Y=jo(j),Q=Y.subtract(P).dot(V),J=Math.min(Q/I**2,1),ie=Y.add(G.multiply(J));return{x:Math.round(ie.x),y:Math.round(ie.y)}};return{id:T.id,type:"replace",item:T4(q,j=>{if(j.data.controlPoints=N.map(K),T.data.labelBBox){const{x:Y,y:Q}=K(T.data.labelBBox);j.data.labelBBox={x:Y,y:Q,width:T.data.labelBBox.width,height:T.data.labelBBox.height}}T.data.labelXY&&(j.data.labelXY=K(T.data.labelXY))})}});continue}}function x(T){for(const A of T){if(!(A instanceof A4))continue;x(A.children);const R={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};for(const D of A.children)R.minX=Math.min(R.minX,D.minX),R.minY=Math.min(R.minY,D.minY),R.maxX=Math.max(R.maxX,D.maxX),R.maxY=Math.max(R.maxY,D.maxY);A.minX=R.minX-Gm.LeftPadding,A.minY=R.minY-Gm.TopPadding,A.maxX=R.maxX+Gm.RightPadding,A.maxY=R.maxY+Gm.BottomPadding}}const w=[...f.values()];function k(){x(h);const T=h.reduce((R,D)=>(R.push({id:D.id,type:"position",dragging:!1,position:D.position,positionAbsolute:D.positionAbsolute}),D instanceof A4&&R.push({id:D.id,type:"dimensions",setAttributes:!0,dimensions:D.dimensions}),R),[]);e.getState().triggerNodeChanges(T);const A=w.map(R=>R(i));A.length>0&&e.getState().triggerEdgeChanges(A)}let C=null;function _(){h.length!==0&&(C??=requestAnimationFrame(()=>{C=null;for(const T of r){const A=bt(s.get(T)),R=bt(o.get(T));A.positionAbsolute=R.internals.positionAbsolute}k()}))}return{rects:s,onMove:_,updateXYFlow:k}}function uet(){const e=AT(),r=Qt(),n=E.useRef(void 0);return E.useMemo(()=>({onNodeDragStart:(o,a)=>{r.startEditing("node");const{nodeLookup:i}=e.getState(),s=En(Array.from(i.values()),hp(l=>l.draggable!==!1&&(l.dragging===!0||l.id===a.id||l.selected===!0)));bo(s,1)&&(n.current=Are(e,Sn(s,l=>l.id)))},onNodeDrag:o=>{n.current?.onMove()},onNodeDragStop:o=>{const a=n.current?VB(n.current.rects.values(),i=>i.isMoved):!1;r.stopEditing(a),n.current=void 0}}),[e,r])}const det={relationship:fre.RelationshipEdge,"seq-step":fre.SequenceStepEdge},Yu={element:_c(Gp.ElementNode),deployment:_c(Gp.DeploymentNode),"compound-element":_c(Gp.CompoundElementNode),"compound-deployment":_c(Gp.CompoundDeploymentNode),"view-group":_c(Gp.ViewGroupNode),"seq-actor":_c(Gp.SequenceActorNode),"seq-parallel":_c(Gp.SequenceParallelArea)};function pet(e){return!e||fp(e)?Yu:{element:e.element??Yu.element,deployment:e.deployment??Yu.deployment,"compound-element":e.compoundElement??Yu["compound-element"],"compound-deployment":e.compoundDeployment??Yu["compound-deployment"],"view-group":e.viewGroup??Yu["view-group"],"seq-actor":e.seqActor??Yu["seq-actor"],"seq-parallel":e.seqParallel??Yu["seq-parallel"]}}const het=({context:e,children:r})=>{const n=e.toggledFeatures,o=e.features.enableReadOnly||n.enableReadOnly===!0,a=o||r.syncLayout?.getSnapshot().context.editing!=="edge";return{enableReadOnly:o,initialized:e.initialized.xydata&&e.initialized.xyflow,nodes:e.xynodes,edges:e.xyedges,pannable:e.pannable,zoomable:e.zoomable,nodesDraggable:!o&&e.nodesDraggable,nodesSelectable:e.nodesSelectable&&a,fitViewPadding:e.fitViewPadding,enableFitView:e.toggledFeatures.enableFitView??e.features.enableFitView,...!e.features.enableFitView&&{viewport:{x:-Math.min(e.view.bounds.x,0),y:-Math.min(e.view.bounds.y,0),zoom:1}}}},fet=(e,r)=>e.enableReadOnly===r.enableReadOnly&&e.initialized===r.initialized&&e.pannable===r.pannable&&e.zoomable===r.zoomable&&e.nodesDraggable===r.nodesDraggable&&e.nodesSelectable===r.nodesSelectable&&e.enableFitView===r.enableFitView&&an(e.fitViewPadding,r.fitViewPadding)&&an(e.nodes,r.nodes)&&an(e.edges,r.edges)&&an(e.viewport??null,r.viewport??null);function met({background:e="dots",reactFlowProps:r={},children:n,renderNodes:o}){const a=Qt();let{enableReadOnly:i,initialized:s,nodes:l,edges:c,enableFitView:u,nodesDraggable:d,nodesSelectable:h,...f}=ZS(het,fet);const{onNodeContextMenu:g,onCanvasContextMenu:b,onEdgeContextMenu:x,onNodeClick:w,onEdgeClick:k,onCanvasClick:C,onCanvasDblClick:_}=Fm(),T=fje(),A=uet(),R=gje(),D=NU(()=>{R.set(!0)},T?120:400),N=Yf(()=>{D.clear(),R.set(!1)},T?350:200),M=kt(U=>{U&&(R.get()||D.start(),N())}),O=kt((U,P)=>{D.clear(),a.send({type:"xyflow.viewportMoved",viewport:P,manually:!!U})}),F=kt(()=>{a.send({type:"xyflow.resized"})}),L=jF(()=>pet(o),[o],TJ);return qp(()=>{console.warn("renderNodes changed - this might degrade performance")},[L]),y.jsx(IT,{nodes:l,edges:c,className:et(s?"initialized":"not-initialized"),nodeTypes:L,edgeTypes:det,onNodesChange:kt(U=>{a.send({type:"xyflow.applyNodeChanges",changes:U})}),onEdgesChange:kt(U=>{a.send({type:"xyflow.applyEdgeChanges",changes:U})}),background:s?e:"transparent",fitView:!1,onNodeClick:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.nodeClick",node:P}),w?.(a.findDiagramNode(P.id),U)}),onEdgeClick:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.edgeClick",edge:P}),k?.(a.findDiagramEdge(P.id),U)}),onEdgeDoubleClick:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.edgeDoubleClick",edge:P})}),onPaneClick:kt(U=>{U.stopPropagation(),a.send({type:"xyflow.paneClick"}),C?.(U)}),onDoubleClick:kt(U=>{U.stopPropagation(),U.preventDefault(),a.send({type:"xyflow.paneDblClick"}),_?.(U)}),onNodeMouseEnter:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.nodeMouseEnter",node:P})}),onNodeMouseLeave:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.nodeMouseLeave",node:P})}),onEdgeMouseEnter:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.edgeMouseEnter",edge:P,event:U})}),onEdgeMouseLeave:kt((U,P)=>{U.stopPropagation(),a.send({type:"xyflow.edgeMouseLeave",edge:P,event:U})}),onMove:M,onMoveEnd:O,onInit:kt(U=>{a.send({type:"xyflow.init",instance:U})}),onNodeContextMenu:kt((U,P)=>{const V=bt(a.findDiagramNode(P.id),`diagramNode ${P.id} not found`);g?.(V,U)}),onEdgeContextMenu:kt((U,P)=>{const V=bt(a.findDiagramEdge(P.id),`diagramEdge ${P.id} not found`);x?.(V,U)}),...b&&{onPaneContextMenu:b},...u&&{onViewportResize:F},nodesDraggable:d,nodesSelectable:h,elevateEdgesOnSelect:!i,...d&&A,...f,...r,children:n})}function get(e){const{view:r}=e,n=[],o=[],a=new Map,i=J8.from(r.nodes.reduce((d,h)=>(a.set(h.id,h),h.parent||d.push({node:h,parent:null}),d),[]));let s=d=>!0;if(e.where)try{const d=Xd(e.where);s=h=>d({...Gq(h,["tags","kind"]),..."source"in h?{source:c(h.source)}:h,..."target"in h?{target:c(h.target)}:h})}catch(d){console.error("Error in where filter:",d)}const l="",c=d=>bt(a.get(d),`Node not found: ${d}`);let u;for(;u=i.dequeue();){const{node:d,parent:h}=u,f=bo(d.children,1)||d.kind==V1;if(f)for(const R of d.children)i.enqueue({node:c(R),parent:d});const g={x:d.x,y:d.y};h&&(g.x-=h.x,g.y-=h.y);const b=l+d.id,x=d.drifts??null,w={id:b,deletable:!1,position:g,zIndex:f?_l.Compound:_l.Element,style:{width:d.width,height:d.height},initialWidth:d.width,initialHeight:d.height,hidden:d.kind!==V1&&!s(d),...h&&{parentId:l+h.id}},k={viewId:r.id,id:d.id,title:d.title,color:d.color,shape:d.shape,style:d.style,depth:d.depth??0,icon:d.icon??"none",tags:d.tags??null,x:d.x,y:d.y},C={viewId:r.id,id:d.id,title:d.title,technology:d.technology??null,description:or.from(d.description),height:d.height,width:d.width,level:d.level,color:d.color,shape:d.shape,style:d.style,icon:d.icon??null,tags:d.tags,x:d.x,y:d.y,isMultiple:d.style?.multiple??!1};if(d.kind===V1){n.push({...w,type:"view-group",data:{isViewGroup:!0,...k},dragHandle:".likec4-compound-title-container"});continue}const _=d.modelRef??null,T=d.deploymentRef??null;if(!_&&!T)throw console.error("Invalid node",d),new Error("Element should have either modelRef or deploymentRef");const A={navigateTo:d.navigateTo??null};switch(!0){case(f&&!!T):{n.push({...w,type:"compound-deployment",data:{...k,...A,deploymentFqn:T,modelFqn:_,drifts:x}});break}case f:{at(!!_,"ModelRef expected"),n.push({...w,type:"compound-element",data:{...k,...A,modelFqn:_,drifts:x}});break}case!!T:{n.push({...w,type:"deployment",data:{...C,...A,deploymentFqn:T,modelFqn:_,drifts:x}});break}default:at(!!_,"ModelRef expected"),n.push({...w,type:"element",data:{...C,...A,modelFqn:_,drifts:x}})}}for(const d of r.edges){const h=d.source,f=d.target,g=l+d.id;if(!bo(d.points,2)){console.error("edge should have at least 2 points",d);continue}o.push({id:g,type:"relationship",source:l+h,target:l+f,zIndex:_l.Edge,hidden:!s(d),deletable:!1,data:{id:d.id,label:d.label,technology:d.technology,notes:or.from(d.notes),navigateTo:d.navigateTo,controlPoints:d.controlPoints??null,labelBBox:d.labelBBox??null,labelXY:d.labelBBox?{x:d.labelBBox.x,y:d.labelBBox.y}:null,points:d.points,color:d.color??"gray",line:d.line??"dashed",dir:d.dir??"forward",head:d.head??"normal",tail:d.tail??"none",astPath:d.astPath,drifts:d.drifts??null},interactionWidth:20})}return{bounds:r.bounds,xynodes:n,xyedges:o}}const Rre={parallel:1,actor:10},R4={default:"gray",active:"amber"};function yet(e){const{actors:r,steps:n,compounds:o,parallelAreas:a,bounds:i}=e.sequenceLayout,s=[],l=[],c=u=>bt(e.nodes.find(d=>d.id===u));for(const u of o)s.push(bet(u,c(u.origin),e));for(const u of a)s.push(vet(u,e));for(const u of r)s.push(xet(u,c(u.id),i,e));for(const u of n){const d=e.edges.find(h=>h.id===u.id);if(!d)throw new Error(`Edge ${u.id} not found`);l.push(wet(u,d))}return{bounds:i,xynodes:s,xyedges:l}}function bet({id:e,x:r,y:n,width:o,height:a,depth:i},s,l){return{id:e,type:"view-group",data:{id:s.id,title:s.title,color:s.color??"gray",shape:s.shape,style:s.style,tags:s.tags,x:r,y:n,viewId:l.id,depth:i,isViewGroup:!0},position:{x:r,y:n},draggable:!1,selectable:!1,focusable:!1,style:{pointerEvents:"none"},width:o,initialWidth:o,height:a,initialHeight:a}}function vet({parallelPrefix:e,x:r,y:n,width:o,height:a},i){return{id:`seq-parallel-${e}`,type:"seq-parallel",data:{id:`seq-parallel-${e}`,title:"PARALLEL",technology:null,color:R4.default,shape:"rectangle",style:{},tags:[],x:r,y:n,level:0,icon:null,width:o,height:a,description:or.EMPTY,viewId:i.id,parallelPrefix:e},zIndex:Rre.parallel,position:{x:r,y:n},draggable:!1,deletable:!1,selectable:!1,focusable:!1,style:{pointerEvents:"none"},width:o,initialWidth:o,height:a,initialHeight:a}}function xet({id:e,x:r,y:n,width:o,height:a,ports:i},s,l,c){return{id:e,type:"seq-actor",data:{id:s.id,x:r,y:n,level:0,icon:s.icon??null,isMultiple:s.style.multiple??!1,title:s.title,width:o,height:a,color:s.color,navigateTo:s.navigateTo??null,shape:s.shape,style:s.style,tags:s.tags,modelFqn:s.modelRef??null,technology:s.technology??null,description:or.from(s.description),viewHeight:l.height,viewId:c.id,ports:i},deletable:!1,selectable:!0,zIndex:Rre.actor,position:{x:r,y:n},width:o,initialWidth:o,height:a,initialHeight:a}}function wet({id:e,labelBBox:r,sourceHandle:n,targetHandle:o},a){return{id:e,type:"seq-step",data:{id:e,label:a.label,technology:a.technology,notes:or.from(a.notes),navigateTo:a.navigateTo,controlPoints:null,labelBBox:{x:0,y:0,width:r?.width??a.labelBBox?.width??32,height:r?.height??a.labelBBox?.height??32},labelXY:null,points:a.points,color:a.color,line:a.line,dir:"forward",head:a.head??"normal",tail:a.tail??"none",astPath:a.astPath},selectable:!0,focusable:!1,zIndex:20,interactionWidth:40,source:a.source,sourceHandle:n,target:a.target,targetHandle:o}}function ket({dynamicViewVariant:e,...r}){const n=r.view,o=n._type==="dynamic",{bounds:a,xynodes:i,xyedges:s}=o&&e==="sequence"?yet(n):get(r);return o&&n.variant!==e?{view:{...n,bounds:a,variant:e},xynodes:i,xyedges:s}:{view:a===n.bounds?n:{...n,bounds:a},xynodes:i,xyedges:s}}function Nre(e){return{actor:e,send:r=>e.send(r),navigateTo:(r,n)=>{e.send({type:"navigate.to",viewId:r,...n&&{fromNode:n}})},navigate:r=>{e.send({type:`navigate.${r}`})},fitDiagram:(r=350)=>{e.send({type:"fitDiagram",duration:r})},openRelationshipsBrowser:r=>{e.send({type:"open.relationshipsBrowser",fqn:r})},openSource:r=>{e.send({type:"open.source",...r})},openElementDetails:(r,n)=>{e.send({type:"open.elementDetails",fqn:r,fromNode:n})},openRelationshipDetails:(...r)=>{r.length===1?e.send({type:"open.relationshipDetails",params:{edgeId:r[0]}}):e.send({type:"open.relationshipDetails",params:{source:r[0],target:r[1]}})},updateNodeData:(r,n)=>{e.send({type:"update.nodeData",nodeId:r,data:n})},updateEdgeData:(r,n)=>{e.send({type:"update.edgeData",edgeId:r,data:n})},startEditing:r=>{const n=jn(e.system).syncLayoutActorRef;at(n,"No sync layout actor found in diagram actor system"),n.send({type:"editing.start",subject:r})},stopEditing:(r=!1)=>{const n=jn(e.system).syncLayoutActorRef;at(n,"No sync layout actor found in diagram actor system"),n.send({type:"editing.stop",wasChanged:r})},undoEditing:()=>{const r=jn(e.system).syncLayoutActorRef;at(r,"No sync layout actor found in diagram actor system");const n=r.getSnapshot().context.history.length>0;return n&&r.send({type:"undo"}),n},align:r=>{e.send({type:"layout.align",mode:r})},resetEdgeControlPoints:()=>{e.send({type:"layout.resetEdgeControlPoints"})},focusNode:r=>{e.send({type:"focus.node",nodeId:r})},get currentView(){return e.getSnapshot().context.view},getSnapshot:()=>e.getSnapshot(),getContext:()=>e.getSnapshot().context,findDiagramNode:r=>Hm(e.getSnapshot().context,r),findEdge:r=>e.getSnapshot().context.xyedges.find(n=>n.data.id===r)??null,findDiagramEdge:r=>UA(e.getSnapshot().context,r),startWalkthrough:()=>{e.send({type:"walkthrough.start"})},walkthroughStep:(r="next")=>{e.send({type:"walkthrough.step",direction:r})},stopWalkthrough:()=>{e.send({type:"walkthrough.end"})},toggleFeature:(r,n)=>{e.send({type:"toggle.feature",feature:r,...n!==void 0&&{forceValue:n}})},highlightNotation:(r,n)=>{e.send({type:"notations.highlight",notation:r,...n&&{kind:n}})},unhighlightNotation:()=>{e.send({type:"notations.unhighlight"})},openSearch:r=>{e.send({type:"open.search",...r&&{search:r}})},triggerChange:r=>{e.send({type:"emit.onChange",change:r})},switchDynamicViewVariant:r=>{e.send({type:"switch.dynamicViewVariant",variant:r})}}}function _et({context:e,event:r}){Tt(r,"update.view");const n=r.view,o=e.view.id===n.id,a=e.xynodes,i=r.xynodes.map(l=>{const c=a.find(u=>u.id===l.id);if(c){if(c===l)return c;const{width:u,height:d}=ao(c);return lt(c.type,l.type)&<(u,l.initialWidth)&<(d,l.initialHeight)&<(c.hidden??!1,l.hidden??!1)&<(c.position,l.position)&<(c.data,l.data)&<(c.parentId??null,l.parentId??null)?c:{...Eu(c,["measured","parentId","hidden"]),...l,width:l.initialWidth,height:l.initialHeight}}return l});let s=r.xyedges;if(o&&(!n.drifts||n.drifts.length===0)){const l=e.xyedges;s=r.xyedges.map(c=>{const u=l.find(d=>d.id===c.id);return u===c?u:u&&u.type===c.type?lt(u.hidden??!1,c.hidden??!1)&<(u.data,c.data)&<(u.source,c.source)&<(u.target,c.target)&<(u.sourceHandle,c.sourceHandle)&<(u.targetHandle,c.targetHandle)?u:{...Eu(u,["hidden","sourceHandle","targetHandle"]),...c,data:{...u.data,...c.data}}:c})}return{xynodes:i,xyedges:s,view:n}}function Eet(e){const{xynodes:r,xyedges:n,focusedNode:o}=e.context;if(!o)return{};const a=new Set([o]),i=n.map(s=>s.source===o||s.target===o?(a.add(s.source),a.add(s.target),cr.setData(s,{dimmed:!1,active:!0})):cr.setData(s,{dimmed:!0,active:!1}));return{xynodes:r.map(s=>cr.setDimmed(s,!a.has(s.id))),xyedges:i}}function Dre({context:e,event:r}){Tt(r,"update.view");let{navigationHistory:{currentIndex:n,history:o},lastOnNavigate:a,viewport:i}=e;const s=o[n];if(!s)return{navigationHistory:{currentIndex:0,history:[{viewId:r.view.id,fromNode:null,viewport:{...i}}]}};if(s.viewId!==r.view.id){if(!a){const l=n>0?bt(o[n-1]):null;if(l&&l.viewId===r.view.id)return{navigationHistory:{currentIndex:n-1,history:o},lastOnNavigate:{fromView:s.viewId,toView:l.viewId,fromNode:s.fromNode}};const c=n0,"Cannot navigate back");const o=n[r],a=n[r-1];return{navigationHistory:{currentIndex:r-1,history:n},lastOnNavigate:{fromView:o.viewId,toView:a.viewId,fromNode:o.fromNode}}}function Tet({context:e}){const{navigationHistory:{currentIndex:r,history:n}}=e;at(r{if(n.id!==r.nodeId)return n;const o=Uq(n.data,r.data);return lt(o,n.data)?n:{...n,data:o}})}}function Ret({context:e,event:r}){return Tt(r,"update.edgeData"),{xyedges:e.xyedges.map(n=>{if(n.id!==r.edgeId)return n;const o=Uq(n.data,r.data);return lt(o,n.data)?n:{...n,data:o}})}}function $re(e,r,n){const o=ao(e),a=o.width/2/n.x,i=o.height/2/n.y,s=Math.min(Math.abs(a),Math.abs(i));return jo(n).multiply(s).add(r)}function Mre(e,r){const n=bt(e.get(r.source),`Source node ${r.source} not found`),o=bt(e.get(r.target),`Target node ${r.target} not found`),a=jo(Ty(n)),i=jo(Ty(o));if(n===o){const u=jo(0,n.height||0).multiply(-.5).add(a);return[u.add(jo(-32,-80)),u.add(jo(32,-80))]}const s=i.subtract(a),l=$re(n,a,s),c=$re(o,i,s.multiply(-1));return[l.add(c.subtract(l).multiply(.4))]}function Net({context:e}){const{stepId:r,parallelPrefix:n}=bt(e.activeWalkthrough,"activeWalkthrough is null"),o=bt(e.xyedges.find(a=>a.id===r));return{xyedges:e.xyedges.map(a=>{const i=r===a.id||!!n&&a.id.startsWith(n);return cr.setData(a,{active:i,dimmed:r!==a.id})}),xynodes:e.xynodes.map(a=>{const i=o.source!==a.id&&o.target!==a.id;return a.type==="seq-parallel"?cr.setData(a,{color:n===a.data.parallelPrefix?R4.active:R4.default,dimmed:i}):cr.setDimmed(a,i)})}}class Pre{}class Xm extends Pre{constructor(r,n,o){super(),this.getEdgePosition=r,this.computePosition=n,this.propertyToEdit=o}alignTo;computeLayout(r){this.alignTo=this.getEdgePosition(r)}applyPosition(r){return{[this.propertyToEdit]:this.computePosition(this.alignTo,r)}}}class Det extends Pre{layout=new Map;axisPreset;get primaryAxisCoord(){return this.axisPreset.primaryAxisCoord}get secondaryAxisCoord(){return this.axisPreset.secondaryAxisCoord}get primaryAxisDimension(){return this.axisPreset.primaryAxisDimension}get secondaryAxisDimension(){return this.axisPreset.secondaryAxisDimension}constructor(r){super(),this.axisPreset=r==="Column"?{primaryAxisDimension:"width",secondaryAxisDimension:"height",primaryAxisCoord:"x",secondaryAxisCoord:"y"}:{primaryAxisDimension:"height",secondaryAxisDimension:"width",primaryAxisCoord:"y",secondaryAxisCoord:"x"}}applyPosition(r){return this.layout?.get(r.id)??{}}computeLayout(r){const n=En(r,W3(i=>i[this.primaryAxisCoord])),o=this.getLayoutRect(n),a=this.getLayers(n);this.layout=this.buildLayout(a,o,n)}getLayoutRect(r){const n=Math.min(...r.map(s=>s.x)),o=Math.min(...r.map(s=>s.y)),a=Math.max(...r.map(s=>s.x+s.width)),i=Math.max(...r.map(s=>s.y+s.height));return{x:n,y:o,width:a-n,height:i-o}}getLayers(r){const n=[];let o=0,a=null;for(let i of r)if(a&&i[this.primaryAxisCoord]i.nodes.sort((s,l)=>s[this.secondaryAxisCoord]-l[this.secondaryAxisCoord])),n}buildLayout(r,n,o){const a=new Map(o.map(b=>[b.id,b])),i=[],s=r.reduce((b,x)=>b+x.primaryAxisSize,0),l=r.length>1?(n[this.primaryAxisDimension]-s)/(r.length-1):0,c=r.reduce((b,x,w)=>r[b].occupiedSpaceb+x.primaryAxisSize+l,n[this.primaryAxisCoord]),h=this.buildLayerLayout(u,n,d,a,null);u.layout=h,i.push(...h.nodePositions);let f=d+u.primaryAxisSize+l,g=u;for(let b=c+1;b=0;b--){const x=r[b];f-=x.primaryAxisSize+l,x.layout=this.buildLayerLayout(x,n,f,a,g),i.push(...x.layout.nodePositions),g=x.layout.refLayer??x}return new Map(i)}buildLayerLayout(r,n,o,a,i){let s=this.scoreLayout(this.spaceAround(r,n,o),a);if(r.nodes.length!=1){const l=this.scoreLayout(this.spaceBetween(r,n,o),a);s=l[0]=r.nodes.length){const l=this.scoreLayout(this.placeInGaps(r,o,i),a);s=l[0]=r.nodes.length){const l=this.scoreLayout(this.placeInCells(r,o,i),a);s=l[0]c[this.secondaryAxisCoord]))s.set(l.id,{[this.secondaryAxisCoord]:i,[this.primaryAxisCoord]:o}),i+=l[this.secondaryAxisDimension]+a;return{nodePositions:s,refLayer:null}}placeInGaps(r,n,o){const a=new Map,i=r.nodes,s=this.getGapsPositions(o);let l=0;for(let c=0,u=i[c];c{const i=n.get(o);return at(i,`Could not find original rect for node ${o}`),[Gq(i,["x","y"]),a]}),Sn(([o,a])=>Math.abs(o[this.secondaryAxisCoord]-a[this.secondaryAxisCoord])),U3((o,a)=>o+a,0)),r]}getGapsPositions(r){const n=[],{layout:o,nodes:a}=r;at(o,"Layout of the layer must be computed before calling getGapsPositions");for(let i=1;iMath.min(...r.map(n=>n.x)),(r,n)=>Math.floor(r),"x");case"Top":return new Xm(r=>Math.min(...r.map(n=>n.y)),(r,n)=>Math.floor(r),"y");case"Right":return new Xm(r=>Math.max(...r.map(n=>n.x+n.width)),(r,n)=>Math.floor(r-n.width),"x");case"Bottom":return new Xm(r=>Math.max(...r.map(n=>n.y+n.height)),(r,n)=>Math.floor(r-n.height),"y");case"Center":return new Xm(r=>Math.min(...r.map(n=>n.x+n.width/2)),(r,n)=>Math.floor(r-n.width/2),"x");case"Middle":return new Xm(r=>Math.min(...r.map(n=>n.y+n.height/2)),(r,n)=>Math.floor(r-n.height/2),"y")}}function zre(e){const{width:r,height:n}=ao(e);return{...e.internals.positionAbsolute,id:e.id,width:r,height:n}}function Met(e){switch(e){case"Left":case"Right":case"Top":case"Bottom":case"Center":case"Middle":return $et(e);case"Column":case"Row":return new Det(e);default:Zi(e)}}function Ire(e,r){if(e._type==="dynamic")try{if(r??=e.variant,r==="sequence")return e.sequenceLayout.bounds}catch{}return e.bounds}function Pet({points:e,controlPoints:r,labelBBox:n}){let o=1/0,a=1/0,i=-1/0,s=-1/0;for(const l of e)o=Math.min(o,l[0]),a=Math.min(a,l[1]),i=Math.max(i,l[0]),s=Math.max(s,l[1]);if(r)for(const l of r)o=Math.min(o,l.x),a=Math.min(a,l.y),i=Math.max(i,l.x),s=Math.max(s,l.y);return n&&(o=Math.min(o,n.x),a=Math.min(a,n.y),i=Math.max(i,n.x+n.width),s=Math.max(s,n.y+n.height)),{x:o,y:a,width:i-o,height:s-a}}function zet({nodes:e,edges:r}){return il.expand(il.merge(...e,...r.map(Pet)),10)}function gR(e){const{view:{drifts:r,_layout:n,...o},xynodes:a,xyedges:i,xystore:s}=e,{nodeLookup:l}=s.getState(),c=new Set,u=Fq(a,g=>g.data.id),d=Fq(i,g=>g.data.id),h=Sn(o.nodes,g=>{const b=u[g.id];if(!b)return g;const x=l.get(b.id),w=ao(x);return!wJ(x.internals.positionAbsolute,g)||g.width!==w.width||g.height!==w.height||g.shape!==b.data.shape||g.color!==b.data.color||g.style.border!==b.data.style.border||g.style.opacity!==b.data.style.opacity?(c.add(b.id),{...g,shape:b.data.shape,color:b.data.color,style:{...g.style,...b.data.style},x:Math.floor(x.internals.positionAbsolute.x),y:Math.floor(x.internals.positionAbsolute.y),width:Math.ceil(w.width),height:Math.ceil(w.height)}):g}),f=Sn(o.edges,g=>{const b=d[g.id];if(!b)return g;const x=b.data;let w=x.controlPoints??[];const k=c.has(b.source)||c.has(b.target);w.length===0&&k&&(w=jw(x.points));const C={...Eu(g,["controlPoints"]),points:x.points};return x.labelXY&&x.labelBBox&&(C.labelBBox={...x.labelBBox,...x.labelXY}),x.labelBBox&&(C.labelBBox??=x.labelBBox),bo(w,1)&&(C.controlPoints=w),C});return{op:"save-view-snapshot",layout:{...o,bounds:zet({nodes:h,edges:f}),nodes:h,edges:f}}}function Ore(e,r){return r.map(n=>{const o=e.find(a=>a.id===n.id);if(o&&o.type===n.type&&o.source===n.source&&o.target===n.target){const a=lt(o.data,n.data);return a&<(o.hidden??!1,n.hidden??!1)&<(o.selected??!1,n.selected??!1)&<(o.animated??!1,n.animated??!1)&<(o.sourceHandle??null,n.sourceHandle??null)&<(o.targetHandle??null,n.targetHandle??null)&<(o.zIndex??0,n.zIndex??0)&<(o.label??null,n.label??null)?o:{...Eu(o,["hidden","zIndex"]),...n,data:a?o.data:n.data}}return n})}function jre(e,r){return F3(r)?Ore(e,r):(r=e,n=>Ore(n,r))}function Lre(e,r){return r.map(n=>{const o=e.find(a=>a.id===n.id);if(o&<(o.type,n.type)){const a=lt(o.data,n.data),{width:i,height:s}=ao(o);return a&<(i,n.initialWidth)&<(s,n.initialHeight)&<(o.parentId??null,n.parentId??null)&<(o.hidden??!1,n.hidden??!1)&<(o.zIndex??0,n.zIndex??0)&<(o.position,n.position)?o:{...Eu(o,["measured","parentId","hidden","zIndex"]),...n,width:n.initialWidth,height:n.initialHeight,data:a?o.data:n.data}}return n})}function yR(e,r){return F3(r)?Lre(e,r):(r=e,n=>Lre(n,r))}const bR={top:"40px",bottom:"22px",left:"22px",right:"22px"};function Bre(e){const r=[],n=[],o=new Map,a=J8.from(e.nodes.reduce((l,c)=>(o.set(c.id,c),c.parent||l.push({node:c,parent:null}),l),[])),i=l=>bt(o.get(l),`Node not found: ${l}`);let s;for(;s=a.dequeue();){const{node:l,parent:c}=s,u=bo(l.children,1)||l.kind==V1;if(u)for(const x of l.children)a.enqueue({node:i(x),parent:l});const d={x:l.x,y:l.y};c&&(d.x-=c.x,d.y-=c.y);const h=l.id,f={id:h,draggable:!1,selectable:!0,focusable:!0,position:d,zIndex:u?_l.Compound:_l.Element,style:{width:l.width,height:l.height},initialWidth:l.width,initialHeight:l.height,...c&&{parentId:c.id}},g=l.modelRef??null,b={navigateTo:l.navigateTo??null};switch(!0){case l.kind===Xw.Empty:{r.push({...f,type:"empty",data:{column:l.column}});break}case(u&&!!g):{r.push({...f,type:"compound",data:{id:h,column:l.column,title:l.title,color:l.color,shape:l.shape,style:l.style,depth:l.depth??0,icon:l.icon??"none",ports:l.ports,existsInCurrentView:l.existsInCurrentView,fqn:g,...b}});break}default:at(g,"Element should have either modelRef or deploymentRef"),r.push({...f,type:"element",data:{id:h,column:l.column,fqn:g,title:l.title,technology:l.technology,description:l.description,height:l.height,width:l.width,color:l.color,shape:l.shape,icon:l.icon??"none",ports:l.ports,style:l.style,existsInCurrentView:l.existsInCurrentView,tags:l.tags,...b}})}}for(const l of e.edges){const c=l.source,u=l.target,d=l.id;if(!bo(l.points,2)){console.error("edge should have at least 2 points",l);continue}if(!bo(l.relations,1)){console.error("edge should have at least 1 relation",l);continue}n.push({id:d,type:"relationship",source:c,target:u,sourceHandle:l.sourceHandle,targetHandle:l.targetHandle,data:{sourceFqn:l.sourceFqn,targetFqn:l.targetFqn,relations:l.relations,color:l.color??"gray",label:l.label,navigateTo:l.navigateTo??null,line:l.line??"dashed",existsInCurrentView:l.existsInCurrentView},interactionWidth:20})}return{xynodes:r,xyedges:n}}const Fre=e=>e.find(r=>r.data.column==="subjects"&&z9(r.parentId)),Iet=wBe(async({input:e,self:r,signal:n})=>{const{subjectId:o,navigateFromNode:a,xyflow:i,xystore:s,update:l}=e;let{nodes:c,width:u,height:d}=s.getState();const h=Bre(l),f=()=>{const{nodes:M,edges:O}=s.getState();return{xynodes:yR(M,h.xynodes),xyedges:jre(O,h.xyedges)}},g=bt(r._parent);let b=i.getZoom();const x=Math.max(b,1),w=vu(l.bounds,u,d,_s,x,bR),k=h.xynodes.find(M=>M.type!=="empty"&&M.data.column==="subjects"&&M.data.fqn===o)??Fre(h.xynodes),C=Fre(c),_=a?c.find(M=>M.id===a):c.find(M=>M.type!=="empty"&&M.data.column!=="subjects"&&M.data.fqn===o);if(!k||!_||k.type==="empty"||!C||k.data.fqn===C.data.fqn)return await i.setViewport(w),f();const T={x:k.position.x+(k.initialWidth??0)/2,y:k.position.y+(k.initialHeight??0)/2},A=i.getInternalNode(C.id),R=Ty(A),D=new Set;if(c.forEach(M=>{if(M.id!==_.id){if(M.data.column==="subjects"){D.add(M.id);return}M.parentId&&(M.parentId===_.id||D.has(M.parentId))&&D.add(M.id)}}),c=yR(c,c.flatMap(M=>D.has(M.id)?[]:M.id!==_.id?{...M,data:{...M.data,dimmed:M.data.column==="subjects"?"immediate":!0}}:{...Eu(M,["parentId"]),position:{x:R.x-M.initialWidth/2,y:R.y-M.initialHeight/2},zIndex:_l.Max,hidden:!1,data:{...M.data,dimmed:!1}})),g.send({type:"update.xydata",xynodes:c,xyedges:[]}),await qB(120),h.xynodes=h.xynodes.map(cr.setDimmed(!1)),n.aborted)return f();const N=300;return i.setCenter(R.x,R.y,{zoom:b,duration:N,interpolate:"smooth"}),await qB(N),await i.setCenter(T.x,T.y,{zoom:b}),f()}),Cc=wl({actors:{layouter:Iet},guards:{hasViewId:({context:e})=>e.viewId!==null,isReady:({context:e})=>e.xyflow!==null&&e.xystore!==null&&e.layouted!==null,anotherSubject:({context:e,event:r})=>r.type==="update.view"?e.layouted?.subject!==r.layouted.subject:!1}}),Hre=()=>Cc.assign(({event:e})=>(Tt(e,"xyflow.init"),{xyflow:e.instance,xystore:e.store})),Vre=()=>Cc.assign(({event:e})=>(Tt(e,"update.view"),{layouted:e.layouted,...Bre(e.layouted)})),Oet=()=>Cc.createAction(({context:e})=>{at(e.xystore,"xystore is not initialized");const{domNode:r,updateNodeInternals:n}=e.xystore.getState(),o=new Set(e.xyedges.flatMap(s=>[s.source,s.target]));if(o.size===0||!r)return;const a=new Map,i=r.querySelectorAll(".react-flow__node");for(const s of i){const l=s.getAttribute("data-id");l&&o.has(l)&&a.set(l,{id:l,nodeElement:s,force:!0})}n(a,{triggerFitView:!1})}),vR=e=>Cc.createAction(({context:r,event:n})=>{e??=n.type==="fitDiagram"?n:{};let{duration:o,bounds:a}=e??{};o??=450;const{xyflow:i,xystore:s}=r;at(i,"xyflow is not initialized"),at(s,"xystore is not initialized"),a??=r.layouted?.bounds;const l=Math.max(i.getZoom(),1);if(a){const{width:c,height:u}=s.getState(),d=vu(a,c,u,_s,l,bR);i.setViewport(d,o>0?{duration:o,interpolate:"smooth"}:void 0).catch(console.error)}else i.fitView({minZoom:_s,maxZoom:l,padding:bR,...o>0&&{duration:o,interpolate:"smooth"}}).catch(console.error)}),jet=()=>Cc.assign(({context:e,event:r})=>(Tt(r,"xyflow.applyNodeChanges"),{xynodes:$3(r.changes,e.xynodes)})),Let=()=>Cc.assign(({context:e,event:r})=>(Tt(r,"xyflow.applyEdgeChanges"),{xyedges:M3(r.changes,e.xyedges)})),qre=()=>Cc.enqueueActions(({system:e,event:r})=>{if(r.type!=="xyflow.edgeClick")return;const n=jn(e).diagramActorRef,o=r.edge.data.relations;bo(o,1)&&n.send({type:"open.source",relation:o[0]})}),Ure=()=>Cc.assign({xyflow:null,layouted:null,xystore:null,xyedges:[],xynodes:[]}),Bet=Cc.createMachine({id:"relationships-browser",context:({input:e})=>({subject:e.subject,viewId:e.viewId,scope:e.viewId?e.scope:"global",closeable:e.closeable??!0,enableSelectSubject:e.enableSelectSubject??!0,enableChangeScope:e.enableChangeScope??!0,xyflow:null,xystore:null,layouted:null,navigateFromNode:null,xynodes:[],xyedges:[]}),initial:"initializing",on:{"xyflow.applyNodeChanges":{actions:jet()},"xyflow.applyEdgeChanges":{actions:Let()}},states:{initializing:{on:{"xyflow.init":{actions:Hre(),target:"isReady"},"update.view":{actions:Vre(),target:"isReady"},stop:"closed",close:"closed"}},isReady:{always:[{guard:"isReady",actions:[vR({duration:0}),fa({type:"xyflow.updateNodeInternals"},{delay:150})],target:"active"},{target:"initializing"}]},active:{initial:"idle",tags:["active"],on:{"xyflow.nodeClick":{actions:Pp(({event:e,enqueue:r})=>{if("fqn"in e.node.data){const n=e.node.data.fqn;r.raise({type:"navigate.to",subject:n,fromNode:e.node.id})}})},"xyflow.edgeClick":[{guard:"hasViewId",actions:Pp(({event:e,context:r,system:n,enqueue:o})=>{e.edge.selected||e.edge.data.relations.length>1?o.sendTo(jn(n).overlaysActorRef,{type:"open.relationshipDetails",viewId:r.viewId,source:e.edge.data.sourceFqn,target:e.edge.data.targetFqn}):o(qre())})},{actions:qre()}],"navigate.to":{actions:[Zt({subject:({event:e})=>e.subject,viewId:({event:e,context:r})=>e.viewId??r.viewId??null,navigateFromNode:({event:e})=>e.fromNode??null})]},"xyflow.paneDblClick":{actions:vR()},"update.view":{actions:Vre(),target:".layouting"},"change.scope":{actions:Zt({scope:({event:e})=>e.scope})},"xyflow.updateNodeInternals":{actions:Oet()},fitDiagram:{actions:vR()},"xyflow.resized":{actions:[wi("fitDiagram"),fa({type:"fitDiagram"},{id:"fitDiagram",delay:300})]},"xyflow.init":{actions:Hre()},"xyflow.unmount":{target:"initializing"},close:"closed"},states:{idle:{on:{"xyflow.edgeMouseEnter":{actions:[Zt({xyedges:({context:e,event:r})=>{const n=e.xyedges.some(o=>o.data.dimmed!==!1||o.selected);return e.xyedges.map(o=>o.id===r.edge.id?cr.setData(o,{hovered:!0,dimmed:!1}):n&&!o.selected?cr.setDimmed(o,"immediate"):o)}}),wi("undim.edges"),wi("dim.nonhovered.edges"),fa({type:"dim.nonhovered.edges"},{id:"dim.nonhovered.edges",delay:200})]},"xyflow.edgeMouseLeave":{actions:[Zt({xyedges:({context:e,event:r})=>e.xyedges.map(n=>n.id===r.edge.id?cr.setHovered(n,!1):n)}),wi("dim.nonhovered.edges"),fa({type:"undim.edges"},{id:"undim.edges",delay:400})]},"dim.nonhovered.edges":{actions:Zt({xyedges:({context:e})=>e.xyedges.map(r=>r.data.hovered?r:cr.setDimmed(r,r.data.dimmed==="immediate"?"immediate":!0))})},"undim.edges":{actions:Zt({xyedges:({context:e})=>e.xyedges.map(cr.setDimmed(!1))})},"xyflow.selectionChange":{actions:Pp(({event:e,context:r,enqueue:n})=>{e.edges.length===0&&r.xyedges.some(o=>o.data.dimmed)&&!r.xyedges.some(o=>o.data.hovered)&&n.raise({type:"undim.edges"})})}}},layouting:{invoke:{id:"layouter",src:"layouter",input:({context:e})=>({subjectId:e.subject,navigateFromNode:e.navigateFromNode,xyflow:bt(e.xyflow),xystore:bt(e.xystore),update:bt(e.layouted)}),onDone:{target:"idle",actions:Pp(({enqueue:e,event:r})=>{e.assign({xynodes:r.output.xynodes,xyedges:r.output.xyedges,navigateFromNode:null}),e.raise({type:"fitDiagram",duration:200},{id:"fitDiagram",delay:50});for(let n=1;n<8;n++)e.raise({type:"xyflow.updateNodeInternals"},{delay:120+n*75})})}},on:{"update.xydata":{actions:Zt({xynodes:({event:e})=>e.xynodes,xyedges:({event:e})=>e.xyedges})},"xyflow.applyEdgeChanges":{},"xyflow.applyNodeChanges":{}}}}},closed:{id:"closed",type:"final",entry:Ure()}},exit:Ure()}),Wre=Bet,Fet=wl({actors:{relationshipsBrowserLogic:Wre}}).createMachine({id:"element-details",context:({input:e})=>({...e,initiatedFrom:{node:e.initiatedFrom?.node??null,clientRect:e.initiatedFrom?.clientRect??null}}),initial:"active",states:{active:{entry:aw("relationshipsBrowserLogic",{id:({self:e})=>`${e.id}-relationships`,input:({context:e})=>({subject:e.subject,viewId:e.currentView.id,scope:"view",enableSelectSubject:!1,enableChangeScope:!0,closeable:!1})}),exit:[fw(({self:e})=>`${e.id}-relationships`,{type:"close"}),J0(({self:e})=>`${e.id}-relationships`)],on:{"change.subject":{actions:Zt({subject:({event:e})=>e.subject})},close:"closed"}},closed:{id:"closed",type:"final"}}}),Het=Fet;function Vet(e){const r=[],n=[],o=new Map,a=J8.from(e.nodes.reduce((l,c)=>(o.set(c.id,c),c.parent||l.push({node:c,parent:null}),l),[])),i=l=>bt(o.get(l),`Node not found: ${l}`);let s;for(;s=a.dequeue();){const{node:l,parent:c}=s,u=bo(l.children,1);if(u)for(const x of l.children)a.enqueue({node:i(x),parent:l});const d={x:l.x,y:l.y};c&&(d.x-=c.x,d.y-=c.y);const h=l.id,f={id:h,draggable:!1,selectable:!0,focusable:!0,deletable:!1,position:d,zIndex:u?_l.Compound:_l.Element,style:{width:l.width,height:l.height},initialWidth:l.width,initialHeight:l.height,...c&&{parentId:c.id}},g=l.modelRef,b={navigateTo:l.navigateTo??null};switch(!0){case u:{r.push({...f,type:"compound",data:{id:h,column:l.column,title:l.title,color:l.color,style:l.style,depth:l.depth??0,icon:l.icon??"none",ports:l.ports,fqn:g,...b}});break}default:r.push({...f,type:"element",data:{id:h,column:l.column,fqn:g,title:l.title,technology:l.technology,description:or.from(l.description),height:l.height,width:l.width,color:l.color,shape:l.shape,icon:l.icon??"none",ports:l.ports,style:l.style,tags:l.tags,...b}})}}for(const{source:l,target:c,relationId:u,label:d,technology:h,description:f,navigateTo:g=null,color:b="gray",line:x="dashed",...w}of e.edges){const k=w.id;n.push({id:k,type:"relationship",source:l,target:c,sourceHandle:w.sourceHandle,targetHandle:w.targetHandle,deletable:!1,data:{relationId:u,label:d,color:b,navigateTo:g,line:x,description:or.from(f),...h&&{technology:h}}})}return{xynodes:r,xyedges:n,bounds:e.bounds}}function Yre(e){return"edgeId"in e?(at(H3(e.edgeId),"edgeId is required"),{edgeId:e.edgeId}):{source:e.source,target:e.target}}const Gre={x:"22px",y:"22px"},qet=wl({actions:{"xyflow:fitDiagram":({context:e},r)=>{let{duration:n,bounds:o}=r??{};n??=450;const{xyflow:a,xystore:i}=e;at(a,"xyflow is not initialized"),at(i,"xystore is not initialized"),o??=e.bounds;const s=Math.max(a.getZoom(),1);if(o){const{width:l,height:c}=i.getState(),u=vu(o,l,c,_s,s,Gre);a.setViewport(u,n>0?{duration:n}:void 0).catch(console.error)}else a.fitView({minZoom:_s,maxZoom:s,padding:Gre,...n>0&&{duration:n,interpolate:"smooth"}}).catch(console.error)},"xyflow:updateNodeInternals":({context:e})=>{at(e.xystore,"xystore is not initialized");const{domNode:r,updateNodeInternals:n}=e.xystore.getState(),o=new Set(e.xyedges.flatMap(i=>[i.source,i.target]));if(o.size===0||!r)return;const a=new Map;for(const i of o){const s=r.querySelector(`.react-flow__node[data-id="${i}"]`);s&&a.set(i,{id:i,nodeElement:s,force:!0})}n(a,{triggerFitView:!1})},updateXYFlow:Zt(({context:e,event:r})=>{Tt(r,"xyflow.init");let n=e.initialized;return n.xyflow||(n={...n,xyflow:!0}),{initialized:n,xyflow:r.instance,xystore:r.store}}),updateLayoutData:Zt(({context:e,event:r})=>{Tt(r,"update.layoutData");const{xynodes:n,xyedges:o,bounds:a}=Vet(r.data);let i=e.initialized;return i.xydata||(i={...i,xydata:!0}),{initialized:i,xynodes:yR(e.xynodes,n),xyedges:jre(e.xyedges,o),bounds:an(e.bounds,a)?e.bounds:a}}),"open relationship source":Pp(({system:e,event:r})=>{if(r.type!=="xyflow.edgeClick")return;const n=jn(e).diagramActorRef,o=r.edge.data.relationId;o&&n.send({type:"open.source",relation:o})})},guards:{isReady:({context:e})=>e.initialized.xydata&&e.initialized.xyflow,"enable: navigate.to":()=>!0}}).createMachine({initial:"initializing",context:({input:e})=>({subject:Yre(e),viewId:e.viewId,bounds:{x:0,y:0,width:200,height:200},initialized:{xydata:!1,xyflow:!1},xyflow:null,xystore:null,xynodes:[],xyedges:[]}),states:{initializing:{on:{"xyflow.init":{actions:"updateXYFlow",target:"isReady"},"update.layoutData":{actions:"updateLayoutData",target:"isReady"},close:{target:"closed"}}},isReady:{always:[{guard:"isReady",actions:[{type:"xyflow:fitDiagram",params:{duration:0}},fa({type:"xyflow.updateNodeInternals"},{delay:50})],target:"ready"},{target:"initializing"}]},ready:{on:{"xyflow.edgeMouseEnter":{actions:[Zt({xyedges:({context:e,event:r})=>{const n=e.xyedges.some(o=>o.data.dimmed===!0||o.data.dimmed==="immediate");return e.xyedges.map(o=>o.id===r.edge.id?cr.setData(o,{hovered:!0,dimmed:!1}):n&&!o.selected?cr.setDimmed(o,"immediate"):o)}}),wi("undim.edges"),wi("dim.nonhovered.edges"),fa({type:"dim.nonhovered.edges"},{id:"dim.nonhovered.edges",delay:100})]},"xyflow.edgeMouseLeave":{actions:[Zt({xyedges:({context:e,event:r})=>e.xyedges.map(n=>n.id===r.edge.id?cr.setHovered(n,!1):n)}),wi("dim.nonhovered.edges"),fa({type:"undim.edges"},{id:"undim.edges",delay:400})]},"dim.nonhovered.edges":{actions:Zt({xyedges:({context:e})=>e.xyedges.map(r=>cr.setDimmed(r,r.data.hovered!==!0))})},"undim.edges":{actions:Zt({xyedges:({context:e})=>e.xyedges.some(r=>r.selected===!0)?e.xyedges.map(r=>cr.setDimmed(r,r.selected!==!0?r.data.dimmed||"immediate":!1)):e.xyedges.map(cr.setDimmed(!1))})},"xyflow.selectionChange":{actions:Pp(({event:e,context:r,enqueue:n})=>{e.edges.length===0&&r.xyedges.some(o=>o.data.dimmed)&&!r.xyedges.some(o=>o.data.hovered)&&n.raise({type:"undim.edges"})})},"update.layoutData":{actions:["updateLayoutData",wi("fitDiagram"),fa({type:"fitDiagram",duration:0},{id:"fitDiagram",delay:50}),fa({type:"xyflow.updateNodeInternals"},{delay:75})]},"xyflow.init":{actions:"updateXYFlow"},"xyflow.applyNodeChanges":{actions:Zt({xynodes:({context:e,event:r})=>$3(r.changes,e.xynodes)})},"xyflow.applyEdgeChanges":{actions:Zt({xyedges:({context:e,event:r})=>M3(r.changes,e.xyedges)})},"xyflow.paneDblClick":{actions:"xyflow:fitDiagram"},"xyflow.edgeClick":{actions:"open relationship source"},"navigate.to":{actions:Zt({subject:({event:e})=>Yre(e.params),viewId:({context:e,event:r})=>r.params.viewId??e.viewId})},close:{target:"closed"}},exit:Zt({xyedges:[],xynodes:[],initialized:{xydata:!1,xyflow:!1},xyflow:null,xystore:null})},closed:{type:"final"}},on:{fitDiagram:{actions:{type:"xyflow:fitDiagram",params:mp("event")}},"xyflow.resized":{actions:[wi("fitDiagram"),fa({type:"fitDiagram"},{id:"fitDiagram",delay:200})]},"xyflow.updateNodeInternals":{actions:"xyflow:updateNodeInternals"}}}),Uet=qet,Wet=WS(({sendBack:e})=>{const r=t2([["Escape",n=>{n.stopPropagation(),e({type:"close"})},{preventDefault:!0}]]);return document.body.addEventListener("keydown",r,{capture:!0}),()=>{document.body.removeEventListener("keydown",r,{capture:!0})}}),Tc=wl({actors:{relationshipDetails:Uet,elementDetails:Het,relationshipsBrowser:Wre,hotkey:Wet},guards:{"has overlays?":({context:e})=>e.overlays.length>0,"close specific overlay?":({context:e,event:r})=>(Tt(r,"close"),H3(r.actorId)&&e.overlays.some(n=>n.id===r.actorId)),"last: is relationshipDetails?":({context:e})=>lc(e.overlays)?.type==="relationshipDetails","last: is relationshipsBrowser?":({context:e})=>lc(e.overlays)?.type==="relationshipsBrowser"}}),Yet=()=>Tc.enqueueActions(({context:e,enqueue:r})=>{if(e.overlays.length===0)return;const n=lc(e.overlays)?.id;n&&(r.sendTo(n,{type:"close"}),r.stopChild(n),r.assign({overlays:e.overlays.filter(o=>o.id!==n)}))}),Get=()=>Tc.enqueueActions(({context:e,enqueue:r,event:n})=>{Tt(n,"close");const o=n.actorId;if(!H3(o))return;const a=e.overlays.find(i=>i.id===o)?.id;a&&(r.sendTo(a,{type:"close"}),r.stopChild(a),r.assign({overlays:e.overlays.filter(i=>i.id!==a)}))}),Xre=()=>Tc.enqueueActions(({context:e,enqueue:r})=>{for(const{id:n}of WNe(e.overlays))r.sendTo(n,{type:"close"}),r.stopChild(n);r.assign({overlays:[]})}),Xet=()=>Tc.enqueueActions(({context:e,enqueue:r,event:n})=>{if(Tt(n,"open.elementDetails"),e.overlays.some(a=>a.type==="elementDetails"&&a.subject===n.subject))return;const o=`elementDetails-${e.seq}`;r.spawnChild("elementDetails",{id:o,input:n}),r.assign({seq:e.seq+1,overlays:[...e.overlays,{type:"elementDetails",id:o,subject:n.subject}]})}),Ket=()=>Tc.enqueueActions(({context:e,enqueue:r,event:n})=>{Tt(n,"open.relationshipDetails");const o=lc(e.overlays);if(o?.type==="relationshipDetails"){r.sendTo(o.id,{...n,type:"navigate.to"});return}const a=`relationshipDetails-${e.seq}`;r.spawnChild("relationshipDetails",{id:a,input:n}),r.assign({seq:e.seq+1,overlays:[...e.overlays,{type:"relationshipDetails",id:a}]})}),Zet=()=>Tc.enqueueActions(({context:e,enqueue:r,event:n})=>{Tt(n,"open.relationshipsBrowser");const o=lc(e.overlays);if(o?.type==="relationshipsBrowser"){r.sendTo(o.id,{type:"navigate.to",subject:n.subject,viewId:n.viewId});return}const a=`relationshipsBrowser-${e.seq}`;r.spawnChild("relationshipsBrowser",{id:a,input:n}),r.assign({seq:e.seq+1,overlays:[...e.overlays,{type:"relationshipsBrowser",id:a,subject:n.subject}]})}),Qet=()=>Tc.spawnChild("hotkey",{id:"hotkey"}),N4=()=>Tc.stopChild("hotkey"),Jet=Tc.createMachine({id:"overlays",context:()=>({seq:1,overlays:[]}),initial:"idle",on:{"open.elementDetails":{actions:Xet(),target:".active",reenter:!1},"open.relationshipDetails":{actions:Ket(),target:".active",reenter:!1},"open.relationshipsBrowser":{actions:Zet(),target:".active",reenter:!1}},states:{idle:{},active:{entry:Qet(),exit:N4(),on:{close:[{guard:"close specific overlay?",actions:Get(),target:"closing"},{actions:Yet(),target:"closing"}],"close.all":{actions:[Xre(),N4()],target:"idle"}}},closing:{always:[{guard:"has overlays?",target:"active"},{actions:N4(),target:"idle"}]}},exit:[N4(),Xre()]}),ett=Jet,ttt=wl({actions:{"change searchValue":Zt({searchValue:({event:e,context:r})=>(Tt(e,["change.search","open"]),e.search??r.searchValue)}),"reset pickViewFor":Zt({pickViewFor:()=>null})}}).createMachine({id:"search",context:{openedWithSearch:null,searchValue:"",pickViewFor:null},initial:"inactive",on:{close:{target:".inactive",actions:"reset pickViewFor"}},states:{inactive:{on:{open:{target:"opened",actions:[Zt({openedWithSearch:({event:e})=>e.search??null,searchValue:({event:e,context:r})=>e.search??r.searchValue})]}}},opened:{on:{open:{actions:"change searchValue"},"change.search":{actions:"change searchValue"},"pickview.open":{target:"pickView",actions:Zt({pickViewFor:({event:e})=>e.elementFqn})}}},pickView:{on:{"pickview.close":{target:"opened",actions:"reset pickViewFor"}}}}}),rtt=ttt,ntt=WS(({sendBack:e})=>{const r=t2([["Escape",o=>{o.stopPropagation(),console.log("Escape karsarsey pressed"),e({type:"key.esc"})},{preventDefault:!0}]]),n=t2([["ArrowLeft",o=>{o.stopPropagation(),e({type:"key.arrow.left"})},{preventDefault:!0}],["ArrowRight",o=>{o.stopPropagation(),e({type:"key.arrow.right"})},{preventDefault:!0}]]);return document.body.addEventListener("keydown",r),document.body.addEventListener("keydown",n,{capture:!0}),()=>{document.body.removeEventListener("keydown",r),document.body.removeEventListener("keydown",n,{capture:!0})}}),ott=WS(({sendBack:e})=>{const r=t2([["mod + z",n=>{console.log("Undo hotkey pressed"),n.stopPropagation(),e({type:"undo"})},{preventDefault:!0}]]);return document.body.addEventListener("keydown",r,{capture:!0}),()=>{document.body.removeEventListener("keydown",r,{capture:!0})}}),D4=function(e){return e.get("diagram")},Va=wl({delays:{timeout:2e3},guards:{"can undo":({context:e})=>e.history.length>0},actors:{undoHotKeyActorLogic:ott}}),att=Va.assign(({context:e})=>{const r=e.beforeEditing;if(!r)return{};const n=lc(e.history);return lt(n?.xyedges,r.xyedges)&<(n?.xynodes,r.xynodes)?{beforeEditing:null}:{beforeEditing:null,history:[...e.history,r]}}),itt=Va.assign(({context:e})=>e.history.length===0?{}:{history:e.history.slice(0,-1)}),Kre=Va.assign(({system:e,event:r})=>{Tt(r,"editing.start");const n=D4(e).getSnapshot().context;return{editing:r.subject,beforeEditing:{xynodes:Sn(n.xynodes,o=>({...o})),xyedges:Sn(n.xyedges,o=>({...o})),change:gR(n),view:n.view,synched:!1}}}),$4=Va.enqueueActions(({check:e,enqueue:r,self:n})=>{const o=e("can undo"),a=n.getSnapshot().children.undoHotKey;if(a&&!o){r.stopChild(a);return}!a&&o&&r.spawnChild("undoHotKeyActorLogic",{id:"undoHotKey"})}),Zre=Va.enqueueActions(({event:e,enqueue:r})=>{Tt(e,"editing.stop"),e.wasChanged&&(r.cancel("sync"),r(att),r.raise({type:"sync"},{id:"sync",delay:50})),r.assign({beforeEditing:null,editing:null})}),stt=Va.sendTo(({system:e})=>D4(e),({system:e})=>{const r=D4(e).getSnapshot().context;return{type:"emit.onChange",change:gR(r)}}),ltt=Va.assign(({context:e,event:r})=>(Tt(r,"synced"),{history:e.history.map(n=>({...n,synched:!0})),beforeEditing:e.beforeEditing?{...e.beforeEditing,synched:!0}:null})),Qre=Va.enqueueActions(({context:e,enqueue:r,system:n})=>{const o=lc(e.history);if(!o)return;r(itt),r($4);const a=D4(n);r.sendTo(a,{type:"update.view",view:o.view,xyedges:o.xyedges,xynodes:o.xynodes}),o.synched&&r.sendTo(a,{type:"emit.onChange",change:o.change})}),ctt=Va.createStateConfig({tags:"ready",entry:[Zt({beforeEditing:null,editing:null})],on:{sync:{target:"pending"},"editing.start":{actions:Kre,target:"editing"},undo:{guard:"can undo",actions:Qre}}}),utt=Va.createStateConfig({on:{"editing.stop":{actions:[Zre,$4],target:"idle"},undo:{}}}),dtt=Va.createStateConfig({tags:"pending",on:{sync:{target:"pending",reenter:!0},"editing.start":{target:"paused",actions:Kre},undo:{guard:"can undo",actions:Qre,target:"idle"}},after:{timeout:{target:"idle",actions:stt}}}),ptt=Va.createStateConfig({tags:"pending",on:{"editing.stop":{actions:[Zre,$4],target:"pending"},undo:{}}}),htt=Va.createMachine({initial:"idle",context:({input:e})=>({...e,history:[],beforeEditing:null,editing:null}),states:{idle:ctt,editing:utt,pending:dtt,paused:ptt,stopped:{entry:[Zt({beforeEditing:null,history:[]}),$4],type:"final"}},on:{cancel:{target:".idle"},synced:{actions:ltt,target:".idle"},stop:{target:".stopped"}}}),ftt=htt,M4=e=>(e.features.enableReadOnly||e.toggledFeatures.enableReadOnly===!0)&&(e.view._type!=="dynamic"||e.dynamicViewVariant!=="sequence"),mt=wl({actors:{syncManualLayoutActorLogic:ftt,hotkeyActorLogic:ntt,overlaysActorLogic:ett,searchActorLogic:rtt},guards:{isReady:({context:e})=>e.initialized.xydata&&e.initialized.xyflow,"enabled: FitView":({context:e})=>e.features.enableFitView,"enabled: FocusMode":({context:e})=>(e.toggledFeatures.enableFocusMode??e.features.enableFocusMode)===!0&&M4(e),"enabled: Readonly":({context:e})=>M4(e),"enabled: RelationshipDetails":({context:e})=>e.features.enableRelationshipDetails,"enabled: Search":({context:e})=>e.features.enableSearch,"enabled: ElementDetails":({context:e})=>e.features.enableElementDetails,"enabled: DynamicViewWalkthrough":({context:e})=>M4(e)&&e.features.enableDynamicViewWalkthrough,"not readonly":({context:e})=>!M4(e),"is dynamic view":({context:e})=>e.view._type==="dynamic","is another view":({context:e,event:r})=>{if(Tt(r,["update.view","navigate.to"]),r.type==="update.view")return e.view.id!==r.view.id;if(r.type==="navigate.to")return e.view.id!==r.viewId;Zi(r.type)},"click: node has modelFqn":({event:e})=>(Tt(e,"xyflow.nodeClick"),"modelFqn"in e.node.data),"click: selected node":({event:e})=>(Tt(e,"xyflow.nodeClick"),e.node.selected===!0),"click: same node":({context:e,event:r})=>(Tt(r,"xyflow.nodeClick"),e.lastClickedNode?.id===r.node.id),"click: focused node":({context:e,event:r})=>(Tt(r,"xyflow.nodeClick"),e.focusedNode===r.node.id),"click: node has connections":({context:e,event:r})=>(Tt(r,"xyflow.nodeClick"),e.xyedges.some(n=>n.source===r.node.id||n.target===r.node.id)),"click: selected edge":({event:e})=>(Tt(e,["xyflow.edgeClick","xyflow.edgeDoubleClick"]),e.edge.selected===!0||e.edge.data.active===!0)}});function Jre(e){switch(e.type){case"element":case"compound-element":case"seq-actor":return e.data.modelFqn;case"deployment":case"compound-deployment":return e.data.modelFqn??e.data.deploymentFqn;case"seq-parallel":case"view-group":return null;default:Zi(e)}}function ene(e,r){const n=e.lastOnNavigate?.fromNode,o=n&&e.xynodes.find(s=>s.id===n),a=o&&Jre(o),i=a&&r.xynodes.find(s=>Jre(s)===a);return{fromNode:o,toNode:i}}const mtt={navigateTo:()=>mt.emit(({context:e})=>({type:"navigateTo",viewId:bt(e.lastOnNavigate,"Invalid state, lastOnNavigate is null").toView}))},ko={fitDiagram:e=>mt.createAction(({context:r,event:n})=>{e??=n.type==="fitDiagram"?n:{};const{bounds:o=r.view.bounds,duration:a=450}=e,{width:i,height:s,panZoom:l,transform:c}=bt(r.xystore).getState(),u=Math.max(1,c[2]),d=vu(o,i,s,_s,u,r.fitViewPadding);d.x=Math.round(d.x),d.y=Math.round(d.y),l?.setViewport(d,a>0?{duration:a,interpolate:"smooth"}:void 0).catch(console.error)}),fitFocusedBounds:()=>mt.createAction(({context:e})=>{const r=!!e.activeWalkthrough&&e.dynamicViewVariant==="sequence",{bounds:n,duration:o=450}=r?UKe({context:e}):VKe({context:e}),{width:a,height:i,panZoom:s,transform:l}=bt(e.xystore).getState(),c=Math.max(1,l[2]),u=vu(n,a,i,_s,c,e.fitViewPadding);u.x=Math.round(u.x),u.y=Math.round(u.y),s?.setViewport(u,o>0?{duration:o,interpolate:"smooth"}:void 0)}),alignNodeFromToAfterNavigate:e=>mt.createAction(({context:r})=>{const n=bt(r.xyflow,"xyflow is not initialized"),o=n.getInternalNode(e.fromNode);if(!o)return;const a=n.flowToScreenPosition({x:o.internals.positionAbsolute.x,y:o.internals.positionAbsolute.y}),i=n.flowToScreenPosition(e.toPosition),s={x:Math.round(a.x-i.x),y:Math.round(a.y-i.y)};r.xystore.getState().panBy(s)}),setViewportCenter:e=>mt.createAction(({context:r,event:n})=>{let o;e?o=e:n.type==="update.view"?o=il.center(n.view.bounds):o=il.center(r.view.bounds),at(r.xyflow,"xyflow is not initialized");const a=r.xyflow.getZoom();r.xyflow.setCenter(Math.round(o.x),Math.round(o.y),{zoom:a})}),setViewport:e=>mt.createAction(({context:r})=>{const{viewport:n,duration:o=350}=e;r.xystore?.getState().panZoom?.setViewport(n,o>0?{duration:o,interpolate:"smooth"}:void 0)})},xR=()=>mt.assign(({context:e})=>({toggledFeatures:{...e.toggledFeatures,enableCompareWithLatest:!1},viewportOnAutoLayout:null,viewportOnManualLayout:null})),gtt=()=>mt.assign(({context:e,event:r})=>{if(Tt(r,"xyflow.edgeDoubleClick"),!r.edge.data.controlPoints)return{};const{nodeLookup:n}=e.xystore.getState();return{xyedges:e.xyedges.map(o=>{if(o.id===r.edge.id){const a=Mre(n,o),i=a[0];return{...o,data:{...o.data,controlPoints:a,labelBBox:o.data.labelBBox?{...o.data.labelBBox,...i}:null,labelXY:o.data.labelXY?i:null}}}return o})}}),ytt=()=>mt.enqueueActions(({event:e,enqueue:r})=>{Tt(e,"emit.onChange"),r.assign({viewportChangedManually:!0}),r.emit({type:"onChange",change:e.change})}),btt=()=>mt.enqueueActions(({event:e,system:r,context:n,enqueue:o})=>{if(!n.features.enableCompareWithLatest){console.warn("Layout type cannot be changed while CompareWithLatest feature is disabled");return}const a=n.view._layout;let i=a==="auto"?"manual":"auto";if(e.type==="emit.onLayoutTypeChange"&&(i=e.layoutType),a===i){console.warn("Ignoring layout type change event, layout type is already",a);return}if(n.toggledFeatures.enableCompareWithLatest===!0){if(a==="manual"&&i==="auto"){const l=jn(r).syncLayoutActorRef,c=l?.getSnapshot().value;l&&(c==="pending"||c==="paused")&&(o.sendTo(l,{type:"cancel"}),o.emit({type:"onChange",change:gR(n)}))}const s=n.viewport;a==="auto"&&o.assign({viewportOnAutoLayout:s}),a==="manual"&&o.assign({viewportOnManualLayout:s})}o.emit({type:"onLayoutTypeChange",layoutType:i})}),Gy=()=>mt.assign(({context:e,event:r})=>{Tt(r,"xyflow.nodeClick");const{lastClickedNode:n}=e;return!n||n.id!==r.node.id?{lastClickedNode:{id:r.node.id,clicks:1,timestamp:Date.now()}}:{lastClickedNode:{id:n.id,clicks:n.clicks+1,timestamp:Date.now()}}}),wR=()=>mt.assign(({event:e})=>{let r;switch(e.type){case"xyflow.nodeClick":r=e.node.data.id;break;case"focus.node":r=e.nodeId;break;default:throw new Error(`Unexpected event type: ${e.type} in action 'assign: focusedNode'`)}return{focusedNode:r}}),Xy=()=>mt.assign(()=>({lastClickedNode:null})),vtt=()=>mt.assign(({event:e})=>(Tt(e,"update.features"),{features:{...e.features}})),xtt=()=>mt.assign(({event:e})=>(Tt(e,"update.inputs"),{...e.inputs})),kR=()=>mt.assign(({context:e,event:r})=>(Tt(r,"update.view"),{..._et({context:e,event:r}),lastClickedNode:null})),P4=()=>mt.assign(Eet),z4=()=>mt.assign(({context:e})=>({xynodes:e.xynodes.map(cr.setDimmed(!1)),xyedges:e.xyedges.map(cr.setData({dimmed:!1,active:!1}))})),Ky=()=>mt.assign(Net),wtt=()=>mt.assign(({event:e})=>(Tt(e,"switch.dynamicViewVariant"),{dynamicViewVariant:e.variant})),ktt=e=>mt.assign(({context:r,event:n})=>{let o=e?.node;return o||(Tt(n,"xyflow.nodeMouseEnter"),o=n.node),{xynodes:r.xynodes.map(a=>a.id===o.id?cr.setHovered(a,!0):a)}}),_tt=e=>mt.assign(({context:r,event:n})=>{let o=e?.node;return o||(Tt(n,"xyflow.nodeMouseLeave"),o=n.node),{xynodes:r.xynodes.map(a=>a.id===o.id?cr.setHovered(a,!1):a)}}),Ett=()=>mt.emit(()=>({type:"walkthroughStopped"})),_R=()=>mt.emit(()=>({type:"paneClick"})),tne=e=>mt.emit(({event:r})=>e?{type:"openSource",params:e}:(Tt(r,"open.source"),{type:"openSource",params:r})),Stt=()=>mt.emit(({context:e})=>(at(e.xyflow,"XYFlow instance not found"),{type:"initialized",instance:e.xyflow})),Qp=()=>mt.emit(({context:e,event:r})=>(Tt(r,"xyflow.nodeClick"),{type:"nodeClick",node:bt(Hm(e,r.node.id),`Node ${r.node.id} not found in diagram`),xynode:r.node})),ER=()=>mt.emit(({context:e,event:r})=>(Tt(r,"xyflow.edgeClick"),{type:"edgeClick",edge:bt(UA(e,r.edge.id),`Edge ${r.edge.id} not found in diagram`),xyedge:r.edge})),Ctt=()=>mt.emit(({context:e})=>{const r=e.xyedges.find(n=>n.id===e.activeWalkthrough?.stepId);return at(r,"Invalid walkthrough state"),{type:"walkthroughStarted",edge:r}}),rne=()=>mt.emit(({context:e})=>{const r=e.xyedges.find(n=>n.id===e.activeWalkthrough?.stepId);return at(r,"Invalid walkthrough state"),{type:"walkthroughStep",edge:r}}),Ttt=e=>mt.createAction(({context:r,event:n})=>{let o;Tt(n,"layout.align"),o=n.mode;const a=bt(r.xystore,"xystore is not initialized"),{nodeLookup:i,parentLookup:s}=a.getState(),l=[...new Set(i.values().filter(h=>h.selected).map(h=>h.id)).difference(new Set(s.keys()))];if(!bo(l,2)){console.warn("At least 2 nodes must be selected to align");return}const c=Are(a,l),u=Met(o),d=l.map(h=>({node:bt(i.get(h)),rect:bt(c.rects.get(h))}));u.computeLayout(d.map(({node:h})=>zre(h)));for(const{rect:h,node:f}of d)h.positionAbsolute={...h.positionAbsolute,...u.applyPosition(zre(f))};c.updateXYFlow()}),Att=()=>mt.assign(({context:e})=>{const{nodeLookup:r}=e.xystore.getState();return{xyedges:e.xyedges.map(n=>{if(!n.data.controlPoints)return n;const o=Mre(r,n),a=o[0];return{...n,data:{...n.data,controlPoints:o,labelBBox:n.data.labelBBox?{...n.data.labelBBox,x:a.x,y:a.y}:null,labelXY:n.data.labelXY?a:null}}})}}),Rtt=e=>mt.assign(({context:r,event:n})=>{e||(Tt(n,"notations.highlight"),e={...n});const o=e.notation,a=e.kind?[e.kind]:o.kinds;return{xynodes:r.xynodes.map(i=>{const s=Hm(r,i.id);return s&&s.notation===o.title&&s.shape===o.shape&&s.color===o.color&&a.includes(s.kind)?cr.setDimmed(i,!1):cr.setDimmed(i,"immediate")}),xyedges:r.xyedges.map(cr.setDimmed("immediate"))}}),Ntt=()=>mt.assign(({context:e,event:r})=>(Tt(r,"tag.highlight"),{xynodes:e.xynodes.map(n=>n.data.tags?.includes(r.tag)?cr.setDimmed(n,!1):cr.setDimmed(n,!0))})),Dtt=()=>mt.assign(({context:e,event:r})=>{Tt(r,"toggle.feature");const n=e.toggledFeatures[`enable${r.feature}`]??e.features[`enable${r.feature}`],o=r.forceValue??!n;return{toggledFeatures:{...e.toggledFeatures,[`enable${r.feature}`]:o}}}),nne=()=>mt.sendTo(({system:e})=>jn(e).searchActorRef,{type:"close"}),one=()=>mt.sendTo(({system:e})=>jn(e).overlaysActorRef,{type:"close.all"}),$tt=e=>e.features.enableReadOnly||e.toggledFeatures.enableReadOnly===!0,I4=()=>mt.enqueueActions(({enqueue:e,system:r})=>{const n=jn(r).syncLayoutActorRef;n&&e.stopChild(n)}),Zy=()=>mt.enqueueActions(({context:e,enqueue:r,system:n})=>{const o=jn(n).syncLayoutActorRef;if($tt(e)){o&&r.stopChild(o);return}o||r.spawnChild("syncManualLayoutActorLogic",{id:"syncLayout",systemId:"syncLayout",input:{viewId:e.view.id},syncSnapshot:!0})}),ane=(e="node")=>mt.sendTo(({system:r})=>jn(r).syncLayoutActorRef,{type:"editing.start",subject:e}),ine=(e=!0)=>mt.sendTo(({system:r})=>jn(r).syncLayoutActorRef,{type:"editing.stop",wasChanged:e}),sne=e=>"modelFqn"in e.data&&ua(e.data.modelFqn),SR=e=>mt.enqueueActions(({context:r,event:n,enqueue:o,system:a})=>{let i=null,s,l;switch(!0){case n.type==="xyflow.nodeClick":{if(!sne(n.node)){console.warn("No modelFqn in clicked node data");return}l=n.node.data.modelFqn,s=n.node.data.id;break}case n.type==="open.elementDetails":{l=n.fqn,s=n.fromNode;break}default:{if(!r.lastClickedNode){console.warn("No last clicked node");return}s=r.lastClickedNode.id;const u=r.xynodes.find(d=>d.id===s);if(!u||!sne(u)){console.warn("No modelFqn in last clicked node");return}l=u.data.modelFqn;break}}const c=s?r.xystore.getState().nodeLookup.get(s):null;if(s&&c){const u=dp(c),d=r.xyflow.getZoom(),h={...r.xyflow.flowToScreenPosition(u),width:u.width*d,height:u.height*d};i={node:s,clientRect:h}}o.sendTo(jn(a).overlaysActorRef,{type:"open.elementDetails",subject:l,currentView:r.view,...i&&{initiatedFrom:i}})}),O4=()=>mt.enqueueActions(({context:e,enqueue:r})=>{const n=e.focusedNode??e.lastClickedNode?.id;if(!n||!e.features.enableVscode)return;const o=Hm(e,n);o&&(o.deploymentRef?r.raise({type:"open.source",deployment:o.deploymentRef}):o.modelRef&&r.raise({type:"open.source",element:o.modelRef}))}),Mtt=()=>mt.enqueueActions(({enqueue:e,context:{features:r},system:n})=>{const o=r.enableElementDetails||r.enableRelationshipDetails||r.enableRelationshipBrowser,a=jn(n).overlaysActorRef;if(o&&!a){e.spawnChild("overlaysActorLogic",{id:"overlays",systemId:"overlays"});return}!o&&a&&(e.sendTo(a,{type:"close.all"}),e.stopChild("overlays"))}),Ptt=()=>mt.enqueueActions(({enqueue:e,context:{features:{enableSearch:r}},system:n})=>{const o=jn(n).searchActorRef;if(r&&!o){e.spawnChild("searchActorLogic",{id:"search",systemId:"search"});return}!r&&o&&(e.sendTo(o,{type:"close"}),e.stopChild("search"))}),ztt=()=>mt.enqueueActions(({enqueue:e,context:r,event:n})=>{Tt(n,"xyflow.edgeMouseEnter");let o=n.edge;e.assign({xyedges:r.xyedges.map(a=>a.id===n.edge.id?(o=cr.setHovered(a,!0),o):a)}),e.emit({type:"edgeMouseEnter",edge:o,event:n.event})}),Itt=()=>mt.enqueueActions(({enqueue:e,context:r,event:n})=>{Tt(n,"xyflow.edgeMouseLeave");let o=n.edge;e.assign({xyedges:r.xyedges.map(a=>a.id===n.edge.id?(o=cr.setHovered(a,!1),o):a)}),e.emit({type:"edgeMouseLeave",edge:o,event:n.event})}),Qy=()=>mt.cancel("fitDiagram"),Km=e=>mt.enqueueActions(({enqueue:r})=>{r.cancel("fitDiagram"),r.raise({type:"fitDiagram",..._u(e?.duration)?{duration:e.duration}:{}},{id:"fitDiagram",..._u(e?.delay)?{delay:e.delay}:{}})}),Ott=()=>mt.enqueueActions(({enqueue:e,event:r,check:n,context:o,system:a})=>{Tt(r,"update.view");const i=n("is another view");if(e(Qy()),i){e(I4()),e(one()),e(nne()),e.assign({focusedNode:null}),e(xR());const{fromNode:u,toNode:d}=ene(o,r);u&&d?(e(ko.alignNodeFromToAfterNavigate({fromNode:u.id,toPosition:{x:d.data.x,y:d.data.y}})),e(Km({delay:80}))):(e(ko.setViewportCenter()),e(Km({duration:200,delay:25}))),e(kR()),e(Zy());return}e(kR());const s=jn(a).syncLayoutActorRef;s&&e.sendTo(s,{type:"synced"});const l=r.view;if(o.toggledFeatures.enableCompareWithLatest===!0&&o.view._layout!==l._layout){if(l._layout==="auto"&&o.viewportOnAutoLayout){e(ko.setViewport({viewport:o.viewportOnAutoLayout,duration:0}));return}if(l._layout==="manual"&&o.viewportOnManualLayout){e(ko.setViewport({viewport:o.viewportOnManualLayout,duration:0}));return}}let c=!o.viewportChangedManually;c=c||l._type==="dynamic"&&o.view._type==="dynamic"&&l.variant!==o.view.variant,c=c||o.toggledFeatures.enableCompareWithLatest===!0&&!!l._layout&&o.view._layout!==l._layout,c&&(e(ko.setViewportCenter(il.center(l.bounds))),e(Km({delay:50})))});var Qo={},CR={},_t={},lne=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zm={},cne;function TR(){if(cne)return Zm;cne=1,Object.defineProperty(Zm,"__esModule",{value:!0});function e(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof lne<"u")return lne}function r(){const a=e();if(a.__xstate__)return a.__xstate__}function n(a){if(typeof window>"u")return;const i=r();i&&i.register(a)}const o=a=>{if(typeof window>"u")return;const i=r();i&&i.register(a)};return Zm.devToolsAdapter=o,Zm.getGlobal=e,Zm.registerService=n,Zm}var une;function j4(){if(une)return _t;une=1;var e=TR();class r{constructor(te){this._process=te,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(te){const ae={value:te,next:null};if(this._current){this._last.next=ae,this._last=ae;return}this._current=ae,this._last=ae,this._active&&this.flush()}flush(){for(;this._current;){const te=this._current;this._process(te.value),this._current=te.next}this._last=null}}const n=".",o="",a="",i="#",s="*",l="xstate.init",c="xstate.error",u="xstate.stop";function d(ee,te){return{type:`xstate.after.${ee}.${te}`}}function h(ee,te){return{type:`xstate.done.state.${ee}`,output:te}}function f(ee,te){return{type:`xstate.done.actor.${ee}`,output:te,actorId:ee}}function g(ee,te){return{type:`xstate.error.actor.${ee}`,error:te,actorId:ee}}function b(ee){return{type:l,input:ee}}function x(ee){setTimeout(()=>{throw ee})}const w=typeof Symbol=="function"&&Symbol.observable||"@@observable";function k(ee,te){const ae=_(ee),le=_(te);return typeof le=="string"?typeof ae=="string"?le===ae:!1:typeof ae=="string"?ae in le:Object.keys(ae).every(ue=>ue in le?k(ae[ue],le[ue]):!1)}function C(ee){if(M(ee))return ee;const te=[];let ae="";for(let le=0;letypeof te>"u"||typeof te=="string"?{target:te}:te)}function L(ee){if(!(ee===void 0||ee===o))return D(ee)}function U(ee,te,ae){const le=typeof ee=="object",ue=le?ee:void 0;return{next:(le?ee.next:ee)?.bind(ue),error:(le?ee.error:te)?.bind(ue),complete:(le?ee.complete:ae)?.bind(ue)}}function P(ee,te){return`${te}.${ee}`}function V(ee,te){const ae=te.match(/^xstate\.invoke\.(\d+)\.(.*)/);if(!ae)return ee.implementations.actors[te];const[,le,ue]=ae,_e=ee.getStateNodeById(ue).config.invoke;return(Array.isArray(_e)?_e[le]:_e).src}function I(ee){return[...new Set([...ee._nodes.flatMap(te=>te.ownEvents)])]}function H(ee,te){return`${ee.sessionId}.${te}`}let q=0;function Z(ee,te){const ae=new Map,le=new Map,ue=new WeakMap,_e=new Set,Be={},{clock:Xe,logger:dt}=te,gt={schedule:(ot,wt,Ct,Gt,Wo=Math.random().toString(36).slice(2))=>{const Mh={source:ot,target:wt,event:Ct,delay:Gt,id:Wo,startedAt:Date.now()},Ja=H(ot,Wo);nt._snapshot._scheduledEvents[Ja]=Mh;const hd=Xe.setTimeout(()=>{delete Be[Ja],delete nt._snapshot._scheduledEvents[Ja],nt._relay(ot,wt,Ct)},Gt);Be[Ja]=hd},cancel:(ot,wt)=>{const Ct=H(ot,wt),Gt=Be[Ct];delete Be[Ct],delete nt._snapshot._scheduledEvents[Ct],Gt!==void 0&&Xe.clearTimeout(Gt)},cancelAll:ot=>{for(const wt in nt._snapshot._scheduledEvents){const Ct=nt._snapshot._scheduledEvents[wt];Ct.source===ot&>.cancel(ot,Ct.id)}}},Yt=ot=>{if(!_e.size)return;const wt={...ot,rootId:ee.sessionId};_e.forEach(Ct=>Ct.next?.(wt))},nt={_snapshot:{_scheduledEvents:(te?.snapshot&&te.snapshot.scheduler)??{}},_bookId:()=>`x:${q++}`,_register:(ot,wt)=>(ae.set(ot,wt),ot),_unregister:ot=>{ae.delete(ot.sessionId);const wt=ue.get(ot);wt!==void 0&&(le.delete(wt),ue.delete(ot))},get:ot=>le.get(ot),getAll:()=>Object.fromEntries(le.entries()),_set:(ot,wt)=>{const Ct=le.get(ot);if(Ct&&Ct!==wt)throw new Error(`Actor with system ID '${ot}' already exists.`);le.set(ot,wt),ue.set(wt,ot)},inspect:ot=>{const wt=U(ot);return _e.add(wt),{unsubscribe(){_e.delete(wt)}}},_sendInspectionEvent:Yt,_relay:(ot,wt,Ct)=>{nt._sendInspectionEvent({type:"@xstate.event",sourceRef:ot,actorRef:wt,event:Ct}),wt._send(Ct)},scheduler:gt,getSnapshot:()=>({_scheduledEvents:{...nt._snapshot._scheduledEvents}}),start:()=>{const ot=nt._snapshot._scheduledEvents;nt._snapshot._scheduledEvents={};for(const wt in ot){const{source:Ct,target:Gt,event:Wo,delay:Mh,id:Ja}=ot[wt];gt.schedule(Ct,Gt,Wo,Mh,Ja)}},_clock:Xe,_logger:dt};return nt}let W=!1;const G=1;let K=(function(ee){return ee[ee.NotStarted=0]="NotStarted",ee[ee.Running=1]="Running",ee[ee.Stopped=2]="Stopped",ee})({});const j={clock:{setTimeout:(ee,te)=>setTimeout(ee,te),clearTimeout:ee=>clearTimeout(ee)},logger:console.log.bind(console),devTools:!1};class Y{constructor(te,ae){this.logic=te,this._snapshot=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new r(this._process.bind(this)),this.observers=new Set,this.eventListeners=new Map,this.logger=void 0,this._processingStatus=K.NotStarted,this._parent=void 0,this._syncSnapshot=void 0,this.ref=void 0,this._actorScope=void 0,this.systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];const le={...j,...ae},{clock:ue,logger:_e,parent:Be,syncSnapshot:Xe,id:dt,systemId:gt,inspect:Yt}=le;this.system=Be?Be.system:Z(this,{clock:ue,logger:_e}),Yt&&!Be&&this.system.inspect(U(Yt)),this.sessionId=this.system._bookId(),this.id=dt??this.sessionId,this.logger=ae?.logger??this.system._logger,this.clock=ae?.clock??this.system._clock,this._parent=Be,this._syncSnapshot=Xe,this.options=le,this.src=le.src??te,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:nt=>{this._deferred.push(nt)},system:this.system,stopChild:nt=>{if(nt._parent!==this)throw new Error(`Cannot stop child actor ${nt.id} of ${this.id} because it is not a child`);nt._stop()},emit:nt=>{const ot=this.eventListeners.get(nt.type),wt=this.eventListeners.get("*");if(!ot&&!wt)return;const Ct=[...ot?ot.values():[],...wt?wt.values():[]];for(const Gt of Ct)try{Gt(nt)}catch(Wo){x(Wo)}},actionExecutor:nt=>{const ot=()=>{if(this._actorScope.system._sendInspectionEvent({type:"@xstate.action",actorRef:this,action:{type:nt.type,params:nt.params}}),!nt.exec)return;const wt=W;try{W=!0,nt.exec(nt.info,nt.params)}finally{W=wt}};this._processingStatus===K.Running?ot():this._deferred.push(ot)}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:"@xstate.actor",actorRef:this}),gt&&(this.systemId=gt,this.system._set(gt,this)),this._initState(ae?.snapshot??ae?.state),gt&&this._snapshot.status!=="active"&&this.system._unregister(this)}_initState(te){try{this._snapshot=te?this.logic.restoreSnapshot?this.logic.restoreSnapshot(te,this._actorScope):te:this.logic.getInitialSnapshot(this._actorScope,this.options?.input)}catch(ae){this._snapshot={status:"error",output:void 0,error:ae}}}update(te,ae){this._snapshot=te;let le;for(;le=this._deferred.shift();)try{le()}catch(ue){this._deferred.length=0,this._snapshot={...te,status:"error",error:ue}}switch(this._snapshot.status){case"active":for(const ue of this.observers)try{ue.next?.(te)}catch(_e){x(_e)}break;case"done":for(const ue of this.observers)try{ue.next?.(te)}catch(_e){x(_e)}this._stopProcedure(),this._complete(),this._doneEvent=f(this.id,this._snapshot.output),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case"error":this._error(this._snapshot.error);break}this.system._sendInspectionEvent({type:"@xstate.snapshot",actorRef:this,event:ae,snapshot:te})}subscribe(te,ae,le){const ue=U(te,ae,le);if(this._processingStatus!==K.Stopped)this.observers.add(ue);else switch(this._snapshot.status){case"done":try{ue.complete?.()}catch(_e){x(_e)}break;case"error":{const _e=this._snapshot.error;if(!ue.error)x(_e);else try{ue.error(_e)}catch(Be){x(Be)}break}}return{unsubscribe:()=>{this.observers.delete(ue)}}}on(te,ae){let le=this.eventListeners.get(te);le||(le=new Set,this.eventListeners.set(te,le));const ue=ae.bind(void 0);return le.add(ue),{unsubscribe:()=>{le.delete(ue)}}}start(){if(this._processingStatus===K.Running)return this;this._syncSnapshot&&this.subscribe({next:ae=>{ae.status==="active"&&this.system._relay(this,this._parent,{type:`xstate.snapshot.${this.id}`,snapshot:ae})},error:()=>{}}),this.system._register(this.sessionId,this),this.systemId&&this.system._set(this.systemId,this),this._processingStatus=K.Running;const te=b(this.options.input);switch(this.system._sendInspectionEvent({type:"@xstate.event",sourceRef:this._parent,actorRef:this,event:te}),this._snapshot.status){case"done":return this.update(this._snapshot,te),this;case"error":return this._error(this._snapshot.error),this}if(this._parent||this.system.start(),this.logic.start)try{this.logic.start(this._snapshot,this._actorScope)}catch(ae){return this._snapshot={...this._snapshot,status:"error",error:ae},this._error(ae),this}return this.update(this._snapshot,te),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(te){let ae,le;try{ae=this.logic.transition(this._snapshot,te,this._actorScope)}catch(ue){le={err:ue}}if(le){const{err:ue}=le;this._snapshot={...this._snapshot,status:"error",error:ue},this._error(ue);return}this.update(ae,te),te.type===u&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===K.Stopped?this:(this.mailbox.clear(),this._processingStatus===K.NotStarted?(this._processingStatus=K.Stopped,this):(this.mailbox.enqueue({type:u}),this))}stop(){if(this._parent)throw new Error("A non-root actor cannot be stopped directly.");return this._stop()}_complete(){for(const te of this.observers)try{te.complete?.()}catch(ae){x(ae)}this.observers.clear()}_reportError(te){if(!this.observers.size){this._parent||x(te);return}let ae=!1;for(const le of this.observers){const ue=le.error;ae||=!ue;try{ue?.(te)}catch(_e){x(_e)}}this.observers.clear(),ae&&x(te)}_error(te){this._stopProcedure(),this._reportError(te),this._parent&&this.system._relay(this,this._parent,g(this.id,te))}_stopProcedure(){return this._processingStatus!==K.Running?this:(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new r(this._process.bind(this)),this._processingStatus=K.Stopped,this.system._unregister(this),this)}_send(te){this._processingStatus!==K.Stopped&&this.mailbox.enqueue(te)}send(te){this.system._relay(void 0,this,te)}attachDevTools(){const{devTools:te}=this.options;te&&(typeof te=="function"?te:e.devToolsAdapter)(this)}toJSON(){return{xstate$$type:G,id:this.id}}getPersistedSnapshot(te){return this.logic.getPersistedSnapshot(this._snapshot,te)}[w](){return this}getSnapshot(){return this._snapshot}}function Q(ee,...[te]){return new Y(ee,te)}const J=Q;function ie(ee,te,ae,le,{sendId:ue}){const _e=typeof ue=="function"?ue(ae,le):ue;return[te,{sendId:_e},void 0]}function ne(ee,te){ee.defer(()=>{ee.system.scheduler.cancel(ee.self,te.sendId)})}function re(ee){function te(ae,le){}return te.type="xstate.cancel",te.sendId=ee,te.resolve=ie,te.execute=ne,te}function ge(ee,te,ae,le,{id:ue,systemId:_e,src:Be,input:Xe,syncSnapshot:dt}){const gt=typeof Be=="string"?V(te.machine,Be):Be,Yt=typeof ue=="function"?ue(ae):ue;let nt,ot;return gt&&(ot=typeof Xe=="function"?Xe({context:te.context,event:ae.event,self:ee.self}):Xe,nt=Q(gt,{id:Yt,src:Be,parent:ee.self,syncSnapshot:dt,systemId:_e,input:ot})),[nn(te,{children:{...te.children,[Yt]:nt}}),{id:ue,systemId:_e,actorRef:nt,src:Be,input:ot},void 0]}function De(ee,{actorRef:te}){te&&ee.defer(()=>{te._processingStatus!==K.Stopped&&te.start()})}function he(...[ee,{id:te,systemId:ae,input:le,syncSnapshot:ue=!1}={}]){function _e(Be,Xe){}return _e.type="xstate.spawnChild",_e.id=te,_e.systemId=ae,_e.src=ee,_e.input=le,_e.syncSnapshot=ue,_e.resolve=ge,_e.execute=De,_e}function me(ee,te,ae,le,{actorRef:ue}){const _e=typeof ue=="function"?ue(ae,le):ue,Be=typeof _e=="string"?te.children[_e]:_e;let Xe=te.children;return Be&&(Xe={...Xe},delete Xe[Be.id]),[nn(te,{children:Xe}),Be,void 0]}function Te(ee,te){if(te){if(ee.system._unregister(te),te._processingStatus!==K.Running){ee.stopChild(te);return}ee.defer(()=>{ee.stopChild(te)})}}function Ie(ee){function te(ae,le){}return te.type="xstate.stopChild",te.actorRef=ee,te.resolve=me,te.execute=Te,te}const Ze=Ie;function rt(ee,te,{stateValue:ae}){if(typeof ae=="string"&&fr(ae)){const le=ee.machine.getStateNodeById(ae);return ee._nodes.some(ue=>ue===le)}return ee.matches(ae)}function Rt(ee){function te(){return!1}return te.check=rt,te.stateValue=ee,te}function Qe(ee,{context:te,event:ae},{guards:le}){return!Ir(le[0],te,ae,ee)}function Pt(ee){function te(ae,le){return!1}return te.check=Qe,te.guards=[ee],te}function Ke(ee,{context:te,event:ae},{guards:le}){return le.every(ue=>Ir(ue,te,ae,ee))}function Ge(ee){function te(ae,le){return!1}return te.check=Ke,te.guards=ee,te}function ct(ee,{context:te,event:ae},{guards:le}){return le.some(ue=>Ir(ue,te,ae,ee))}function ut(ee){function te(ae,le){return!1}return te.check=ct,te.guards=ee,te}function Ir(ee,te,ae,le){const{machine:ue}=le,_e=typeof ee=="function",Be=_e?ee:ue.implementations.guards[typeof ee=="string"?ee:ee.type];if(!_e&&!Be)throw new Error(`Guard '${typeof ee=="string"?ee:ee.type}' is not implemented.'.`);if(typeof Be!="function")return Ir(Be,te,ae,le);const Xe={context:te,event:ae},dt=_e||typeof ee=="string"?void 0:"params"in ee?typeof ee.params=="function"?ee.params({context:te,event:ae}):ee.params:void 0;return"check"in Be?Be.check(le,Xe,Be):Be(Xe,dt)}const Ee=ee=>ee.type==="atomic"||ee.type==="final";function Se(ee){return Object.values(ee.states).filter(te=>te.type!=="history")}function it(ee,te){const ae=[];if(te===ee)return ae;let le=ee.parent;for(;le&&le!==te;)ae.push(le),le=le.parent;return ae}function xt(ee){const te=new Set(ee),ae=Fr(te);for(const le of te)if(le.type==="compound"&&(!ae.get(le)||!ae.get(le).length))wa(le).forEach(ue=>te.add(ue));else if(le.type==="parallel"){for(const ue of Se(le))if(ue.type!=="history"&&!te.has(ue)){const _e=wa(ue);for(const Be of _e)te.add(Be)}}for(const le of te){let ue=le.parent;for(;ue;)te.add(ue),ue=ue.parent}return te}function zt(ee,te){const ae=te.get(ee);if(!ae)return{};if(ee.type==="compound"){const ue=ae[0];if(ue){if(Ee(ue))return ue.key}else return{}}const le={};for(const ue of ae)le[ue.key]=zt(ue,te);return le}function Fr(ee){const te=new Map;for(const ae of ee)te.has(ae)||te.set(ae,[]),ae.parent&&(te.has(ae.parent)||te.set(ae.parent,[]),te.get(ae.parent).push(ae));return te}function It(ee,te){const ae=xt(te);return zt(ee,Fr(ae))}function vr(ee,te){return te.type==="compound"?Se(te).some(ae=>ae.type==="final"&&ee.has(ae)):te.type==="parallel"?Se(te).every(ae=>vr(ee,ae)):te.type==="final"}const fr=ee=>ee[0]===i;function un(ee,te){return ee.transitions.get(te)||[...ee.transitions.keys()].filter(ae=>{if(ae===s)return!0;if(!ae.endsWith(".*"))return!1;const le=ae.split("."),ue=te.split(".");for(let _e=0;_ele.length-ae.length).flatMap(ae=>ee.transitions.get(ae))}function ir(ee){const te=ee.config.after;if(!te)return[];const ae=le=>{const ue=d(le,ee.id),_e=ue.type;return ee.entry.push(pd(ue,{id:_e,delay:le})),ee.exit.push(re(_e)),_e};return Object.keys(te).flatMap(le=>{const ue=te[le],_e=typeof ue=="string"?{target:ue}:ue,Be=Number.isNaN(+le)?le:+le,Xe=ae(Be);return D(_e).map(dt=>({...dt,event:Xe,delay:Be}))}).map(le=>{const{delay:ue}=le;return{...vn(ee,le.event,le),delay:ue}})}function vn(ee,te,ae){const le=L(ae.target),ue=ae.reenter??!1,_e=xa(ee,le),Be={...ae,actions:D(ae.actions),guard:ae.guard,target:_e,source:ee,reenter:ue,eventType:te,toJSON:()=>({...Be,source:`#${ee.id}`,target:_e?_e.map(Xe=>`#${Xe.id}`):void 0})};return Be}function xr(ee){const te=new Map;if(ee.config.on)for(const ae of Object.keys(ee.config.on)){if(ae===a)throw new Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');const le=ee.config.on[ae];te.set(ae,F(le).map(ue=>vn(ee,ae,ue)))}if(ee.config.onDone){const ae=`xstate.done.state.${ee.id}`;te.set(ae,F(ee.config.onDone).map(le=>vn(ee,ae,le)))}for(const ae of ee.invoke){if(ae.onDone){const le=`xstate.done.actor.${ae.id}`;te.set(le,F(ae.onDone).map(ue=>vn(ee,le,ue)))}if(ae.onError){const le=`xstate.error.actor.${ae.id}`;te.set(le,F(ae.onError).map(ue=>vn(ee,le,ue)))}if(ae.onSnapshot){const le=`xstate.snapshot.${ae.id}`;te.set(le,F(ae.onSnapshot).map(ue=>vn(ee,le,ue)))}}for(const ae of ee.after){let le=te.get(ae.eventType);le||(le=[],te.set(ae.eventType,le)),le.push(ae)}return te}function ea(ee,te){const ae=typeof te=="string"?ee.states[te]:te?ee.states[te.target]:void 0;if(!ae&&te)throw new Error(`Initial state node "${te}" not found on parent state node #${ee.id}`);const le={source:ee,actions:!te||typeof te=="string"?[]:D(te.actions),eventType:null,reenter:!1,target:ae?[ae]:[],toJSON:()=>({...le,source:`#${ee.id}`,target:ae?[`#${ae.id}`]:[]})};return le}function xa(ee,te){if(te!==void 0)return te.map(ae=>{if(typeof ae!="string")return ae;if(fr(ae))return ee.machine.getStateNodeById(ae);const le=ae[0]===n;if(le&&!ee.parent)return Ol(ee,ae.slice(1));const ue=le?ee.key+ae:ae;if(ee.parent)try{return Ol(ee.parent,ue)}catch(_e){throw new Error(`Invalid transition definition for state node '${ee.id}': +${_e.message}`)}else throw new Error(`Invalid target: "${ae}" is not a valid target from the root node. Did you mean ".${ae}"?`)})}function Gs(ee){const te=L(ee.config.target);return te?{target:te.map(ae=>typeof ae=="string"?Ol(ee.parent,ae):ae)}:ee.parent.initial}function Vo(ee){return ee.type==="history"}function wa(ee){const te=Xs(ee);for(const ae of te)for(const le of it(ae,ee))te.add(le);return te}function Xs(ee){const te=new Set;function ae(le){if(!te.has(le)){if(te.add(le),le.type==="compound")ae(le.initial.target[0]);else if(le.type==="parallel")for(const ue of Se(le))ae(ue)}}return ae(ee),te}function fo(ee,te){if(fr(te))return ee.machine.getStateNodeById(te);if(!ee.states)throw new Error(`Unable to retrieve child state '${te}' from '${ee.id}'; no child states exist.`);const ae=ee.states[te];if(!ae)throw new Error(`Child state '${te}' does not exist on '${ee.id}'`);return ae}function Ol(ee,te){if(typeof te=="string"&&fr(te))try{return ee.machine.getStateNodeById(te)}catch{}const ae=C(te).slice();let le=ee;for(;ae.length;){const ue=ae.shift();if(!ue.length)break;le=fo(le,ue)}return le}function jl(ee,te){if(typeof te=="string"){const ue=ee.states[te];if(!ue)throw new Error(`State '${te}' does not exist on '${ee.id}'`);return[ee,ue]}const ae=Object.keys(te),le=ae.map(ue=>fo(ee,ue)).filter(Boolean);return[ee.machine.root,ee].concat(le,ae.reduce((ue,_e)=>{const Be=fo(ee,_e);if(!Be)return ue;const Xe=jl(Be,te[_e]);return ue.concat(Xe)},[]))}function Bc(ee,te,ae,le){const ue=fo(ee,te).next(ae,le);return!ue||!ue.length?ee.next(ae,le):ue}function Ks(ee,te,ae,le){const ue=Object.keys(te),_e=fo(ee,ue[0]),Be=Ll(_e,te[ue[0]],ae,le);return!Be||!Be.length?ee.next(ae,le):Be}function Rh(ee,te,ae,le){const ue=[];for(const _e of Object.keys(te)){const Be=te[_e];if(!Be)continue;const Xe=fo(ee,_e),dt=Ll(Xe,Be,ae,le);dt&&ue.push(...dt)}return ue.length?ue:ee.next(ae,le)}function Ll(ee,te,ae,le){return typeof te=="string"?Bc(ee,te,ae,le):Object.keys(te).length===1?Ks(ee,te,ae,le):Rh(ee,te,ae,le)}function id(ee){return Object.keys(ee.states).map(te=>ee.states[te]).filter(te=>te.type==="history")}function ta(ee,te){let ae=ee;for(;ae.parent&&ae.parent!==te;)ae=ae.parent;return ae.parent===te}function Fc(ee,te){const ae=new Set(ee),le=new Set(te);for(const ue of ae)if(le.has(ue))return!0;for(const ue of le)if(ae.has(ue))return!0;return!1}function Bl(ee,te,ae){const le=new Set;for(const ue of ee){let _e=!1;const Be=new Set;for(const Xe of le)if(Fc(Wr([ue],te,ae),Wr([Xe],te,ae)))if(ta(ue.source,Xe.source))Be.add(Xe);else{_e=!0;break}if(!_e){for(const Xe of Be)le.delete(Xe);le.add(ue)}}return Array.from(le)}function sd(ee){const[te,...ae]=ee;for(const le of it(te,void 0))if(ae.every(ue=>ta(ue,le)))return le}function Fl(ee,te){if(!ee.target)return[];const ae=new Set;for(const le of ee.target)if(Vo(le))if(te[le.id])for(const ue of te[le.id])ae.add(ue);else for(const ue of Fl(Gs(le),te))ae.add(ue);else ae.add(le);return[...ae]}function ra(ee,te){const ae=Fl(ee,te);if(!ae)return;if(!ee.reenter&&ae.every(ue=>ue===ee.source||ta(ue,ee.source)))return ee.source;const le=sd(ae.concat(ee.source));if(le)return le;if(!ee.reenter)return ee.source.machine.root}function Wr(ee,te,ae){const le=new Set;for(const ue of ee)if(ue.target?.length){const _e=ra(ue,ae);ue.reenter&&ue.source===_e&&le.add(_e);for(const Be of te)ta(Be,_e)&&le.add(Be)}return[...le]}function Vn(ee,te){if(ee.length!==te.size)return!1;for(const ae of ee)if(!te.has(ae))return!1;return!0}function qo(ee,te,ae,le,ue,_e){if(!ee.length)return te;const Be=new Set(te._nodes);let Xe=te.historyValue;const dt=Bl(ee,Be,Xe);let gt=te;ue||([gt,Xe]=ji(gt,le,ae,dt,Be,Xe,_e,ae.actionExecutor)),gt=So(gt,le,ae,dt.flatMap(nt=>nt.actions),_e,void 0),gt=Hc(gt,le,ae,dt,Be,_e,Xe,ue);const Yt=[...Be];gt.status==="done"&&(gt=So(gt,le,ae,Yt.sort((nt,ot)=>ot.order-nt.order).flatMap(nt=>nt.exit),_e,void 0));try{return Xe===te.historyValue&&Vn(te._nodes,Be)?gt:nn(gt,{_nodes:Yt,historyValue:Xe})}catch(nt){throw nt}}function Zs(ee,te,ae,le,ue){if(le.output===void 0)return;const _e=h(ue.id,ue.output!==void 0&&ue.parent?N(ue.output,ee.context,te,ae.self):void 0);return N(le.output,ee.context,_e,ae.self)}function Hc(ee,te,ae,le,ue,_e,Be,Xe){let dt=ee;const gt=new Set,Yt=new Set;Nh(le,Be,Yt,gt),Xe&&Yt.add(ee.machine.root);const nt=new Set;for(const ot of[...gt].sort((wt,Ct)=>wt.order-Ct.order)){ue.add(ot);const wt=[];wt.push(...ot.entry);for(const Ct of ot.invoke)wt.push(he(Ct.src,{...Ct,syncSnapshot:!!Ct.onSnapshot}));if(Yt.has(ot)){const Ct=ot.initial.actions;wt.push(...Ct)}if(dt=So(dt,te,ae,wt,_e,ot.invoke.map(Ct=>Ct.id)),ot.type==="final"){const Ct=ot.parent;let Gt=Ct?.type==="parallel"?Ct:Ct?.parent,Wo=Gt||ot;for(Ct?.type==="compound"&&_e.push(h(Ct.id,ot.output!==void 0?N(ot.output,dt.context,te,ae.self):void 0));Gt?.type==="parallel"&&!nt.has(Gt)&&vr(ue,Gt);)nt.add(Gt),_e.push(h(Gt.id)),Wo=Gt,Gt=Gt.parent;if(Gt)continue;dt=nn(dt,{status:"done",output:Zs(dt,te,ae,dt.machine.root,Wo)})}}return dt}function Nh(ee,te,ae,le){for(const ue of ee){const _e=ra(ue,te);for(const Xe of ue.target||[])!Vo(Xe)&&(ue.source!==Xe||ue.source!==_e||ue.reenter)&&(le.add(Xe),ae.add(Xe)),Za(Xe,te,ae,le);const Be=Fl(ue,te);for(const Xe of Be){const dt=it(Xe,_e);_e?.type==="parallel"&&dt.push(_e),Oi(le,te,ae,dt,!ue.source.parent&&ue.reenter?void 0:_e)}}}function Za(ee,te,ae,le){if(Vo(ee))if(te[ee.id]){const ue=te[ee.id];for(const _e of ue)le.add(_e),Za(_e,te,ae,le);for(const _e of ue)Qs(_e,ee.parent,le,te,ae)}else{const ue=Gs(ee);for(const _e of ue.target)le.add(_e),ue===ee.parent?.initial&&ae.add(ee.parent),Za(_e,te,ae,le);for(const _e of ue.target)Qs(_e,ee.parent,le,te,ae)}else if(ee.type==="compound"){const[ue]=ee.initial.target;Vo(ue)||(le.add(ue),ae.add(ue)),Za(ue,te,ae,le),Qs(ue,ee,le,te,ae)}else if(ee.type==="parallel")for(const ue of Se(ee).filter(_e=>!Vo(_e)))[...le].some(_e=>ta(_e,ue))||(Vo(ue)||(le.add(ue),ae.add(ue)),Za(ue,te,ae,le))}function Oi(ee,te,ae,le,ue){for(const _e of le)if((!ue||ta(_e,ue))&&ee.add(_e),_e.type==="parallel")for(const Be of Se(_e).filter(Xe=>!Vo(Xe)))[...ee].some(Xe=>ta(Xe,Be))||(ee.add(Be),Za(Be,te,ae,ee))}function Qs(ee,te,ae,le,ue){Oi(ae,le,ue,it(ee,te))}function ji(ee,te,ae,le,ue,_e,Be,Xe){let dt=ee;const gt=Wr(le,ue,_e);gt.sort((nt,ot)=>ot.order-nt.order);let Yt;for(const nt of gt)for(const ot of id(nt)){let wt;ot.history==="deep"?wt=Ct=>Ee(Ct)&&ta(Ct,nt):wt=Ct=>Ct.parent===nt,Yt??={..._e},Yt[ot.id]=Array.from(ue).filter(wt)}for(const nt of gt)dt=So(dt,te,ae,[...nt.exit,...nt.invoke.map(ot=>Ie(ot.id))],Be,void 0),ue.delete(nt);return[dt,Yt||_e]}function Li(ee,te){return ee.implementations.actions[te]}function ka(ee,te,ae,le,ue,_e){const{machine:Be}=ee;let Xe=ee;for(const dt of le){const gt=typeof dt=="function",Yt=gt?dt:Li(Be,typeof dt=="string"?dt:dt.type),nt={context:Xe.context,event:te,self:ae.self,system:ae.system},ot=gt||typeof dt=="string"?void 0:"params"in dt?typeof dt.params=="function"?dt.params({context:Xe.context,event:te}):dt.params:void 0;if(!Yt||!("resolve"in Yt)){ae.actionExecutor({type:typeof dt=="string"?dt:typeof dt=="object"?dt.type:dt.name||"(anonymous)",info:nt,params:ot,exec:Yt});continue}const wt=Yt,[Ct,Gt,Wo]=wt.resolve(ae,Xe,nt,ot,Yt,ue);Xe=Ct,"retryResolve"in wt&&_e?.push([wt,Gt]),"execute"in wt&&ae.actionExecutor({type:wt.type,info:nt,params:Gt,exec:wt.execute.bind(null,ae,Gt)}),Wo&&(Xe=ka(Xe,te,ae,Wo,ue,_e))}return Xe}function So(ee,te,ae,le,ue,_e){const Be=_e?[]:void 0,Xe=ka(ee,te,ae,le,{internalQueue:ue,deferredActorIds:_e},Be);return Be?.forEach(([dt,gt])=>{dt.retryResolve(ae,Xe,gt)}),Xe}function rn(ee,te,ae,le){let ue=ee;const _e=[];function Be(gt,Yt,nt){ae.system._sendInspectionEvent({type:"@xstate.microstep",actorRef:ae.self,event:Yt,snapshot:gt,_transitions:nt}),_e.push(gt)}if(te.type===u)return ue=nn(Vc(ue,te,ae),{status:"stopped"}),Be(ue,te,[]),{snapshot:ue,microstates:_e};let Xe=te;if(Xe.type!==l){const gt=Xe,Yt=O(gt),nt=qc(gt,ue);if(Yt&&!nt.length)return ue=nn(ee,{status:"error",error:gt.error}),Be(ue,gt,[]),{snapshot:ue,microstates:_e};ue=qo(nt,ee,ae,Xe,!1,le),Be(ue,gt,nt)}let dt=!0;for(;ue.status==="active";){let gt=dt?Qa(ue,Xe):[];const Yt=gt.length?ue:void 0;if(!gt.length){if(!le.length)break;Xe=le.shift(),gt=qc(Xe,ue)}ue=qo(gt,ue,ae,Xe,!1,le),dt=ue!==Yt,Be(ue,Xe,gt)}return ue.status!=="active"&&Vc(ue,Xe,ae),{snapshot:ue,microstates:_e}}function Vc(ee,te,ae){return So(ee,te,ae,Object.values(ee.children).map(le=>Ie(le)),[],void 0)}function qc(ee,te){return te.machine.getTransitionData(te,ee)}function Qa(ee,te){const ae=new Set,le=ee._nodes.filter(Ee);for(const ue of le)e:for(const _e of[ue].concat(it(ue,void 0)))if(_e.always){for(const Be of _e.always)if(Be.guard===void 0||Ir(Be.guard,ee.context,te,ee)){ae.add(Be);break e}}return Bl(Array.from(ae),new Set(ee._nodes),ee.historyValue)}function Bi(ee,te){const ae=xt(jl(ee,te));return It(ee,[...ae])}function ld(ee){return!!ee&&typeof ee=="object"&&"machine"in ee&&"value"in ee}const Hl=function(ee){return k(ee,this.value)},cd=function(ee){return this.tags.has(ee)},Dh=function(ee){const te=this.machine.getTransitionData(this,ee);return!!te?.length&&te.some(ae=>ae.target!==void 0||ae.actions.length)},Vl=function(){const{_nodes:ee,tags:te,machine:ae,getMeta:le,toJSON:ue,can:_e,hasTag:Be,matches:Xe,...dt}=this;return{...dt,tags:Array.from(te)}},ql=function(){return this._nodes.reduce((ee,te)=>(te.meta!==void 0&&(ee[te.id]=te.meta),ee),{})};function Uo(ee,te){return{status:ee.status,output:ee.output,error:ee.error,machine:te,context:ee.context,_nodes:ee._nodes,value:It(te.root,ee._nodes),tags:new Set(ee._nodes.flatMap(ae=>ae.tags)),children:ee.children,historyValue:ee.historyValue||{},matches:Hl,hasTag:cd,can:Dh,getMeta:ql,toJSON:Vl}}function nn(ee,te={}){return Uo({...ee,...te},ee.machine)}function ud(ee){if(typeof ee!="object"||ee===null)return{};const te={};for(const ae in ee){const le=ee[ae];Array.isArray(le)&&(te[ae]=le.map(ue=>({id:ue.id})))}return te}function $h(ee,te){const{_nodes:ae,tags:le,machine:ue,children:_e,context:Be,can:Xe,hasTag:dt,matches:gt,getMeta:Yt,toJSON:nt,...ot}=ee,wt={};for(const Ct in _e){const Gt=_e[Ct];wt[Ct]={snapshot:Gt.getPersistedSnapshot(te),src:Gt.src,systemId:Gt.systemId,syncSnapshot:Gt._syncSnapshot}}return{...ot,context:Fi(Be),children:wt,historyValue:ud(ot.historyValue)}}function Fi(ee){let te;for(const ae in ee){const le=ee[ae];if(le&&typeof le=="object")if("sessionId"in le&&"send"in le&&"ref"in le)te??=Array.isArray(ee)?ee.slice():{...ee},te[ae]={xstate$$type:G,id:le.id};else{const ue=Fi(le);ue!==le&&(te??=Array.isArray(ee)?ee.slice():{...ee},te[ae]=ue)}}return te??ee}function dd(ee,te,ae,le,{event:ue,id:_e,delay:Be},{internalQueue:Xe}){const dt=te.machine.implementations.delays;if(typeof ue=="string")throw new Error(`Only event objects may be used with raise; use raise({ type: "${ue}" }) instead`);const gt=typeof ue=="function"?ue(ae,le):ue;let Yt;if(typeof Be=="string"){const nt=dt&&dt[Be];Yt=typeof nt=="function"?nt(ae,le):nt}else Yt=typeof Be=="function"?Be(ae,le):Be;return typeof Yt!="number"&&Xe.push(gt),[te,{event:gt,id:_e,delay:Yt},void 0]}function Ul(ee,te){const{event:ae,delay:le,id:ue}=te;if(typeof le=="number"){ee.defer(()=>{const _e=ee.self;ee.system.scheduler.schedule(_e,_e,ae,le,ue)});return}}function pd(ee,te){function ae(le,ue){}return ae.type="xstate.raise",ae.event=ee,ae.id=te?.id,ae.delay=te?.delay,ae.resolve=dd,ae.execute=Ul,ae}return _t.$$ACTOR_TYPE=G,_t.Actor=Y,_t.NULL_EVENT=a,_t.ProcessingStatus=K,_t.STATE_DELIMITER=n,_t.XSTATE_ERROR=c,_t.XSTATE_STOP=u,_t.and=Ge,_t.cancel=re,_t.cloneMachineSnapshot=nn,_t.createActor=Q,_t.createErrorActorEvent=g,_t.createInitEvent=b,_t.createInvokeId=P,_t.createMachineSnapshot=Uo,_t.evaluateGuard=Ir,_t.formatInitialTransition=ea,_t.formatTransition=vn,_t.formatTransitions=xr,_t.getAllOwnEventDescriptors=I,_t.getAllStateNodes=xt,_t.getCandidates=un,_t.getDelayedTransitions=ir,_t.getInitialStateNodes=Xs,_t.getPersistedSnapshot=$h,_t.getStateNodeByPath=Ol,_t.getStateNodes=jl,_t.interpret=J,_t.isInFinalState=vr,_t.isMachineSnapshot=ld,_t.isStateId=fr,_t.macrostep=rn,_t.mapValues=A,_t.matchesState=k,_t.microstep=qo,_t.not=Pt,_t.or=ut,_t.pathToStateValue=T,_t.raise=pd,_t.resolveActionsAndContext=So,_t.resolveReferencedActor=V,_t.resolveStateValue=Bi,_t.spawnChild=he,_t.stateIn=Rt,_t.stop=Ze,_t.stopChild=Ie,_t.toArray=D,_t.toObserver=U,_t.toStatePath=C,_t.toTransitionConfigArray=F,_t.transitionNode=Ll,_t}var dne;function pne(){if(dne)return CR;dne=1;var e=j4();function r(a,{machine:i,context:s},l,c){const u=(d,h)=>{if(typeof d=="string"){const f=e.resolveReferencedActor(i,d);if(!f)throw new Error(`Actor logic '${d}' not implemented in machine '${i.id}'`);const g=e.createActor(f,{id:h?.id,parent:a.self,syncSnapshot:h?.syncSnapshot,input:typeof h?.input=="function"?h.input({context:s,event:l,self:a.self}):h?.input,src:d,systemId:h?.systemId});return c[g.id]=g,g}else return e.createActor(d,{id:h?.id,parent:a.self,syncSnapshot:h?.syncSnapshot,input:h?.input,src:d,systemId:h?.systemId})};return(d,h)=>{const f=u(d,h);return c[f.id]=f,a.defer(()=>{f._processingStatus!==e.ProcessingStatus.Stopped&&f.start()}),f}}function n(a,i,s,l,{assignment:c}){if(!i.context)throw new Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");const u={},d={context:i.context,event:s.event,spawn:r(a,i,s.event,u),self:a.self,system:a.system};let h={};if(typeof c=="function")h=c(d,l);else for(const g of Object.keys(c)){const b=c[g];h[g]=typeof b=="function"?b(d,l):b}const f=Object.assign({},i.context,h);return[e.cloneMachineSnapshot(i,{context:f,children:Object.keys(u).length?{...i.children,...u}:i.children}),void 0,void 0]}function o(a){function i(s,l){}return i.type="xstate.assign",i.assignment=a,i.resolve=n,i}return CR.assign=o,CR}var Ac={},hne;function jtt(){if(hne)return Ac;hne=1;var e=j4(),r=pne();function n(k,C,_,T,{event:A}){const R=typeof A=="function"?A(_,T):A;return[C,{event:R},void 0]}function o(k,{event:C}){k.defer(()=>k.emit(C))}function a(k){function C(_,T){}return C.type="xstate.emit",C.event=k,C.resolve=n,C.execute=o,C}let i=(function(k){return k.Parent="#_parent",k.Internal="#_internal",k})({});function s(k,C,_,T,{to:A,event:R,id:D,delay:N},M){const O=C.machine.implementations.delays;if(typeof R=="string")throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: "${R}" }) instead`);const F=typeof R=="function"?R(_,T):R;let L;if(typeof N=="string"){const V=O&&O[N];L=typeof V=="function"?V(_,T):V}else L=typeof N=="function"?N(_,T):N;const U=typeof A=="function"?A(_,T):A;let P;if(typeof U=="string"){if(U===i.Parent?P=k.self._parent:U===i.Internal?P=k.self:U.startsWith("#_")?P=C.children[U.slice(2)]:P=M.deferredActorIds?.includes(U)?U:C.children[U],!P)throw new Error(`Unable to send event to actor '${U}' from machine '${C.machine.id}'.`)}else P=U||k.self;return[C,{to:P,targetId:typeof U=="string"?U:void 0,event:F,id:D,delay:L},void 0]}function l(k,C,_){typeof _.to=="string"&&(_.to=C.children[_.to])}function c(k,C){k.defer(()=>{const{to:_,event:T,delay:A,id:R}=C;if(typeof A=="number"){k.system.scheduler.schedule(k.self,_,T,A,R);return}k.system._relay(k.self,_,T.type===e.XSTATE_ERROR?e.createErrorActorEvent(k.self.id,T.data):T)})}function u(k,C,_){function T(A,R){}return T.type="xstate.sendTo",T.to=k,T.event=C,T.id=_?.id,T.delay=_?.delay,T.resolve=s,T.retryResolve=l,T.execute=c,T}function d(k,C){return u(i.Parent,k,C)}function h(k,C){return u(k,({event:_})=>_,C)}function f(k,C,_,T,{collect:A}){const R=[],D=function(N){R.push(N)};return D.assign=(...N)=>{R.push(r.assign(...N))},D.cancel=(...N)=>{R.push(e.cancel(...N))},D.raise=(...N)=>{R.push(e.raise(...N))},D.sendTo=(...N)=>{R.push(u(...N))},D.sendParent=(...N)=>{R.push(d(...N))},D.spawnChild=(...N)=>{R.push(e.spawnChild(...N))},D.stopChild=(...N)=>{R.push(e.stopChild(...N))},D.emit=(...N)=>{R.push(a(...N))},A({context:_.context,event:_.event,enqueue:D,check:N=>e.evaluateGuard(N,C.context,_.event,C),self:k.self,system:k.system},T),[C,void 0,R]}function g(k){function C(_,T){}return C.type="xstate.enqueueActions",C.collect=k,C.resolve=f,C}function b(k,C,_,T,{value:A,label:R}){return[C,{value:typeof A=="function"?A(_,T):A,label:R},void 0]}function x({logger:k},{value:C,label:_}){_?k(_,C):k(C)}function w(k=({context:_,event:T})=>({context:_,event:T}),C){function _(T,A){}return _.type="xstate.log",_.value=k,_.label=C,_.resolve=b,_.execute=x,_}return Ac.SpecialTargets=i,Ac.emit=a,Ac.enqueueActions=g,Ac.forwardTo=h,Ac.log=w,Ac.sendParent=d,Ac.sendTo=u,Ac}var fne;function Ltt(){if(fne)return Qo;fne=1,Object.defineProperty(Qo,"__esModule",{value:!0});var e=pne(),r=j4(),n=jtt();return TR(),Qo.assign=e.assign,Qo.cancel=r.cancel,Qo.raise=r.raise,Qo.spawnChild=r.spawnChild,Qo.stop=r.stop,Qo.stopChild=r.stopChild,Qo.emit=n.emit,Qo.enqueueActions=n.enqueueActions,Qo.forwardTo=n.forwardTo,Qo.log=n.log,Qo.sendParent=n.sendParent,Qo.sendTo=n.sendTo,Qo}var ar=Ltt();const Btt=mt.createStateConfig({on:{"xyflow.init":{actions:ar.assign(({context:e,event:r})=>({initialized:{...e.initialized,xyflow:!0},xyflow:r.instance})),target:"isReady"},"update.view":{actions:ar.assign(({context:e,event:r})=>({initialized:{...e.initialized,xydata:!0},view:r.view,xynodes:r.xynodes,xyedges:r.xyedges})),target:"isReady"}}}),Ftt=mt.createStateConfig({always:[{guard:"isReady",actions:[ko.fitDiagram({duration:0}),ar.assign(({context:e})=>({navigationHistory:{currentIndex:0,history:[{viewId:e.view.id,fromNode:null,viewport:{...e.xyflow.getViewport()}}]}})),Zy(),Stt()],target:"ready"},{target:"initializing"}]}),Htt=mt.createStateConfig({id:"navigating",entry:[one(),nne(),I4(),Qy(),mtt.navigateTo()],on:{"update.view":{actions:ar.enqueueActions(({enqueue:e,context:r,event:n})=>{e(xR());const{fromNode:o,toNode:a}=ene(r,n);e(o&&a?ko.alignNodeFromToAfterNavigate({fromNode:o.id,toPosition:{x:a.data.x,y:a.data.y}}):ko.setViewportCenter()),e.assign(Dre),e(kR()),e(Zy()),e(Km({delay:25}))}),target:"#idle"}}});var Gu={},mne;function Vtt(){if(mne)return Gu;mne=1,Object.defineProperty(Gu,"__esModule",{value:!0});var e=j4();return TR(),Gu.and=e.and,Gu.evaluateGuard=e.evaluateGuard,Gu.not=e.not,Gu.or=e.or,Gu.stateIn=e.stateIn,Gu}var Qm=Vtt();const AR="#navigating",qtt=mt.createStateConfig({id:"idle",on:{"xyflow.nodeClick":[{guard:Qm.and(["enabled: FocusMode","click: node has connections",Qm.or(["click: same node","click: selected node"])]),actions:[Gy(),wR(),Qp()],target:"focused"},{guard:Qm.and(["enabled: Readonly","enabled: ElementDetails","click: node has modelFqn",Qm.or(["click: same node","click: selected node"])]),actions:[Gy(),O4(),SR(),Qp()]},{actions:[Gy(),O4(),Qp()]}],"xyflow.paneClick":{actions:[Xy(),_R()]},"xyflow.paneDblClick":{actions:[Xy(),ko.fitDiagram(),ar.enqueueActions(({context:e,enqueue:r})=>{r(tne({view:e.view.id}))})]},"focus.node":{guard:"enabled: FocusMode",actions:wR(),target:"focused"},"xyflow.edgeClick":{guard:Qm.and(["enabled: Readonly","is dynamic view","enabled: DynamicViewWalkthrough","click: selected edge"]),actions:[ar.raise(({event:e})=>({type:"walkthrough.start",stepId:e.edge.id})),ER()]}}}),Utt=mt.createStateConfig({entry:[P4(),ar.assign(e=>({viewportBeforeFocus:{...e.context.viewport}})),O4(),ar.spawnChild("hotkeyActorLogic",{id:"hotkey"}),ko.fitFocusedBounds()],exit:ar.enqueueActions(({enqueue:e,context:r})=>{e.stopChild("hotkey"),r.viewportBeforeFocus?e(ko.setViewport({viewport:r.viewportBeforeFocus})):e.raise({type:"fitDiagram"},{id:"fitDiagram",delay:20}),e(z4()),e.assign({viewportBeforeFocus:null,focusedNode:null})}),on:{"xyflow.nodeClick":[{guard:Qm.and(["click: focused node","click: node has modelFqn"]),actions:[SR(),Qp()]},{guard:"click: focused node",actions:Qp(),target:"#idle"},{actions:[Gy(),ar.raise(({event:e})=>({type:"focus.node",nodeId:e.node.id})),Qp()]}],"focus.node":{actions:[wR(),P4(),O4(),ko.fitFocusedBounds()]},"key.esc":{target:"idle"},"xyflow.paneClick":{actions:[Xy(),_R()],target:"idle"},"notations.unhighlight":{actions:P4()},"tag.unhighlight":{actions:P4()}}}),Wtt=mt.createStateConfig({entry:[ar.spawnChild("hotkeyActorLogic",{id:"hotkey"}),ar.assign({viewportBeforeFocus:({context:e})=>e.viewport,activeWalkthrough:({context:e,event:r})=>{Tt(r,"walkthrough.start");const n=r.stepId??Ff(e.xyedges).id;return{stepId:n,parallelPrefix:aE(n)}}}),Ky(),ko.fitFocusedBounds(),Ctt()],exit:ar.enqueueActions(({enqueue:e,context:r})=>{e.stopChild("hotkey"),r.viewportBeforeFocus?e(ko.setViewport({viewport:r.viewportBeforeFocus})):e(Km({delay:10})),r.dynamicViewVariant==="sequence"&&r.activeWalkthrough?.parallelPrefix&&e.assign({xynodes:r.xynodes.map(n=>n.type==="seq-parallel"?cr.setData(n,{color:R4.default}):n)}),e(z4()),e.assign({activeWalkthrough:null,viewportBeforeFocus:null}),e(Ett())}),on:{"key.esc":{target:"idle"},"key.arrow.left":{actions:ar.raise({type:"walkthrough.step",direction:"previous"})},"key.arrow.right":{actions:ar.raise({type:"walkthrough.step",direction:"next"})},"walkthrough.step":{actions:[ar.assign(({context:e,event:r})=>{const{stepId:n}=e.activeWalkthrough,o=e.xyedges.findIndex(s=>s.id===n),a=us(r.direction==="next"?o+1:o-1,{min:0,max:e.xyedges.length-1});if(a===o)return{};const i=e.xyedges[a].id;return{activeWalkthrough:{stepId:i,parallelPrefix:aE(i)}}}),Ky(),ko.fitFocusedBounds(),rne()]},"xyflow.edgeClick":{actions:[ar.assign(({event:e,context:r})=>!q1(e.edge.id)||e.edge.id===r.activeWalkthrough?.stepId?{}:{activeWalkthrough:{stepId:e.edge.id,parallelPrefix:aE(e.edge.id)}}),Ky(),ko.fitFocusedBounds(),ER(),rne()]},"notations.unhighlight":{actions:Ky()},"tag.unhighlight":{actions:Ky()},"walkthrough.end":{target:"idle"},"xyflow.paneDblClick":{target:"idle"},"update.view":{guard:"is another view",actions:ar.raise(({event:e})=>e,{delay:50}),target:"idle"}}}),Ytt=mt.createStateConfig({initial:"idle",on:{"navigate.to":{guard:"is another view",actions:ar.assign({lastOnNavigate:({context:e,event:r})=>({fromView:e.view.id,toView:r.viewId,fromNode:r.fromNode??null})}),target:AR},"navigate.back":{guard:({context:e})=>e.navigationHistory.currentIndex>0,actions:ar.assign(Cet),target:AR},"navigate.forward":{guard:({context:e})=>e.navigationHistory.currentIndexe.features.enableFitView&&!e.viewportChangedManually,actions:[Qy(),Km({delay:200})]},"open.elementDetails":{guard:"enabled: ElementDetails",actions:SR()},"open.relationshipsBrowser":{actions:ar.sendTo(({system:e})=>jn(e).overlaysActorRef,({context:e,event:r,self:n})=>({type:"open.relationshipsBrowser",subject:r.fqn,viewId:e.view.id,scope:"view",closeable:!0,enableChangeScope:!0,enableSelectSubject:!0,openSourceActor:n}))},"open.relationshipDetails":{actions:ar.sendTo(({system:e})=>jn(e).overlaysActorRef,({context:e,event:r,self:n})=>({type:"open.relationshipDetails",viewId:e.view.id,openSourceActor:n,...r.params}))},"open.source":{actions:tne()},"walkthrough.start":{guard:"is dynamic view",target:".walkthrough"},"toggle.feature":{actions:[Dtt(),Zy()]},"xyflow.nodeMouseEnter":{actions:ktt()},"xyflow.nodeMouseLeave":{actions:_tt()},"xyflow.edgeMouseEnter":{actions:ztt()},"xyflow.edgeMouseLeave":{actions:Itt()},"xyflow.edgeDoubleClick":{guard:"not readonly",actions:gtt()},"notations.highlight":{actions:Rtt()},"notations.unhighlight":{actions:z4()},"tag.highlight":{actions:Ntt()},"tag.unhighlight":{actions:z4()},"open.search":{guard:"enabled: Search",actions:ar.sendTo(({system:e})=>jn(e).searchActorRef,({event:e})=>({type:"open",search:e.search}))}},exit:[Qy()],states:{idle:qtt,focused:Utt,walkthrough:Wtt}}),RR="likec4:diagram:toggledFeatures",gne={read(){try{let e=sessionStorage.getItem(RR);return e?JSON.parse(e):null}catch(e){return console.error(`Error reading fromStorage ${RR}:`,e),null}},write(e){return sessionStorage.setItem(RR,JSON.stringify(FNe(e,Hq))),e}},Gtt=mt.createMachine({initial:"initializing",context:({input:e})=>({...e,xyedges:[],xynodes:[],features:{...nX},toggledFeatures:gne.read()??{enableReadOnly:!0,enableCompareWithLatest:!1},initialized:{xydata:!1,xyflow:!1},viewportChangedManually:!1,lastOnNavigate:null,lastClickedNode:null,focusedNode:null,activeElementDetails:null,viewportBeforeFocus:null,viewportOnManualLayout:null,viewportOnAutoLayout:null,navigationHistory:{currentIndex:0,history:[]},viewport:{x:0,y:0,zoom:1},xyflow:null,dynamicViewVariant:e.dynamicViewVariant??(e.view._type==="dynamic"?e.view.variant:"diagram")??"diagram",activeWalkthrough:null}),states:{initializing:Btt,isReady:Ftt,ready:Ytt,navigating:Htt},on:{"xyflow.paneClick":{actions:[Xy(),_R()]},"xyflow.nodeClick":{actions:[Gy(),Qp()]},"xyflow.edgeClick":{actions:[Xy(),ER()]},"xyflow.applyNodeChanges":{actions:ar.assign({xynodes:({context:e,event:r})=>$3(r.changes,e.xynodes)})},"xyflow.applyEdgeChanges":{actions:ar.assign({xyedges:({context:e,event:r})=>M3(r.changes,e.xyedges)})},"xyflow.viewportMoved":{actions:ar.assign({viewportChangedManually:(({event:e})=>e.manually),viewport:(({event:e})=>e.viewport)})},fitDiagram:{guard:"enabled: FitView",actions:ko.fitDiagram()},"update.nodeData":{actions:ar.assign(Aet)},"update.edgeData":{actions:ar.assign(Ret)},"update.view":{actions:[ar.assign(Dre),Ott()]},"update.inputs":{actions:xtt()},"update.features":{actions:[vtt(),Mtt(),Ptt()]},"switch.dynamicViewVariant":{actions:wtt()},"emit.onChange":{actions:ytt()},"emit.onLayoutTypeChange":{actions:btt()}},exit:[I4(),Qy(),ar.stopChild("hotkey"),ar.stopChild("overlays"),ar.stopChild("search"),ar.assign({xyflow:null,xystore:null,xyedges:[],xynodes:[],initialized:{xydata:!1,xyflow:!1}})]}),Xtt=Gtt;function Ktt({view:e,zoomable:r,pannable:n,nodesDraggable:o,nodesSelectable:a,fitViewPadding:i,where:s,children:l,dynamicViewVariant:c}){const u=Ar(),d=KS(Xtt,{id:"diagram",systemId:"diagram",input:{xystore:u,view:e,zoomable:r,pannable:n,fitViewPadding:i,nodesDraggable:o,nodesSelectable:a,dynamicViewVariant:c}}),[h,f]=E.useState(()=>Nre(d));E.useEffect(()=>{f(b=>b.actor===d?b:Nre(d))},[d]),h.actor!==d&&console.warn("DiagramApi instance changed, this should not happen during the lifetime of the actor");const g=_r();return E.useEffect(()=>d.send({type:"update.features",features:g}),[g,d]),E.useEffect(()=>d.send({type:"update.inputs",inputs:{zoomable:r,pannable:n,fitViewPadding:i,nodesDraggable:o,nodesSelectable:a}}),[r,n,i,d,o,a]),qp(()=>{c&&d.send({type:"switch.dynamicViewVariant",variant:c})},[c,d]),console.debug("Render DiagramActorProvider for view",e.id),y.jsxs(BBe,{value:h,children:[y.jsxs(rX,{children:[y.jsx(trt,{view:e,where:s,actorRef:d}),y.jsx(Jtt,{actorRef:d,children:l})]}),y.jsx(rrt,{})]})}const Ztt=({context:e})=>{let r=e.toggledFeatures;const n=e.view.drifts!=null,o=e.features.enableCompareWithLatest&&(r.enableCompareWithLatest??!1)&&z9(e.activeWalkthrough)&&n,a=e.features.enableReadOnly||r.enableReadOnly||!!e.activeWalkthrough||e.dynamicViewVariant==="sequence"&&e.view._type==="dynamic"||o&&e.view._layout==="auto";return(r.enableReadOnly!==a||r.enableCompareWithLatest!==o)&&(r={...r,enableCompareWithLatest:o,enableReadOnly:a}),{toggledFeatures:r,viewId:e.view.id}},Qtt=(e,r)=>e.viewId===r.viewId&&an(e.toggledFeatures,r.toggledFeatures);function Jtt({children:e,actorRef:r}){const{viewId:n,toggledFeatures:o}=fn(r,Ztt,Qtt);qp(()=>{gne.write(o)},[o]);const a=Ko().findView(n);return y.jsx(ES.Provider,{value:a,children:y.jsx(Np,{overrides:o,children:e})})}const ert=e=>e.context.dynamicViewVariant;function trt({view:e,where:r,actorRef:n}){const o=fn(n,ert);return qE(()=>{n.send({type:"update.view",...ket({view:e,where:r,dynamicViewVariant:o})})},[e,r,o,n]),null}const rrt=E.memo(()=>{const e=Qt(),{onNavigateTo:r,onOpenSource:n,onChange:o,onLayoutTypeChange:a,handlersRef:i}=Fm();Fa("openSource",({params:l})=>n?.(l)),Fa("navigateTo",({viewId:l})=>r?.(l)),Fa("onChange",({change:l})=>o?.({change:l})),Fa("onLayoutTypeChange",({layoutType:l})=>{a?.(l)});const s=E.useRef(!1);return E.useEffect(()=>{if(s.current)return;let l=e.actor.on("initialized",({instance:c})=>{try{i.current.onInitialized?.({diagram:e,xyflow:c})}catch(u){console.error(u)}finally{s.current=!0,l?.unsubscribe(),l=null}});return()=>{l?.unsubscribe()}},[e]),null}),L4={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:e=>e>=255?255:e<0?0:e,g:e=>e>=255?255:e<0?0:e,b:e=>e>=255?255:e<0?0:e,h:e=>e%360,s:e=>e>=100?100:e<0?0:e,l:e=>e>=100?100:e<0?0:e,a:e=>e>=1?1:e<0?0:e},toLinear:e=>{const r=e/255;return e>.03928?Math.pow((r+.055)/1.055,2.4):r/12.92},hue2rgb:(e,r,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(r-e)*6*n:n<1/2?r:n<2/3?e+(r-e)*(2/3-n)*6:e),hsl2rgb:({h:e,s:r,l:n},o)=>{if(!r)return n*2.55;e/=360,r/=100,n/=100;const a=n<.5?n*(1+r):n+r-n*r,i=2*n-a;switch(o){case"r":return L4.hue2rgb(i,a,e+1/3)*255;case"g":return L4.hue2rgb(i,a,e)*255;case"b":return L4.hue2rgb(i,a,e-1/3)*255}},rgb2hsl:({r:e,g:r,b:n},o)=>{e/=255,r/=255,n/=255;const a=Math.max(e,r,n),i=Math.min(e,r,n),s=(a+i)/2;if(o==="l")return s*100;if(a===i)return 0;const l=a-i,c=s>.5?l/(2-a-i):l/(a+i);if(o==="s")return c*100;switch(a){case e:return((r-n)/l+(rr>n?Math.min(r,Math.max(n,e)):Math.min(n,Math.max(r,e)),round:e=>Math.round(e*1e10)/1e10},ort={dec2hex:e=>{const r=Math.round(e).toString(16);return r.length>1?r:`0${r}`}},Bt={channel:L4,lang:nrt,unit:ort},Xu={};for(let e=0;e<=255;e++)Xu[e]=Bt.unit.dec2hex(e);const Lo={ALL:0,RGB:1,HSL:2};class art{constructor(){this.type=Lo.ALL}get(){return this.type}set(r){if(this.type&&this.type!==r)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=r}reset(){this.type=Lo.ALL}is(r){return this.type===r}}class irt{constructor(r,n){this.color=n,this.changed=!1,this.data=r,this.type=new art}set(r,n){return this.color=n,this.changed=!1,this.data=r,this.type.type=Lo.ALL,this}_ensureHSL(){const r=this.data,{h:n,s:o,l:a}=r;n===void 0&&(r.h=Bt.channel.rgb2hsl(r,"h")),o===void 0&&(r.s=Bt.channel.rgb2hsl(r,"s")),a===void 0&&(r.l=Bt.channel.rgb2hsl(r,"l"))}_ensureRGB(){const r=this.data,{r:n,g:o,b:a}=r;n===void 0&&(r.r=Bt.channel.hsl2rgb(r,"r")),o===void 0&&(r.g=Bt.channel.hsl2rgb(r,"g")),a===void 0&&(r.b=Bt.channel.hsl2rgb(r,"b"))}get r(){const r=this.data,n=r.r;return!this.type.is(Lo.HSL)&&n!==void 0?n:(this._ensureHSL(),Bt.channel.hsl2rgb(r,"r"))}get g(){const r=this.data,n=r.g;return!this.type.is(Lo.HSL)&&n!==void 0?n:(this._ensureHSL(),Bt.channel.hsl2rgb(r,"g"))}get b(){const r=this.data,n=r.b;return!this.type.is(Lo.HSL)&&n!==void 0?n:(this._ensureHSL(),Bt.channel.hsl2rgb(r,"b"))}get h(){const r=this.data,n=r.h;return!this.type.is(Lo.RGB)&&n!==void 0?n:(this._ensureRGB(),Bt.channel.rgb2hsl(r,"h"))}get s(){const r=this.data,n=r.s;return!this.type.is(Lo.RGB)&&n!==void 0?n:(this._ensureRGB(),Bt.channel.rgb2hsl(r,"s"))}get l(){const r=this.data,n=r.l;return!this.type.is(Lo.RGB)&&n!==void 0?n:(this._ensureRGB(),Bt.channel.rgb2hsl(r,"l"))}get a(){return this.data.a}set r(r){this.type.set(Lo.RGB),this.changed=!0,this.data.r=r}set g(r){this.type.set(Lo.RGB),this.changed=!0,this.data.g=r}set b(r){this.type.set(Lo.RGB),this.changed=!0,this.data.b=r}set h(r){this.type.set(Lo.HSL),this.changed=!0,this.data.h=r}set s(r){this.type.set(Lo.HSL),this.changed=!0,this.data.s=r}set l(r){this.type.set(Lo.HSL),this.changed=!0,this.data.l=r}set a(r){this.changed=!0,this.data.a=r}}const B4=new irt({r:0,g:0,b:0,a:0},"transparent"),Jm={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:e=>{if(e.charCodeAt(0)!==35)return;const r=e.match(Jm.re);if(!r)return;const n=r[1],o=parseInt(n,16),a=n.length,i=a%4===0,s=a>4,l=s?1:17,c=s?8:4,u=i?0:-1,d=s?255:15;return B4.set({r:(o>>c*(u+3)&d)*l,g:(o>>c*(u+2)&d)*l,b:(o>>c*(u+1)&d)*l,a:i?(o&d)*l/255:1},e)},stringify:e=>{const{r,g:n,b:o,a}=e;return a<1?`#${Xu[Math.round(r)]}${Xu[Math.round(n)]}${Xu[Math.round(o)]}${Xu[Math.round(a*255)]}`:`#${Xu[Math.round(r)]}${Xu[Math.round(n)]}${Xu[Math.round(o)]}`}},Jp={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:e=>{const r=e.match(Jp.hueRe);if(r){const[,n,o]=r;switch(o){case"grad":return Bt.channel.clamp.h(parseFloat(n)*.9);case"rad":return Bt.channel.clamp.h(parseFloat(n)*180/Math.PI);case"turn":return Bt.channel.clamp.h(parseFloat(n)*360)}}return Bt.channel.clamp.h(parseFloat(e))},parse:e=>{const r=e.charCodeAt(0);if(r!==104&&r!==72)return;const n=e.match(Jp.re);if(!n)return;const[,o,a,i,s,l]=n;return B4.set({h:Jp._hue2deg(o),s:Bt.channel.clamp.s(parseFloat(a)),l:Bt.channel.clamp.l(parseFloat(i)),a:s?Bt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},e)},stringify:e=>{const{h:r,s:n,l:o,a}=e;return a<1?`hsla(${Bt.lang.round(r)}, ${Bt.lang.round(n)}%, ${Bt.lang.round(o)}%, ${a})`:`hsl(${Bt.lang.round(r)}, ${Bt.lang.round(n)}%, ${Bt.lang.round(o)}%)`}},Jy={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:e=>{e=e.toLowerCase();const r=Jy.colors[e];if(r)return Jm.parse(r)},stringify:e=>{const r=Jm.stringify(e);for(const n in Jy.colors)if(Jy.colors[n]===r)return n}},eb={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:e=>{const r=e.charCodeAt(0);if(r!==114&&r!==82)return;const n=e.match(eb.re);if(!n)return;const[,o,a,i,s,l,c,u,d]=n;return B4.set({r:Bt.channel.clamp.r(a?parseFloat(o)*2.55:parseFloat(o)),g:Bt.channel.clamp.g(s?parseFloat(i)*2.55:parseFloat(i)),b:Bt.channel.clamp.b(c?parseFloat(l)*2.55:parseFloat(l)),a:u?Bt.channel.clamp.a(d?parseFloat(u)/100:parseFloat(u)):1},e)},stringify:e=>{const{r,g:n,b:o,a}=e;return a<1?`rgba(${Bt.lang.round(r)}, ${Bt.lang.round(n)}, ${Bt.lang.round(o)}, ${Bt.lang.round(a)})`:`rgb(${Bt.lang.round(r)}, ${Bt.lang.round(n)}, ${Bt.lang.round(o)})`}},As={format:{keyword:Jy,hex:Jm,rgb:eb,rgba:eb,hsl:Jp,hsla:Jp},parse:e=>{if(typeof e!="string")return e;const r=Jm.parse(e)||eb.parse(e)||Jp.parse(e)||Jy.parse(e);if(r)return r;throw new Error(`Unsupported color format: "${e}"`)},stringify:e=>!e.changed&&e.color?e.color:e.type.is(Lo.HSL)||e.data.r===void 0?Jp.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?eb.stringify(e):Jm.stringify(e)},yne=(e,r)=>{const n=As.parse(e);for(const o in r)n[o]=Bt.channel.clamp[o](r[o]);return As.stringify(n)},srt=(e,r,n=0,o=1)=>{if(typeof e!="number")return yne(e,{a:r});const a=B4.set({r:Bt.channel.clamp.r(e),g:Bt.channel.clamp.g(r),b:Bt.channel.clamp.b(n),a:Bt.channel.clamp.a(o)});return As.stringify(a)},bne=e=>As.format.hex.stringify(As.parse(e)),vne=e=>As.format.rgba.stringify(As.parse(e)),lrt=(e,r)=>{const n=As.parse(e),o={};for(const a in r)r[a]&&(o[a]=n[a]+r[a]);return yne(e,o)},xne=(e,r,n=50)=>{const{r:o,g:a,b:i,a:s}=As.parse(e),{r:l,g:c,b:u,a:d}=As.parse(r),h=n/100,f=h*2-1,g=s-d,b=((f*g===-1?f:(f+g)/(1+f*g))+1)/2,x=1-b,w=o*b+l*x,k=a*b+c*x,C=i*b+u*x,_=s*h+d*(1-h);return srt(w,k,C,_)},wne=(e,r)=>{const n=As.parse(e),o={},a=(i,s,l)=>s>0?(l-i)*s/100:i*s/100;for(const i in r)o[i]=a(n[i],r[i],Bt.channel.max[i]);return lrt(e,o)},kne=e=>`[data-mantine-color-scheme="${e}"]`,_ne=kne("dark"),crt=kne("light"),urt=5,drt=(e,r,n,o)=>{const a=l=>bne(wne(l,{l:-22-5*o,s:-10-6*o})),i=l=>bne(wne(l,{l:-20-3*o,s:-3-6*o})),s=`:where(${e} [data-likec4-color="${r}"][data-compound-depth="${o}"])`;return` +${s} { + --likec4-palette-fill: ${i(n.elements.fill)}; + --likec4-palette-stroke: ${i(n.elements.stroke)}; +} +${_ne} ${s} { + --likec4-palette-fill: ${a(n.elements.fill)}; + --likec4-palette-stroke: ${a(n.elements.stroke)}; +} + `.trim()};function prt(e,r,n){const{elements:o,relationships:a}=n,i=`:where(${e} [data-likec4-color=${r}])`;return[` +${i} { + --likec4-palette-fill: ${o.fill}; + --likec4-palette-stroke: ${o.stroke}; + --likec4-palette-hiContrast: ${o.hiContrast}; + --likec4-palette-loContrast: ${o.loContrast}; + --likec4-palette-relation-stroke: ${a.line}; + --likec4-palette-relation-label: ${a.label}; + --likec4-palette-relation-label-bg: ${a.labelBg}; +} +${crt} ${i} { + --likec4-palette-relation-stroke-selected: ${vne(xne(a.line,"black",85))}; +} +${_ne} ${i} { + --likec4-palette-relation-stroke-selected: ${vne(xne(a.line,"white",70))}; +} + + `.trim(),...VNe(1,urt+1).map(s=>drt(e,r,n,s))].join(` +`)}function hrt(e,r){return En(r.colors,M9(),Sn(([n,o])=>prt(e,n,o)),qq(` +`))}const frt=E.memo(({id:e})=>{const r=`#${e}`,n=yp()?.(),{theme:o}=cre(),a=hrt(r,o);return y.jsx("style",{type:"text/css","data-likec4-colors":e,dangerouslySetInnerHTML:{__html:a},nonce:n})});function Ene({children:e}){const r=E.useContext(a2);return E.useEffect(()=>{r||console.warn("LikeC4Diagram must be a child of MantineProvider")},[]),r?y.jsx(y.Fragment,{children:e}):y.jsx(i7,{defaultColorScheme:"auto",children:e})}Ene.displayName="EnsureMantine";const NR=({reducedMotion:e="user",children:r})=>{const n=yp()?.();return y.jsx(UVe,{features:FUe,strict:!0,children:y.jsx(GVe,{reducedMotion:e,...n&&{nonce:n},children:r})})};function Sne({onCanvasClick:e,onCanvasContextMenu:r,onCanvasDblClick:n,onEdgeClick:o,onChange:a,onEdgeContextMenu:i,onNavigateTo:s,onNodeClick:l,onNodeContextMenu:c,onOpenSource:u,onBurgerMenuClick:d,onLayoutTypeChange:h,onInitialized:f,view:g,className:b,readonly:x=!0,controls:w=!x,fitView:k=!0,fitViewPadding:C=w?Uw.withControls:Uw.default,pannable:_=!0,zoomable:T=!0,background:A="dots",enableElementTags:R=!1,enableFocusMode:D=!1,enableElementDetails:N=!1,enableRelationshipDetails:M=!1,enableRelationshipBrowser:O=!1,enableCompareWithLatest:F=!!h,nodesDraggable:L=!x,nodesSelectable:U=!x||D||!!s||!!l,enableNotations:P=!1,showNavigationButtons:V=!!s,enableDynamicViewWalkthrough:I=!1,dynamicViewVariant:H,enableSearch:q=!1,initialWidth:Z,initialHeight:W,reduceGraphics:G="auto",renderIcon:K,where:j,reactFlowProps:Y,renderNodes:Q,children:J}){const ie=UG(),ne=E.useRef(null),re=Ire(g,H),ge=mrt(C);ne.current==null&&(ne.current={defaultEdges:[],defaultNodes:[],initialWidth:Z??re.width,initialHeight:W??re.height,initialFitViewOptions:{maxZoom:zT,minZoom:_s,padding:ge},initialMaxZoom:zT,initialMinZoom:_s});const De=G==="auto"?_&&(re.width??1)*(re.height??1)>6e6&&g.nodes.some(he=>he.children?.length>0):G;return y.jsx(Ene,{children:y.jsx(NR,{...De&&{reducedMotion:"always"},children:y.jsx($Ee,{value:K??null,children:y.jsx(Np,{features:{enableFitView:k,enableReadOnly:x,enableFocusMode:D,enableNavigateTo:!!s,enableElementDetails:N,enableRelationshipDetails:M,enableRelationshipBrowser:O,enableSearch:q,enableNavigationButtons:V&&!!s,enableDynamicViewWalkthrough:g._type==="dynamic"&&I,enableNotations:P,enableVscode:!!u,enableControls:w,enableElementTags:R,enableCompareWithLatest:F&&!!h},children:y.jsxs(HKe,{handlers:{onCanvasClick:e,onCanvasContextMenu:r,onCanvasDblClick:n,onEdgeClick:o,onChange:a,onEdgeContextMenu:i,onNavigateTo:s,onNodeClick:l,onNodeContextMenu:c,onOpenSource:u,onBurgerMenuClick:d,onInitialized:f,onLayoutTypeChange:h},children:[y.jsx(frt,{id:ie}),y.jsx(oLe,{rootSelector:`#${ie}`,children:y.jsx(yje,{id:ie,className:b,reduceGraphics:De,children:y.jsx(O3,{fitView:k,...ne.current,children:y.jsxs(Ktt,{view:g,zoomable:T,pannable:_,fitViewPadding:ge,nodesDraggable:L,nodesSelectable:U,where:j??null,dynamicViewVariant:H,children:[y.jsx(met,{background:A,reactFlowProps:Y,renderNodes:Q,children:J}),y.jsx(Kte,{})]})})})})]})})})})})}const Cne=e=>typeof e=="number"?`${e}px`:e;function mrt(e){return jF(()=>T0(e)?zNe(e,Cne):Cne(e),[e],grt)}const grt=([e],[r])=>e===r||T0(e)&&T0(r)&&e.bottom==r.bottom&&e.left==r.left&&e.right==r.right&&e.top==r.top;function yrt({children:e,likec4model:r}){return y.jsx(K0.Provider,{value:r,children:e})}const DR=({children:e})=>y.jsx("div",{style:{margin:"1rem 0"},children:y.jsx("div",{style:{margin:"0 auto",display:"inline-block",padding:"2rem",background:"rgba(250,82,82,.15)",color:"#ffa8a8"},children:e})}),brt=({viewId:e})=>y.jsxs(DR,{children:["View ",y.jsx("code",{children:e})," not found"]}),vrt=e=>{throw new Error("LikeC4View is not available SSR")};var Tne={exports:{}},$R,Ane;function xrt(){if(Ane)return $R;Ane=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return $R=e,$R}var MR,Rne;function wrt(){if(Rne)return MR;Rne=1;var e=xrt();function r(){}function n(){}return n.resetWarningCache=r,MR=function(){function o(s,l,c,u,d,h){if(h!==e){var f=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 f.name="Invariant Violation",f}}o.isRequired=o;function a(){return o}var i={array:o,bigint:o,bool:o,func:o,number:o,object:o,string:o,symbol:o,any:o,arrayOf:a,element:o,elementType:o,instanceOf:a,node:o,objectOf:a,oneOf:a,oneOfType:a,shape:a,exact:a,checkPropTypes:n,resetWarningCache:r};return i.PropTypes=i,i},MR}var Nne;function krt(){return Nne||(Nne=1,Tne.exports=wrt()()),Tne.exports}var _rt=krt();const Rs=_9(_rt);var Ert=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Dne(e,r){return e(r={exports:{}},r.exports),r.exports}var Srt=Dne((function(e){(function(r){var n=function(w,k,C){if(!c(k)||d(k)||h(k)||f(k)||l(k))return k;var _,T=0,A=0;if(u(k))for(_=[],A=k.length;Te.length)&&(r=e.length);for(var n=0,o=new Array(r);n=0||(a[n]=e[n]);return a},Pne=function(e,r){if(e==null)return{};var n,o,a=Drt(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a},$rt=E.createContext(null);function zne(e){var r=e.children,n=r===void 0?"":r,o=Pne(e,["children"]);return typeof n!="string"&&(n=vrt()),dn.createElement("template",Mne({},o,{dangerouslySetInnerHTML:{__html:n}}))}function Ine(e){var r=e.root,n=e.children;return Ki.createPortal(n===void 0?null:n,r)}function Mrt(e){var r=E.forwardRef((function(n,o){var a,i,s=n.mode,l=s===void 0?"open":s,c=n.delegatesFocus,u=c!==void 0&&c,d=n.styleSheets,h=d===void 0?[]:d,f=n.ssr,g=f!==void 0&&f,b=n.children,x=Pne(n,["mode","delegatesFocus","styleSheets","ssr","children"]),w=(i=E.useRef((a=o)&&a.current),E.useEffect((function(){a&&(a.current=i.current)}),[a]),i),k=E.useState(null),C=Nrt(k,2),_=C[0],T=C[1],A="node_".concat(l).concat(u);return E.useLayoutEffect((function(){if(w.current)try{if(typeof o=="function"&&o(w.current),g){var R=w.current.shadowRoot;return void T(R)}var D=w.current.attachShadow({mode:l,delegatesFocus:u});h.length>0&&(D.adoptedStyleSheets=h),T(D)}catch(N){(function(M){var O=M.error,F=M.styleSheets,L=M.root;switch(O.name){case"NotSupportedError":F.length>0&&(L.adoptedStyleSheets=F);break;default:throw O}})({error:N,styleSheets:h,root:_})}}),[o,w,h]),dn.createElement(dn.Fragment,null,dn.createElement(e.tag,Mne({key:A,ref:w},x),(_||g)&&dn.createElement($rt.Provider,{value:_},g?dn.createElement(zne,{shadowroot:l,shadowrootmode:l},e.render({root:_,ssr:g,children:b})):dn.createElement(Ine,{root:_},e.render({root:_,ssr:g,children:b})))))}));return r.propTypes={mode:Rs.oneOf(["open","closed"]),delegatesFocus:Rs.bool,styleSheets:Rs.arrayOf(Rs.instanceOf(globalThis.CSSStyleSheet)),ssr:Rs.bool,children:Rs.node},r}zne.propTypes={children:Rs.oneOfType([Rs.string,Rs.node])},Ine.propTypes={root:Rs.object.isRequired,children:Rs.node};var PR=new Map;function Prt(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"core",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(o){return o.children};return new Proxy(e,{get:function(o,a){var i=Srt(a,{separator:"-"}),s="".concat(r,"-").concat(i);return PR.has(s)||PR.set(s,Mrt({tag:i,render:n})),PR.get(s)}})}var zrt=Prt();const Irt='@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-400-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-400-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-500-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-500-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-600-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-600-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-400-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-400-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-500-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-500-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-600-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-600-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-ext-400-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-ext-400-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-ext-500-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-ext-500-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-ext-600-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/cyrillic-ext-600-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-ext-400-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-ext-400-normal.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-ext-500-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-ext-500-normal.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-ext-600-normal.woff2) format("woff2"),url(https://cdn.jsdelivr.net/fontsource/fonts/ibm-plex-sans@latest/latin-ext-600-normal.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}',One=`@layer reset,base,mantine,xyflow,tokens,recipes,utilities;@layer mantine{:root{color-scheme:var(--mantine-color-scheme)}*,*:before,*:after{box-sizing:border-box}input,button,textarea,select{font:inherit}button,select{text-transform:none}body{margin:0;font-family:var(--mantine-font-family);font-size:var(--mantine-font-size-md);line-height:var(--mantine-line-height);background-color:var(--mantine-color-body);color:var(--mantine-color-text);-webkit-font-smoothing:var(--mantine-webkit-font-smoothing);-moz-osx-font-smoothing:var(--mantine-moz-font-smoothing)}@media screen and (max-device-width:31.25em){body{-webkit-text-size-adjust:100%}}@media(prefers-reduced-motion:reduce){[data-respect-reduced-motion] [data-reduce-motion]{transition:none;animation:none}}[data-mantine-color-scheme=light] .mantine-light-hidden,[data-mantine-color-scheme=dark] .mantine-dark-hidden{display:none}.mantine-focus-auto:focus-visible{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.mantine-focus-always:focus{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.mantine-focus-never:focus{outline:none}.mantine-active:active{transform:translateY(calc(.0625rem * var(--mantine-scale)))}fieldset:disabled .mantine-active:active{transform:none}:where([dir=rtl]) .mantine-rotate-rtl{transform:rotate(180deg)}:root{--mantine-z-index-app: 100;--mantine-z-index-modal: 200;--mantine-z-index-popover: 300;--mantine-z-index-overlay: 400;--mantine-z-index-max: 9999;--mantine-scale: 1;--mantine-cursor-type: default;--mantine-webkit-font-smoothing: antialiased;--mantine-moz-font-smoothing: grayscale;--mantine-color-white: #fff;--mantine-color-black: #000;--mantine-line-height: 1.55;--mantine-font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;--mantine-font-family-monospace: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--mantine-font-family-headings: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;--mantine-heading-font-weight: 700;--mantine-heading-text-wrap: wrap;--mantine-radius-default: calc(.25rem * var(--mantine-scale));--mantine-primary-color-filled: var(--mantine-color-blue-filled);--mantine-primary-color-filled-hover: var(--mantine-color-blue-filled-hover);--mantine-primary-color-light: var(--mantine-color-blue-light);--mantine-primary-color-light-hover: var(--mantine-color-blue-light-hover);--mantine-primary-color-light-color: var(--mantine-color-blue-light-color);--mantine-breakpoint-xs: 36em;--mantine-breakpoint-sm: 48em;--mantine-breakpoint-md: 62em;--mantine-breakpoint-lg: 75em;--mantine-breakpoint-xl: 88em;--mantine-spacing-xs: calc(.625rem * var(--mantine-scale));--mantine-spacing-sm: calc(.75rem * var(--mantine-scale));--mantine-spacing-md: calc(1rem * var(--mantine-scale));--mantine-spacing-lg: calc(1.25rem * var(--mantine-scale));--mantine-spacing-xl: calc(2rem * var(--mantine-scale));--mantine-font-size-xs: calc(.75rem * var(--mantine-scale));--mantine-font-size-sm: calc(.875rem * var(--mantine-scale));--mantine-font-size-md: calc(1rem * var(--mantine-scale));--mantine-font-size-lg: calc(1.125rem * var(--mantine-scale));--mantine-font-size-xl: calc(1.25rem * var(--mantine-scale));--mantine-line-height-xs: 1.4;--mantine-line-height-sm: 1.45;--mantine-line-height-md: 1.55;--mantine-line-height-lg: 1.6;--mantine-line-height-xl: 1.65;--mantine-shadow-xs: 0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) rgba(0, 0, 0, .05), 0 calc(.0625rem * var(--mantine-scale)) calc(.125rem * var(--mantine-scale)) rgba(0, 0, 0, .1);--mantine-shadow-sm: 0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) rgba(0, 0, 0, .05), rgba(0, 0, 0, .05) 0 calc(.625rem * var(--mantine-scale)) calc(.9375rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale)), rgba(0, 0, 0, .04) 0 calc(.4375rem * var(--mantine-scale)) calc(.4375rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale));--mantine-shadow-md: 0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) rgba(0, 0, 0, .05), rgba(0, 0, 0, .05) 0 calc(1.25rem * var(--mantine-scale)) calc(1.5625rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale)), rgba(0, 0, 0, .04) 0 calc(.625rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale));--mantine-shadow-lg: 0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) rgba(0, 0, 0, .05), rgba(0, 0, 0, .05) 0 calc(1.75rem * var(--mantine-scale)) calc(1.4375rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale)), rgba(0, 0, 0, .04) 0 calc(.75rem * var(--mantine-scale)) calc(.75rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale));--mantine-shadow-xl: 0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) rgba(0, 0, 0, .05), rgba(0, 0, 0, .05) 0 calc(2.25rem * var(--mantine-scale)) calc(1.75rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale)), rgba(0, 0, 0, .04) 0 calc(1.0625rem * var(--mantine-scale)) calc(1.0625rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale));--mantine-radius-xs: calc(.125rem * var(--mantine-scale));--mantine-radius-sm: calc(.25rem * var(--mantine-scale));--mantine-radius-md: calc(.5rem * var(--mantine-scale));--mantine-radius-lg: calc(1rem * var(--mantine-scale));--mantine-radius-xl: calc(2rem * var(--mantine-scale));--mantine-primary-color-0: var(--mantine-color-blue-0);--mantine-primary-color-1: var(--mantine-color-blue-1);--mantine-primary-color-2: var(--mantine-color-blue-2);--mantine-primary-color-3: var(--mantine-color-blue-3);--mantine-primary-color-4: var(--mantine-color-blue-4);--mantine-primary-color-5: var(--mantine-color-blue-5);--mantine-primary-color-6: var(--mantine-color-blue-6);--mantine-primary-color-7: var(--mantine-color-blue-7);--mantine-primary-color-8: var(--mantine-color-blue-8);--mantine-primary-color-9: var(--mantine-color-blue-9);--mantine-color-dark-0: #c9c9c9;--mantine-color-dark-1: #b8b8b8;--mantine-color-dark-2: #828282;--mantine-color-dark-3: #696969;--mantine-color-dark-4: #424242;--mantine-color-dark-5: #3b3b3b;--mantine-color-dark-6: #2e2e2e;--mantine-color-dark-7: #242424;--mantine-color-dark-8: #1f1f1f;--mantine-color-dark-9: #141414;--mantine-color-gray-0: #f8f9fa;--mantine-color-gray-1: #f1f3f5;--mantine-color-gray-2: #e9ecef;--mantine-color-gray-3: #dee2e6;--mantine-color-gray-4: #ced4da;--mantine-color-gray-5: #adb5bd;--mantine-color-gray-6: #868e96;--mantine-color-gray-7: #495057;--mantine-color-gray-8: #343a40;--mantine-color-gray-9: #212529;--mantine-color-red-0: #fff5f5;--mantine-color-red-1: #ffe3e3;--mantine-color-red-2: #ffc9c9;--mantine-color-red-3: #ffa8a8;--mantine-color-red-4: #ff8787;--mantine-color-red-5: #ff6b6b;--mantine-color-red-6: #fa5252;--mantine-color-red-7: #f03e3e;--mantine-color-red-8: #e03131;--mantine-color-red-9: #c92a2a;--mantine-color-pink-0: #fff0f6;--mantine-color-pink-1: #ffdeeb;--mantine-color-pink-2: #fcc2d7;--mantine-color-pink-3: #faa2c1;--mantine-color-pink-4: #f783ac;--mantine-color-pink-5: #f06595;--mantine-color-pink-6: #e64980;--mantine-color-pink-7: #d6336c;--mantine-color-pink-8: #c2255c;--mantine-color-pink-9: #a61e4d;--mantine-color-grape-0: #f8f0fc;--mantine-color-grape-1: #f3d9fa;--mantine-color-grape-2: #eebefa;--mantine-color-grape-3: #e599f7;--mantine-color-grape-4: #da77f2;--mantine-color-grape-5: #cc5de8;--mantine-color-grape-6: #be4bdb;--mantine-color-grape-7: #ae3ec9;--mantine-color-grape-8: #9c36b5;--mantine-color-grape-9: #862e9c;--mantine-color-violet-0: #f3f0ff;--mantine-color-violet-1: #e5dbff;--mantine-color-violet-2: #d0bfff;--mantine-color-violet-3: #b197fc;--mantine-color-violet-4: #9775fa;--mantine-color-violet-5: #845ef7;--mantine-color-violet-6: #7950f2;--mantine-color-violet-7: #7048e8;--mantine-color-violet-8: #6741d9;--mantine-color-violet-9: #5f3dc4;--mantine-color-indigo-0: #edf2ff;--mantine-color-indigo-1: #dbe4ff;--mantine-color-indigo-2: #bac8ff;--mantine-color-indigo-3: #91a7ff;--mantine-color-indigo-4: #748ffc;--mantine-color-indigo-5: #5c7cfa;--mantine-color-indigo-6: #4c6ef5;--mantine-color-indigo-7: #4263eb;--mantine-color-indigo-8: #3b5bdb;--mantine-color-indigo-9: #364fc7;--mantine-color-blue-0: #e7f5ff;--mantine-color-blue-1: #d0ebff;--mantine-color-blue-2: #a5d8ff;--mantine-color-blue-3: #74c0fc;--mantine-color-blue-4: #4dabf7;--mantine-color-blue-5: #339af0;--mantine-color-blue-6: #228be6;--mantine-color-blue-7: #1c7ed6;--mantine-color-blue-8: #1971c2;--mantine-color-blue-9: #1864ab;--mantine-color-cyan-0: #e3fafc;--mantine-color-cyan-1: #c5f6fa;--mantine-color-cyan-2: #99e9f2;--mantine-color-cyan-3: #66d9e8;--mantine-color-cyan-4: #3bc9db;--mantine-color-cyan-5: #22b8cf;--mantine-color-cyan-6: #15aabf;--mantine-color-cyan-7: #1098ad;--mantine-color-cyan-8: #0c8599;--mantine-color-cyan-9: #0b7285;--mantine-color-teal-0: #e6fcf5;--mantine-color-teal-1: #c3fae8;--mantine-color-teal-2: #96f2d7;--mantine-color-teal-3: #63e6be;--mantine-color-teal-4: #38d9a9;--mantine-color-teal-5: #20c997;--mantine-color-teal-6: #12b886;--mantine-color-teal-7: #0ca678;--mantine-color-teal-8: #099268;--mantine-color-teal-9: #087f5b;--mantine-color-green-0: #ebfbee;--mantine-color-green-1: #d3f9d8;--mantine-color-green-2: #b2f2bb;--mantine-color-green-3: #8ce99a;--mantine-color-green-4: #69db7c;--mantine-color-green-5: #51cf66;--mantine-color-green-6: #40c057;--mantine-color-green-7: #37b24d;--mantine-color-green-8: #2f9e44;--mantine-color-green-9: #2b8a3e;--mantine-color-lime-0: #f4fce3;--mantine-color-lime-1: #e9fac8;--mantine-color-lime-2: #d8f5a2;--mantine-color-lime-3: #c0eb75;--mantine-color-lime-4: #a9e34b;--mantine-color-lime-5: #94d82d;--mantine-color-lime-6: #82c91e;--mantine-color-lime-7: #74b816;--mantine-color-lime-8: #66a80f;--mantine-color-lime-9: #5c940d;--mantine-color-yellow-0: #fff9db;--mantine-color-yellow-1: #fff3bf;--mantine-color-yellow-2: #ffec99;--mantine-color-yellow-3: #ffe066;--mantine-color-yellow-4: #ffd43b;--mantine-color-yellow-5: #fcc419;--mantine-color-yellow-6: #fab005;--mantine-color-yellow-7: #f59f00;--mantine-color-yellow-8: #f08c00;--mantine-color-yellow-9: #e67700;--mantine-color-orange-0: #fff4e6;--mantine-color-orange-1: #ffe8cc;--mantine-color-orange-2: #ffd8a8;--mantine-color-orange-3: #ffc078;--mantine-color-orange-4: #ffa94d;--mantine-color-orange-5: #ff922b;--mantine-color-orange-6: #fd7e14;--mantine-color-orange-7: #f76707;--mantine-color-orange-8: #e8590c;--mantine-color-orange-9: #d9480f;--mantine-h1-font-size: calc(2.125rem * var(--mantine-scale));--mantine-h1-line-height: 1.3;--mantine-h1-font-weight: 700;--mantine-h2-font-size: calc(1.625rem * var(--mantine-scale));--mantine-h2-line-height: 1.35;--mantine-h2-font-weight: 700;--mantine-h3-font-size: calc(1.375rem * var(--mantine-scale));--mantine-h3-line-height: 1.4;--mantine-h3-font-weight: 700;--mantine-h4-font-size: calc(1.125rem * var(--mantine-scale));--mantine-h4-line-height: 1.45;--mantine-h4-font-weight: 700;--mantine-h5-font-size: calc(1rem * var(--mantine-scale));--mantine-h5-line-height: 1.5;--mantine-h5-font-weight: 700;--mantine-h6-font-size: calc(.875rem * var(--mantine-scale));--mantine-h6-line-height: 1.5;--mantine-h6-font-weight: 700}:root[data-mantine-color-scheme=dark]{--mantine-color-scheme: dark;--mantine-primary-color-contrast: var(--mantine-color-white);--mantine-color-bright: var(--mantine-color-white);--mantine-color-text: var(--mantine-color-dark-0);--mantine-color-body: var(--mantine-color-dark-7);--mantine-color-error: var(--mantine-color-red-8);--mantine-color-placeholder: var(--mantine-color-dark-3);--mantine-color-anchor: var(--mantine-color-blue-4);--mantine-color-default: var(--mantine-color-dark-6);--mantine-color-default-hover: var(--mantine-color-dark-5);--mantine-color-default-color: var(--mantine-color-white);--mantine-color-default-border: var(--mantine-color-dark-4);--mantine-color-dimmed: var(--mantine-color-dark-2);--mantine-color-disabled: var(--mantine-color-dark-6);--mantine-color-disabled-color: var(--mantine-color-dark-3);--mantine-color-disabled-border: var(--mantine-color-dark-4);--mantine-color-dark-text: var(--mantine-color-dark-4);--mantine-color-dark-filled: var(--mantine-color-dark-8);--mantine-color-dark-filled-hover: var(--mantine-color-dark-9);--mantine-color-dark-light: rgba(46, 46, 46, .15);--mantine-color-dark-light-hover: rgba(46, 46, 46, .2);--mantine-color-dark-light-color: var(--mantine-color-dark-3);--mantine-color-dark-outline: var(--mantine-color-dark-4);--mantine-color-dark-outline-hover: rgba(66, 66, 66, .05);--mantine-color-gray-text: var(--mantine-color-gray-4);--mantine-color-gray-filled: var(--mantine-color-gray-8);--mantine-color-gray-filled-hover: var(--mantine-color-gray-9);--mantine-color-gray-light: rgba(134, 142, 150, .15);--mantine-color-gray-light-hover: rgba(134, 142, 150, .2);--mantine-color-gray-light-color: var(--mantine-color-gray-3);--mantine-color-gray-outline: var(--mantine-color-gray-4);--mantine-color-gray-outline-hover: rgba(206, 212, 218, .05);--mantine-color-red-text: var(--mantine-color-red-4);--mantine-color-red-filled: var(--mantine-color-red-8);--mantine-color-red-filled-hover: var(--mantine-color-red-9);--mantine-color-red-light: rgba(250, 82, 82, .15);--mantine-color-red-light-hover: rgba(250, 82, 82, .2);--mantine-color-red-light-color: var(--mantine-color-red-3);--mantine-color-red-outline: var(--mantine-color-red-4);--mantine-color-red-outline-hover: rgba(255, 135, 135, .05);--mantine-color-pink-text: var(--mantine-color-pink-4);--mantine-color-pink-filled: var(--mantine-color-pink-8);--mantine-color-pink-filled-hover: var(--mantine-color-pink-9);--mantine-color-pink-light: rgba(230, 73, 128, .15);--mantine-color-pink-light-hover: rgba(230, 73, 128, .2);--mantine-color-pink-light-color: var(--mantine-color-pink-3);--mantine-color-pink-outline: var(--mantine-color-pink-4);--mantine-color-pink-outline-hover: rgba(247, 131, 172, .05);--mantine-color-grape-text: var(--mantine-color-grape-4);--mantine-color-grape-filled: var(--mantine-color-grape-8);--mantine-color-grape-filled-hover: var(--mantine-color-grape-9);--mantine-color-grape-light: rgba(190, 75, 219, .15);--mantine-color-grape-light-hover: rgba(190, 75, 219, .2);--mantine-color-grape-light-color: var(--mantine-color-grape-3);--mantine-color-grape-outline: var(--mantine-color-grape-4);--mantine-color-grape-outline-hover: rgba(218, 119, 242, .05);--mantine-color-violet-text: var(--mantine-color-violet-4);--mantine-color-violet-filled: var(--mantine-color-violet-8);--mantine-color-violet-filled-hover: var(--mantine-color-violet-9);--mantine-color-violet-light: rgba(121, 80, 242, .15);--mantine-color-violet-light-hover: rgba(121, 80, 242, .2);--mantine-color-violet-light-color: var(--mantine-color-violet-3);--mantine-color-violet-outline: var(--mantine-color-violet-4);--mantine-color-violet-outline-hover: rgba(151, 117, 250, .05);--mantine-color-indigo-text: var(--mantine-color-indigo-4);--mantine-color-indigo-filled: var(--mantine-color-indigo-8);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-9);--mantine-color-indigo-light: rgba(76, 110, 245, .15);--mantine-color-indigo-light-hover: rgba(76, 110, 245, .2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-3);--mantine-color-indigo-outline: var(--mantine-color-indigo-4);--mantine-color-indigo-outline-hover: rgba(116, 143, 252, .05);--mantine-color-blue-text: var(--mantine-color-blue-4);--mantine-color-blue-filled: var(--mantine-color-blue-8);--mantine-color-blue-filled-hover: var(--mantine-color-blue-9);--mantine-color-blue-light: rgba(34, 139, 230, .15);--mantine-color-blue-light-hover: rgba(34, 139, 230, .2);--mantine-color-blue-light-color: var(--mantine-color-blue-3);--mantine-color-blue-outline: var(--mantine-color-blue-4);--mantine-color-blue-outline-hover: rgba(77, 171, 247, .05);--mantine-color-cyan-text: var(--mantine-color-cyan-4);--mantine-color-cyan-filled: var(--mantine-color-cyan-8);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-9);--mantine-color-cyan-light: rgba(21, 170, 191, .15);--mantine-color-cyan-light-hover: rgba(21, 170, 191, .2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-3);--mantine-color-cyan-outline: var(--mantine-color-cyan-4);--mantine-color-cyan-outline-hover: rgba(59, 201, 219, .05);--mantine-color-teal-text: var(--mantine-color-teal-4);--mantine-color-teal-filled: var(--mantine-color-teal-8);--mantine-color-teal-filled-hover: var(--mantine-color-teal-9);--mantine-color-teal-light: rgba(18, 184, 134, .15);--mantine-color-teal-light-hover: rgba(18, 184, 134, .2);--mantine-color-teal-light-color: var(--mantine-color-teal-3);--mantine-color-teal-outline: var(--mantine-color-teal-4);--mantine-color-teal-outline-hover: rgba(56, 217, 169, .05);--mantine-color-green-text: var(--mantine-color-green-4);--mantine-color-green-filled: var(--mantine-color-green-8);--mantine-color-green-filled-hover: var(--mantine-color-green-9);--mantine-color-green-light: rgba(64, 192, 87, .15);--mantine-color-green-light-hover: rgba(64, 192, 87, .2);--mantine-color-green-light-color: var(--mantine-color-green-3);--mantine-color-green-outline: var(--mantine-color-green-4);--mantine-color-green-outline-hover: rgba(105, 219, 124, .05);--mantine-color-lime-text: var(--mantine-color-lime-4);--mantine-color-lime-filled: var(--mantine-color-lime-8);--mantine-color-lime-filled-hover: var(--mantine-color-lime-9);--mantine-color-lime-light: rgba(130, 201, 30, .15);--mantine-color-lime-light-hover: rgba(130, 201, 30, .2);--mantine-color-lime-light-color: var(--mantine-color-lime-3);--mantine-color-lime-outline: var(--mantine-color-lime-4);--mantine-color-lime-outline-hover: rgba(169, 227, 75, .05);--mantine-color-yellow-text: var(--mantine-color-yellow-4);--mantine-color-yellow-filled: var(--mantine-color-yellow-8);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-9);--mantine-color-yellow-light: rgba(250, 176, 5, .15);--mantine-color-yellow-light-hover: rgba(250, 176, 5, .2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-3);--mantine-color-yellow-outline: var(--mantine-color-yellow-4);--mantine-color-yellow-outline-hover: rgba(255, 212, 59, .05);--mantine-color-orange-text: var(--mantine-color-orange-4);--mantine-color-orange-filled: var(--mantine-color-orange-8);--mantine-color-orange-filled-hover: var(--mantine-color-orange-9);--mantine-color-orange-light: rgba(253, 126, 20, .15);--mantine-color-orange-light-hover: rgba(253, 126, 20, .2);--mantine-color-orange-light-color: var(--mantine-color-orange-3);--mantine-color-orange-outline: var(--mantine-color-orange-4);--mantine-color-orange-outline-hover: rgba(255, 169, 77, .05)}:root[data-mantine-color-scheme=light]{--mantine-color-scheme: light;--mantine-primary-color-contrast: var(--mantine-color-white);--mantine-color-bright: var(--mantine-color-black);--mantine-color-text: #000;--mantine-color-body: #fff;--mantine-color-error: var(--mantine-color-red-6);--mantine-color-placeholder: var(--mantine-color-gray-5);--mantine-color-anchor: var(--mantine-color-blue-6);--mantine-color-default: var(--mantine-color-white);--mantine-color-default-hover: var(--mantine-color-gray-0);--mantine-color-default-color: var(--mantine-color-black);--mantine-color-default-border: var(--mantine-color-gray-4);--mantine-color-dimmed: var(--mantine-color-gray-6);--mantine-color-disabled: var(--mantine-color-gray-2);--mantine-color-disabled-color: var(--mantine-color-gray-5);--mantine-color-disabled-border: var(--mantine-color-gray-3);--mantine-color-dark-text: var(--mantine-color-dark-filled);--mantine-color-dark-filled: var(--mantine-color-dark-6);--mantine-color-dark-filled-hover: var(--mantine-color-dark-7);--mantine-color-dark-light: rgba(46, 46, 46, .1);--mantine-color-dark-light-hover: rgba(46, 46, 46, .12);--mantine-color-dark-light-color: var(--mantine-color-dark-6);--mantine-color-dark-outline: var(--mantine-color-dark-6);--mantine-color-dark-outline-hover: rgba(46, 46, 46, .05);--mantine-color-gray-text: var(--mantine-color-gray-filled);--mantine-color-gray-filled: var(--mantine-color-gray-6);--mantine-color-gray-filled-hover: var(--mantine-color-gray-7);--mantine-color-gray-light: rgba(134, 142, 150, .1);--mantine-color-gray-light-hover: rgba(134, 142, 150, .12);--mantine-color-gray-light-color: var(--mantine-color-gray-6);--mantine-color-gray-outline: var(--mantine-color-gray-6);--mantine-color-gray-outline-hover: rgba(134, 142, 150, .05);--mantine-color-red-text: var(--mantine-color-red-filled);--mantine-color-red-filled: var(--mantine-color-red-6);--mantine-color-red-filled-hover: var(--mantine-color-red-7);--mantine-color-red-light: rgba(250, 82, 82, .1);--mantine-color-red-light-hover: rgba(250, 82, 82, .12);--mantine-color-red-light-color: var(--mantine-color-red-6);--mantine-color-red-outline: var(--mantine-color-red-6);--mantine-color-red-outline-hover: rgba(250, 82, 82, .05);--mantine-color-pink-text: var(--mantine-color-pink-filled);--mantine-color-pink-filled: var(--mantine-color-pink-6);--mantine-color-pink-filled-hover: var(--mantine-color-pink-7);--mantine-color-pink-light: rgba(230, 73, 128, .1);--mantine-color-pink-light-hover: rgba(230, 73, 128, .12);--mantine-color-pink-light-color: var(--mantine-color-pink-6);--mantine-color-pink-outline: var(--mantine-color-pink-6);--mantine-color-pink-outline-hover: rgba(230, 73, 128, .05);--mantine-color-grape-text: var(--mantine-color-grape-filled);--mantine-color-grape-filled: var(--mantine-color-grape-6);--mantine-color-grape-filled-hover: var(--mantine-color-grape-7);--mantine-color-grape-light: rgba(190, 75, 219, .1);--mantine-color-grape-light-hover: rgba(190, 75, 219, .12);--mantine-color-grape-light-color: var(--mantine-color-grape-6);--mantine-color-grape-outline: var(--mantine-color-grape-6);--mantine-color-grape-outline-hover: rgba(190, 75, 219, .05);--mantine-color-violet-text: var(--mantine-color-violet-filled);--mantine-color-violet-filled: var(--mantine-color-violet-6);--mantine-color-violet-filled-hover: var(--mantine-color-violet-7);--mantine-color-violet-light: rgba(121, 80, 242, .1);--mantine-color-violet-light-hover: rgba(121, 80, 242, .12);--mantine-color-violet-light-color: var(--mantine-color-violet-6);--mantine-color-violet-outline: var(--mantine-color-violet-6);--mantine-color-violet-outline-hover: rgba(121, 80, 242, .05);--mantine-color-indigo-text: var(--mantine-color-indigo-filled);--mantine-color-indigo-filled: var(--mantine-color-indigo-6);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-7);--mantine-color-indigo-light: rgba(76, 110, 245, .1);--mantine-color-indigo-light-hover: rgba(76, 110, 245, .12);--mantine-color-indigo-light-color: var(--mantine-color-indigo-6);--mantine-color-indigo-outline: var(--mantine-color-indigo-6);--mantine-color-indigo-outline-hover: rgba(76, 110, 245, .05);--mantine-color-blue-text: var(--mantine-color-blue-filled);--mantine-color-blue-filled: var(--mantine-color-blue-6);--mantine-color-blue-filled-hover: var(--mantine-color-blue-7);--mantine-color-blue-light: rgba(34, 139, 230, .1);--mantine-color-blue-light-hover: rgba(34, 139, 230, .12);--mantine-color-blue-light-color: var(--mantine-color-blue-6);--mantine-color-blue-outline: var(--mantine-color-blue-6);--mantine-color-blue-outline-hover: rgba(34, 139, 230, .05);--mantine-color-cyan-text: var(--mantine-color-cyan-filled);--mantine-color-cyan-filled: var(--mantine-color-cyan-6);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-7);--mantine-color-cyan-light: rgba(21, 170, 191, .1);--mantine-color-cyan-light-hover: rgba(21, 170, 191, .12);--mantine-color-cyan-light-color: var(--mantine-color-cyan-6);--mantine-color-cyan-outline: var(--mantine-color-cyan-6);--mantine-color-cyan-outline-hover: rgba(21, 170, 191, .05);--mantine-color-teal-text: var(--mantine-color-teal-filled);--mantine-color-teal-filled: var(--mantine-color-teal-6);--mantine-color-teal-filled-hover: var(--mantine-color-teal-7);--mantine-color-teal-light: rgba(18, 184, 134, .1);--mantine-color-teal-light-hover: rgba(18, 184, 134, .12);--mantine-color-teal-light-color: var(--mantine-color-teal-6);--mantine-color-teal-outline: var(--mantine-color-teal-6);--mantine-color-teal-outline-hover: rgba(18, 184, 134, .05);--mantine-color-green-text: var(--mantine-color-green-filled);--mantine-color-green-filled: var(--mantine-color-green-6);--mantine-color-green-filled-hover: var(--mantine-color-green-7);--mantine-color-green-light: rgba(64, 192, 87, .1);--mantine-color-green-light-hover: rgba(64, 192, 87, .12);--mantine-color-green-light-color: var(--mantine-color-green-6);--mantine-color-green-outline: var(--mantine-color-green-6);--mantine-color-green-outline-hover: rgba(64, 192, 87, .05);--mantine-color-lime-text: var(--mantine-color-lime-filled);--mantine-color-lime-filled: var(--mantine-color-lime-6);--mantine-color-lime-filled-hover: var(--mantine-color-lime-7);--mantine-color-lime-light: rgba(130, 201, 30, .1);--mantine-color-lime-light-hover: rgba(130, 201, 30, .12);--mantine-color-lime-light-color: var(--mantine-color-lime-6);--mantine-color-lime-outline: var(--mantine-color-lime-6);--mantine-color-lime-outline-hover: rgba(130, 201, 30, .05);--mantine-color-yellow-text: var(--mantine-color-yellow-filled);--mantine-color-yellow-filled: var(--mantine-color-yellow-6);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-7);--mantine-color-yellow-light: rgba(250, 176, 5, .1);--mantine-color-yellow-light-hover: rgba(250, 176, 5, .12);--mantine-color-yellow-light-color: var(--mantine-color-yellow-6);--mantine-color-yellow-outline: var(--mantine-color-yellow-6);--mantine-color-yellow-outline-hover: rgba(250, 176, 5, .05);--mantine-color-orange-text: var(--mantine-color-orange-filled);--mantine-color-orange-filled: var(--mantine-color-orange-6);--mantine-color-orange-filled-hover: var(--mantine-color-orange-7);--mantine-color-orange-light: rgba(253, 126, 20, .1);--mantine-color-orange-light-hover: rgba(253, 126, 20, .12);--mantine-color-orange-light-color: var(--mantine-color-orange-6);--mantine-color-orange-outline: var(--mantine-color-orange-6);--mantine-color-orange-outline-hover: rgba(253, 126, 20, .05)}.m_d57069b5{--scrollarea-scrollbar-size: calc(.75rem * var(--mantine-scale));position:relative;overflow:hidden}.m_d57069b5:where([data-autosize]) .m_b1336c6{min-width:min-content}.m_c0783ff9{scrollbar-width:none;overscroll-behavior:var(--scrollarea-over-scroll-behavior);-ms-overflow-style:none;-webkit-overflow-scrolling:touch;width:100%;height:100%}.m_c0783ff9::-webkit-scrollbar{display:none}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):where([data-vertical-hidden]){padding-inline-end:0;padding-inline-start:0}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]){padding-inline-end:var(--scrollarea-scrollbar-size);padding-inline-start:unset}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=x]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=x],[data-offset-scrollbars=present]):where([data-horizontal-hidden]){padding-bottom:0}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=x]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=x],[data-offset-scrollbars=present]):not([data-horizontal-hidden]){padding-bottom:var(--scrollarea-scrollbar-size)}.m_f8f631dd{min-width:100%;display:table}.m_c44ba933{user-select:none;touch-action:none;box-sizing:border-box;transition:background-color .15s ease,opacity .15s ease;padding:calc(var(--scrollarea-scrollbar-size) / 5);display:flex;background-color:transparent;flex-direction:row}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_c44ba933:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=light]) .m_c44ba933:hover>.m_d8b5e363{background-color:#00000080}:where([data-mantine-color-scheme=dark]) .m_c44ba933:hover{background-color:var(--mantine-color-dark-8)}:where([data-mantine-color-scheme=dark]) .m_c44ba933:hover>.m_d8b5e363{background-color:#ffffff80}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_c44ba933:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=light]) .m_c44ba933:active>.m_d8b5e363{background-color:#00000080}:where([data-mantine-color-scheme=dark]) .m_c44ba933:active{background-color:var(--mantine-color-dark-8)}:where([data-mantine-color-scheme=dark]) .m_c44ba933:active>.m_d8b5e363{background-color:#ffffff80}}.m_c44ba933:where([data-hidden],[data-state=hidden]){display:none}.m_c44ba933:where([data-orientation=vertical]){width:var(--scrollarea-scrollbar-size);top:0;bottom:var(--sa-corner-width);inset-inline-end:0}.m_c44ba933:where([data-orientation=horizontal]){height:var(--scrollarea-scrollbar-size);flex-direction:column;bottom:0;inset-inline-start:0;inset-inline-end:var(--sa-corner-width)}.m_d8b5e363{flex:1;border-radius:var(--scrollarea-scrollbar-size);position:relative;transition:background-color .15s ease;overflow:hidden;opacity:var(--thumb-opacity)}.m_d8b5e363:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;min-width:calc(2.75rem * var(--mantine-scale));min-height:calc(2.75rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_d8b5e363{background-color:#0006}:where([data-mantine-color-scheme=dark]) .m_d8b5e363{background-color:#fff6}.m_21657268{position:absolute;opacity:0;transition:opacity .15s ease;display:block;inset-inline-end:0;bottom:0}:where([data-mantine-color-scheme=light]) .m_21657268{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_21657268{background-color:var(--mantine-color-dark-8)}.m_21657268:where([data-hovered]){opacity:1}.m_21657268:where([data-hidden]){display:none}.m_b1336c6{min-width:100%}.m_87cf2631{background-color:transparent;cursor:pointer;border:0;padding:0;appearance:none;font-size:var(--mantine-font-size-md);text-align:left;text-decoration:none;color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}:where([dir=rtl]) .m_87cf2631{text-align:right}.m_515a97f8{border:0;clip:rect(0 0 0 0);height:calc(.0625rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));margin:calc(-.0625rem * var(--mantine-scale));overflow:hidden;padding:0;position:absolute;white-space:nowrap}.m_1b7284a3{--paper-radius: var(--mantine-radius-default);outline:0;-webkit-tap-highlight-color:transparent;display:block;touch-action:manipulation;text-decoration:none;border-radius:var(--paper-radius);box-shadow:var(--paper-shadow);background-color:var(--mantine-color-body)}[data-mantine-color-scheme=light] .m_1b7284a3{--paper-border-color: var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_1b7284a3{--paper-border-color: var(--mantine-color-dark-4)}.m_1b7284a3:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid var(--paper-border-color)}.m_9814e45f{inset:0;position:absolute;background:var(--overlay-bg, rgba(0, 0, 0, .6));-webkit-backdrop-filter:var(--overlay-filter);backdrop-filter:var(--overlay-filter);border-radius:var(--overlay-radius, 0);z-index:var(--overlay-z-index)}.m_9814e45f:where([data-fixed]){position:fixed}.m_9814e45f:where([data-center]){display:flex;align-items:center;justify-content:center}.m_38a85659{position:absolute;border:1px solid var(--popover-border-color);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);box-shadow:var(--popover-shadow, none);border-radius:var(--popover-radius, var(--mantine-radius-default))}.m_38a85659:where([data-fixed]){position:fixed}.m_38a85659:focus{outline:none}:where([data-mantine-color-scheme=light]) .m_38a85659{--popover-border-color: var(--mantine-color-gray-2);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_38a85659{--popover-border-color: var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}.m_a31dc6c1{background-color:inherit;border:1px solid var(--popover-border-color);z-index:1}.m_3d7bc908{position:fixed;inset:0}.m_5ae2e3c{--loader-size-xs: calc(1.125rem * var(--mantine-scale));--loader-size-sm: calc(1.375rem * var(--mantine-scale));--loader-size-md: calc(2.25rem * var(--mantine-scale));--loader-size-lg: calc(2.75rem * var(--mantine-scale));--loader-size-xl: calc(3.625rem * var(--mantine-scale));--loader-size: var(--loader-size-md);--loader-color: var(--mantine-primary-color-filled)}@keyframes m_5d2b3b9d{0%{transform:scale(.6);opacity:0}50%,to{transform:scale(1)}}.m_7a2bd4cd{position:relative;width:var(--loader-size);height:var(--loader-size);display:flex;gap:calc(var(--loader-size) / 5)}.m_870bb79{flex:1;background:var(--loader-color);animation:m_5d2b3b9d 1.2s cubic-bezier(0,.5,.5,1) infinite;border-radius:calc(.125rem * var(--mantine-scale))}.m_870bb79:nth-of-type(1){animation-delay:-.24s}.m_870bb79:nth-of-type(2){animation-delay:-.12s}.m_870bb79:nth-of-type(3){animation-delay:0}@keyframes m_aac34a1{0%,to{transform:scale(1);opacity:1}50%{transform:scale(.6);opacity:.5}}.m_4e3f22d7{display:flex;justify-content:center;align-items:center;gap:calc(var(--loader-size) / 10);position:relative;width:var(--loader-size);height:var(--loader-size)}.m_870c4af{width:calc(var(--loader-size) / 3 - var(--loader-size) / 15);height:calc(var(--loader-size) / 3 - var(--loader-size) / 15);border-radius:50%;background:var(--loader-color);animation:m_aac34a1 .8s infinite linear}.m_870c4af:nth-child(2){animation-delay:.4s}@keyframes m_f8e89c4b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.m_b34414df{display:inline-block;width:var(--loader-size);height:var(--loader-size)}.m_b34414df:after{content:"";display:block;width:var(--loader-size);height:var(--loader-size);border-radius:calc(625rem * var(--mantine-scale));border-width:calc(var(--loader-size) / 8);border-style:solid;border-color:var(--loader-color) var(--loader-color) var(--loader-color) transparent;animation:m_f8e89c4b 1.2s linear infinite}.m_8d3f4000{--ai-size-xs: calc(1.125rem * var(--mantine-scale));--ai-size-sm: calc(1.375rem * var(--mantine-scale));--ai-size-md: calc(1.75rem * var(--mantine-scale));--ai-size-lg: calc(2.125rem * var(--mantine-scale));--ai-size-xl: calc(2.75rem * var(--mantine-scale));--ai-size-input-xs: calc(1.875rem * var(--mantine-scale));--ai-size-input-sm: calc(2.25rem * var(--mantine-scale));--ai-size-input-md: calc(2.625rem * var(--mantine-scale));--ai-size-input-lg: calc(3.125rem * var(--mantine-scale));--ai-size-input-xl: calc(3.75rem * var(--mantine-scale));--ai-size: var(--ai-size-md);--ai-color: var(--mantine-color-white);line-height:1;display:inline-flex;align-items:center;justify-content:center;position:relative;user-select:none;overflow:hidden;width:var(--ai-size);height:var(--ai-size);min-width:var(--ai-size);min-height:var(--ai-size);border-radius:var(--ai-radius, var(--mantine-radius-default));background:var(--ai-bg, var(--mantine-primary-color-filled));color:var(--ai-color, var(--mantine-color-white));border:var(--ai-bd, calc(.0625rem * var(--mantine-scale)) solid transparent);cursor:pointer}@media(hover:hover){.m_8d3f4000:hover:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--ai-hover, var(--mantine-primary-color-filled-hover));color:var(--ai-hover-color, var(--ai-color))}}@media(hover:none){.m_8d3f4000:active:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--ai-hover, var(--mantine-primary-color-filled-hover));color:var(--ai-hover-color, var(--ai-color))}}.m_8d3f4000[data-loading]{cursor:not-allowed}.m_8d3f4000[data-loading] .m_8d3afb97{opacity:0;transform:translateY(100%)}.m_8d3f4000:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])){cursor:not-allowed;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-disabled-color);background-color:var(--mantine-color-disabled)}.m_8d3f4000:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])):active{transform:none}.m_302b9fb1{inset:calc(-.0625rem * var(--mantine-scale));position:absolute;border-radius:var(--ai-radius, var(--mantine-radius-default));display:flex;align-items:center;justify-content:center}:where([data-mantine-color-scheme=light]) .m_302b9fb1{background-color:#ffffff26}:where([data-mantine-color-scheme=dark]) .m_302b9fb1{background-color:#00000026}.m_1a0f1b21{--ai-border-width: calc(.0625rem * var(--mantine-scale));display:flex}.m_1a0f1b21 :where(*):focus{position:relative;z-index:1}.m_1a0f1b21[data-orientation=horizontal]{flex-direction:row}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):first-child,.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):first-child{border-end-end-radius:0;border-start-end-radius:0;border-inline-end-width:calc(var(--ai-border-width) / 2)}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):last-child,.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):last-child{border-end-start-radius:0;border-start-start-radius:0;border-inline-start-width:calc(var(--ai-border-width) / 2)}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):not(:first-child):not(:last-child),.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):not(:first-child):not(:last-child){border-radius:0;border-inline-width:calc(var(--ai-border-width) / 2)}.m_1a0f1b21[data-orientation=vertical]{flex-direction:column}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):first-child,.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):first-child{border-end-start-radius:0;border-end-end-radius:0;border-bottom-width:calc(var(--ai-border-width) / 2)}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):last-child,.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):last-child{border-start-start-radius:0;border-start-end-radius:0;border-top-width:calc(var(--ai-border-width) / 2)}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):not(:first-child):not(:last-child),.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):not(:first-child):not(:last-child){border-radius:0;border-bottom-width:calc(var(--ai-border-width) / 2);border-top-width:calc(var(--ai-border-width) / 2)}.m_8d3afb97{display:flex;align-items:center;justify-content:center;transition:transform .15s ease,opacity .1s ease;width:100%;height:100%}.m_437b6484{--section-height-xs: calc(1.125rem * var(--mantine-scale));--section-height-sm: calc(1.375rem * var(--mantine-scale));--section-height-md: calc(1.75rem * var(--mantine-scale));--section-height-lg: calc(2.125rem * var(--mantine-scale));--section-height-xl: calc(2.75rem * var(--mantine-scale));--section-height-input-xs: calc(1.875rem * var(--mantine-scale));--section-height-input-sm: calc(2.25rem * var(--mantine-scale));--section-height-input-md: calc(2.625rem * var(--mantine-scale));--section-height-input-lg: calc(3.125rem * var(--mantine-scale));--section-height-input-xl: calc(3.75rem * var(--mantine-scale));--section-padding-x-xs: calc(.375rem * var(--mantine-scale));--section-padding-x-sm: calc(.5rem * var(--mantine-scale));--section-padding-x-md: calc(.625rem * var(--mantine-scale));--section-padding-x-lg: calc(.75rem * var(--mantine-scale));--section-padding-x-xl: calc(1rem * var(--mantine-scale));--section-height: var(--section-height-sm);--section-padding-x: var(--section-padding-x-sm);--section-color: var(--mantine-color-white);font-weight:600;width:auto;border-radius:var(--section-radius, var(--mantine-radius-default));font-size:var(--section-fz, var(--mantine-font-size-sm));background:var(--section-bg, var(--mantine-primary-color-filled));border:var(--section-bd, calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--section-color, var(--mantine-color-white));height:var(--section-height, var(--section-height-sm));padding-inline:var(--section-padding-x, var(--section-padding-x-sm));vertical-align:middle;line-height:1;display:inline-flex;align-items:center;justify-content:center}.m_86a44da5{--cb-size-xs: calc(1.125rem * var(--mantine-scale));--cb-size-sm: calc(1.375rem * var(--mantine-scale));--cb-size-md: calc(1.75rem * var(--mantine-scale));--cb-size-lg: calc(2.125rem * var(--mantine-scale));--cb-size-xl: calc(2.75rem * var(--mantine-scale));--cb-size: var(--cb-size-md);--cb-icon-size: 70%;--cb-radius: var(--mantine-radius-default);line-height:1;display:inline-flex;align-items:center;justify-content:center;position:relative;user-select:none;width:var(--cb-size);height:var(--cb-size);min-width:var(--cb-size);min-height:var(--cb-size);border-radius:var(--cb-radius)}:where([data-mantine-color-scheme=light]) .m_86a44da5{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_86a44da5{color:var(--mantine-color-dark-1)}.m_86a44da5[data-disabled],.m_86a44da5:disabled{cursor:not-allowed;opacity:.6}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_220c80f2:where(:not([data-disabled],:disabled)):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_220c80f2:where(:not([data-disabled],:disabled)):hover{background-color:var(--mantine-color-dark-6)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_220c80f2:where(:not([data-disabled],:disabled)):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_220c80f2:where(:not([data-disabled],:disabled)):active{background-color:var(--mantine-color-dark-6)}}.m_4081bf90{display:flex;flex-direction:row;flex-wrap:var(--group-wrap, wrap);justify-content:var(--group-justify, flex-start);align-items:var(--group-align, center);gap:var(--group-gap, var(--mantine-spacing-md))}.m_4081bf90:where([data-grow])>*{flex-grow:1;max-width:var(--group-child-width)}.m_615af6c9{line-height:1;padding:0;margin:0;font-weight:400;font-size:var(--mantine-font-size-md)}.m_b5489c3c{display:flex;justify-content:space-between;align-items:center;padding:var(--mb-padding, var(--mantine-spacing-md));padding-inline-end:calc(var(--mb-padding, var(--mantine-spacing-md)) - calc(.3125rem * var(--mantine-scale)));position:sticky;top:0;background-color:var(--mantine-color-body);z-index:1000;min-height:calc(3.75rem * var(--mantine-scale));transition:padding-inline-end .1s}.m_60c222c7{position:fixed;width:100%;top:0;bottom:0;z-index:var(--mb-z-index);pointer-events:none}.m_fd1ab0aa{pointer-events:all;box-shadow:var(--mb-shadow, var(--mantine-shadow-xl))}.m_fd1ab0aa [data-mantine-scrollbar]{z-index:1001}[data-offset-scrollbars] .m_fd1ab0aa:has([data-mantine-scrollbar]) .m_b5489c3c{padding-inline-end:calc(var(--mb-padding, var(--mantine-spacing-md)) + calc(.3125rem * var(--mantine-scale)))}.m_606cb269{margin-inline-start:auto}.m_5df29311{padding:var(--mb-padding, var(--mantine-spacing-md));padding-top:var(--mb-padding, var(--mantine-spacing-md))}.m_5df29311:where(:not(:only-child)){padding-top:0}.m_6c018570{position:relative;margin-top:var(--input-margin-top, 0rem);margin-bottom:var(--input-margin-bottom, 0rem);--input-height-xs: calc(1.875rem * var(--mantine-scale));--input-height-sm: calc(2.25rem * var(--mantine-scale));--input-height-md: calc(2.625rem * var(--mantine-scale));--input-height-lg: calc(3.125rem * var(--mantine-scale));--input-height-xl: calc(3.75rem * var(--mantine-scale));--input-padding-y-xs: calc(.3125rem * var(--mantine-scale));--input-padding-y-sm: calc(.375rem * var(--mantine-scale));--input-padding-y-md: calc(.5rem * var(--mantine-scale));--input-padding-y-lg: calc(.625rem * var(--mantine-scale));--input-padding-y-xl: calc(.8125rem * var(--mantine-scale));--input-height: var(--input-height-sm);--input-radius: var(--mantine-radius-default);--input-cursor: text;--input-text-align: left;--input-line-height: calc(var(--input-height) - calc(.125rem * var(--mantine-scale)));--input-padding: calc(var(--input-height) / 3);--input-padding-inline-start: var(--input-padding);--input-padding-inline-end: var(--input-padding);--input-placeholder-color: var(--mantine-color-placeholder);--input-color: var(--mantine-color-text);--input-disabled-bg: var(--mantine-color-disabled);--input-disabled-color: var(--mantine-color-disabled-color);--input-left-section-size: var(--input-left-section-width, calc(var(--input-height) - calc(.125rem * var(--mantine-scale))));--input-right-section-size: var( --input-right-section-width, calc(var(--input-height) - calc(.125rem * var(--mantine-scale))) );--input-size: var(--input-height);--section-y: calc(.0625rem * var(--mantine-scale));--left-section-start: calc(.0625rem * var(--mantine-scale));--left-section-border-radius: var(--input-radius) 0 0 var(--input-radius);--right-section-end: calc(.0625rem * var(--mantine-scale));--right-section-border-radius: 0 var(--input-radius) var(--input-radius) 0}.m_6c018570[data-variant=unstyled]{--input-padding: 0;--input-padding-y: 0;--input-padding-inline-start: 0;--input-padding-inline-end: 0}.m_6c018570[data-pointer]{--input-cursor: pointer}.m_6c018570[data-multiline]{--input-padding-y-xs: calc(.28125rem * var(--mantine-scale));--input-padding-y-sm: calc(.34375rem * var(--mantine-scale));--input-padding-y-md: calc(.4375rem * var(--mantine-scale));--input-padding-y-lg: calc(.59375rem * var(--mantine-scale));--input-padding-y-xl: calc(.8125rem * var(--mantine-scale));--input-size: auto;--input-line-height: var(--mantine-line-height)}.m_6c018570[data-with-left-section]{--input-padding-inline-start: var(--input-left-section-size)}.m_6c018570[data-with-right-section]{--input-padding-inline-end: var(--input-right-section-size)}.m_6c018570[data-size=xs] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end: calc(2.5625rem * var(--mantine-scale))}.m_6c018570[data-size=sm] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end: calc(3.125rem * var(--mantine-scale))}.m_6c018570[data-size=md] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end: calc(3.75rem * var(--mantine-scale))}.m_6c018570[data-size=lg] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end: calc(4.5rem * var(--mantine-scale))}.m_6c018570[data-size=xl] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end: calc(5.5625rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_6c018570[data-variant=default]{--input-bd: var(--mantine-color-gray-4);--input-bg: var(--mantine-color-white);--input-bd-focus: var(--mantine-primary-color-filled)}[data-mantine-color-scheme=light] .m_6c018570[data-variant=filled]{--input-bd: transparent;--input-bg: var(--mantine-color-gray-1);--input-bd-focus: var(--mantine-primary-color-filled)}[data-mantine-color-scheme=light] .m_6c018570[data-variant=unstyled]{--input-bd: transparent;--input-bg: transparent;--input-bd-focus: transparent}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=default]{--input-bd: var(--mantine-color-dark-4);--input-bg: var(--mantine-color-dark-6);--input-bd-focus: var(--mantine-primary-color-filled)}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=filled]{--input-bd: transparent;--input-bg: var(--mantine-color-dark-5);--input-bd-focus: var(--mantine-primary-color-filled)}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=unstyled]{--input-bd: transparent;--input-bg: transparent;--input-bd-focus: transparent}[data-mantine-color-scheme] .m_6c018570[data-error]:not([data-variant=unstyled]){--input-bd: var(--mantine-color-error)}[data-mantine-color-scheme] .m_6c018570[data-error]{--input-color: var(--mantine-color-error);--input-placeholder-color: var(--mantine-color-error);--input-section-color: var(--mantine-color-error)}:where([dir=rtl]) .m_6c018570{--input-text-align: right;--left-section-border-radius: 0 var(--input-radius) var(--input-radius) 0;--right-section-border-radius: var(--input-radius) 0 0 var(--input-radius)}.m_8fb7ebe7{-webkit-tap-highlight-color:transparent;appearance:none;resize:var(--input-resize, none);display:block;width:100%;transition:border-color .1s ease;text-align:var(--input-text-align);color:var(--input-color);border:calc(.0625rem * var(--mantine-scale)) solid var(--input-bd);background-color:var(--input-bg);font-family:var(--input-font-family, var(--mantine-font-family));height:var(--input-size);min-height:var(--input-height);line-height:var(--input-line-height);font-size:var(--_input-fz, var(--input-fz, var(--mantine-font-size-md)));border-radius:var(--input-radius);padding-inline-start:var(--input-padding-inline-start);padding-inline-end:var(--input-padding-inline-end);padding-top:var(--input-padding-y, 0rem);padding-bottom:var(--input-padding-y, 0rem);cursor:var(--input-cursor);overflow:var(--input-overflow)}.m_8fb7ebe7[data-no-overflow]{--input-overflow: hidden}.m_8fb7ebe7[data-monospace]{--input-font-family: var(--mantine-font-family-monospace);--_input-fz: calc(var(--input-fz) - calc(.125rem * var(--mantine-scale)))}.m_8fb7ebe7:focus,.m_8fb7ebe7:focus-within{outline:none;--input-bd: var(--input-bd-focus)}[data-error] .m_8fb7ebe7:focus,[data-error] .m_8fb7ebe7:focus-within{--input-bd: var(--mantine-color-error)}.m_8fb7ebe7::placeholder{color:var(--input-placeholder-color);opacity:1}.m_8fb7ebe7::-webkit-inner-spin-button,.m_8fb7ebe7::-webkit-outer-spin-button,.m_8fb7ebe7::-webkit-search-decoration,.m_8fb7ebe7::-webkit-search-cancel-button,.m_8fb7ebe7::-webkit-search-results-button,.m_8fb7ebe7::-webkit-search-results-decoration{appearance:none}.m_8fb7ebe7[type=number]{-moz-appearance:textfield}.m_8fb7ebe7:disabled,.m_8fb7ebe7[data-disabled]{cursor:not-allowed;opacity:.6;background-color:var(--input-disabled-bg);color:var(--input-disabled-color)}.m_8fb7ebe7:has(input:disabled){cursor:not-allowed;opacity:.6;background-color:var(--input-disabled-bg);color:var(--input-disabled-color)}.m_8fb7ebe7[readonly]{caret-color:transparent}.m_82577fc2{pointer-events:var(--section-pointer-events);position:absolute;z-index:1;inset-inline-start:var(--section-start);inset-inline-end:var(--section-end);bottom:var(--section-y);top:var(--section-y);display:flex;align-items:center;justify-content:center;width:var(--section-size);border-radius:var(--section-border-radius);color:var(--input-section-color, var(--mantine-color-dimmed))}.m_82577fc2[data-position=right]{--section-pointer-events: var(--input-right-section-pointer-events);--section-end: var(--right-section-end);--section-size: var(--input-right-section-size);--section-border-radius: var(--right-section-border-radius)}.m_6c018570[data-size=xs] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size: calc(2.5625rem * var(--mantine-scale))}.m_6c018570[data-size=sm] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size: calc(3.125rem * var(--mantine-scale))}.m_6c018570[data-size=md] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size: calc(3.75rem * var(--mantine-scale))}.m_6c018570[data-size=lg] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size: calc(4.5rem * var(--mantine-scale))}.m_6c018570[data-size=xl] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size: calc(5.5625rem * var(--mantine-scale))}.m_82577fc2[data-position=left]{--section-pointer-events: var(--input-left-section-pointer-events);--section-start: var(--left-section-start);--section-size: var(--input-left-section-size);--section-border-radius: var(--left-section-border-radius)}.m_88bacfd0{color:var(--input-placeholder-color, var(--mantine-color-placeholder))}[data-error] .m_88bacfd0{--input-placeholder-color: var(--input-color, var(--mantine-color-placeholder))}.m_46b77525{line-height:var(--mantine-line-height)}.m_8fdc1311{display:inline-block;font-weight:500;overflow-wrap:break-word;cursor:default;-webkit-tap-highlight-color:transparent;font-size:var(--input-label-size, var(--mantine-font-size-sm))}.m_78a94662{color:var(--input-asterisk-color, var(--mantine-color-error))}.m_8f816625,.m_fe47ce59{word-wrap:break-word;line-height:1.2;display:block;margin:0;padding:0}.m_8f816625{color:var(--mantine-color-error);font-size:var(--input-error-size, calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_fe47ce59{color:var(--mantine-color-dimmed);font-size:var(--input-description-size, calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_8bffd616{display:flex}.m_96b553a6{--transition-duration: .15s;top:0;left:0;position:absolute;z-index:0;transition-property:transform,width,height;transition-timing-function:ease;transition-duration:0ms}.m_96b553a6:where([data-initialized]){transition-duration:var(--transition-duration)}.m_96b553a6:where([data-hidden]){background-color:red;display:none}.m_9bdbb667{--accordion-radius: var(--mantine-radius-default)}.m_df78851f{overflow-wrap:break-word}.m_4ba554d4{padding:var(--mantine-spacing-md);padding-top:calc(var(--mantine-spacing-xs) / 2)}.m_8fa820a0{margin:0;padding:0}.m_4ba585b8{width:100%;display:flex;align-items:center;flex-direction:row-reverse;padding-inline:var(--mantine-spacing-md);opacity:1;cursor:pointer;background-color:transparent;color:var(--mantine-color-bright)}.m_4ba585b8:where([data-chevron-position=left]){flex-direction:row;padding-inline-start:0}.m_4ba585b8:where(:disabled,[data-disabled]){opacity:.4;cursor:not-allowed}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):hover,:where([data-mantine-color-scheme=light]) .m_4271d21b:where(:not(:disabled,[data-disabled])):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):hover,:where([data-mantine-color-scheme=dark]) .m_4271d21b:where(:not(:disabled,[data-disabled])):hover{background-color:var(--mantine-color-dark-6)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):active,:where([data-mantine-color-scheme=light]) .m_4271d21b:where(:not(:disabled,[data-disabled])):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):active,:where([data-mantine-color-scheme=dark]) .m_4271d21b:where(:not(:disabled,[data-disabled])):active{background-color:var(--mantine-color-dark-6)}}.m_df3ffa0f{color:inherit;font-weight:400;flex:1;overflow:hidden;text-overflow:ellipsis;padding-top:var(--mantine-spacing-sm);padding-bottom:var(--mantine-spacing-sm)}.m_3f35ae96{display:flex;align-items:center;justify-content:flex-start;transition:transform var(--accordion-transition-duration, .2s) ease;width:var(--accordion-chevron-size, calc(.9375rem * var(--mantine-scale)));min-width:var(--accordion-chevron-size, calc(.9375rem * var(--mantine-scale)));transform:rotate(0)}.m_3f35ae96:where([data-rotate]){transform:rotate(180deg)}.m_3f35ae96:where([data-position=left]){margin-inline-end:var(--mantine-spacing-md);margin-inline-start:var(--mantine-spacing-md)}.m_9bd771fe{display:flex;align-items:center;justify-content:center;margin-inline-end:var(--mantine-spacing-sm)}.m_9bd771fe:where([data-chevron-position=left]){margin-inline-end:0;margin-inline-start:var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_9bd7b098{--item-border-color: var(--mantine-color-gray-3);--item-filled-color: var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_9bd7b098{--item-border-color: var(--mantine-color-dark-4);--item-filled-color: var(--mantine-color-dark-6)}.m_fe19b709{border-bottom:1px solid var(--item-border-color)}.m_1f921b3b{border:1px solid var(--item-border-color);transition:background-color .15s ease}.m_1f921b3b:where([data-active]){background-color:var(--item-filled-color)}.m_1f921b3b:first-of-type{border-start-start-radius:var(--accordion-radius);border-start-end-radius:var(--accordion-radius)}.m_1f921b3b:first-of-type>[data-accordion-control]{border-start-start-radius:var(--accordion-radius);border-start-end-radius:var(--accordion-radius)}.m_1f921b3b:last-of-type{border-end-start-radius:var(--accordion-radius);border-end-end-radius:var(--accordion-radius)}.m_1f921b3b:last-of-type>[data-accordion-control]{border-end-start-radius:var(--accordion-radius);border-end-end-radius:var(--accordion-radius)}.m_1f921b3b+.m_1f921b3b{border-top:0}.m_2cdf939a{border-radius:var(--accordion-radius)}.m_2cdf939a:where([data-active]){background-color:var(--item-filled-color)}.m_9f59b069{background-color:var(--item-filled-color);border-radius:var(--accordion-radius);border:calc(.0625rem * var(--mantine-scale)) solid transparent;transition:background-color .15s ease}.m_9f59b069[data-active]{border-color:var(--item-border-color)}:where([data-mantine-color-scheme=light]) .m_9f59b069[data-active]{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_9f59b069[data-active]{background-color:var(--mantine-color-dark-7)}.m_9f59b069+.m_9f59b069{margin-top:var(--mantine-spacing-md)}.m_7f854edf{position:fixed;z-index:var(--affix-z-index);inset-inline-start:var(--affix-left);inset-inline-end:var(--affix-right);top:var(--affix-top);bottom:var(--affix-bottom)}.m_66836ed3{--alert-radius: var(--mantine-radius-default);--alert-bg: var(--mantine-primary-color-light);--alert-bd: calc(.0625rem * var(--mantine-scale)) solid transparent;--alert-color: var(--mantine-primary-color-light-color);padding:var(--mantine-spacing-md) var(--mantine-spacing-md);border-radius:var(--alert-radius);position:relative;overflow:hidden;background-color:var(--alert-bg);border:var(--alert-bd);color:var(--alert-color)}.m_a5d60502{display:flex}.m_667c2793{flex:1;display:flex;flex-direction:column;gap:var(--mantine-spacing-xs)}.m_6a03f287{display:flex;align-items:center;justify-content:space-between;font-size:var(--mantine-font-size-sm);font-weight:700}.m_6a03f287:where([data-with-close-button]){padding-inline-end:var(--mantine-spacing-md)}.m_698f4f23{display:block;overflow:hidden;text-overflow:ellipsis}.m_667f2a6a{line-height:1;width:calc(1.25rem * var(--mantine-scale));height:calc(1.25rem * var(--mantine-scale));display:flex;align-items:center;justify-content:flex-start;margin-inline-end:var(--mantine-spacing-md);margin-top:calc(.0625rem * var(--mantine-scale))}.m_7fa78076{text-overflow:ellipsis;overflow:hidden;font-size:var(--mantine-font-size-sm)}:where([data-mantine-color-scheme=light]) .m_7fa78076{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_7fa78076{color:var(--mantine-color-white)}.m_7fa78076:where([data-variant=filled]){color:var(--alert-color)}.m_7fa78076:where([data-variant=white]){color:var(--mantine-color-black)}.m_87f54839{width:calc(1.25rem * var(--mantine-scale));height:calc(1.25rem * var(--mantine-scale));color:var(--alert-color)}.m_b6d8b162{-webkit-tap-highlight-color:transparent;text-decoration:none;font-size:var(--text-fz, var(--mantine-font-size-md));line-height:var(--text-lh, var(--mantine-line-height-md));font-weight:400;margin:0;padding:0;color:var(--text-color)}.m_b6d8b162:where([data-truncate]){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m_b6d8b162:where([data-truncate=start]){direction:rtl;text-align:right}:where([dir=rtl]) .m_b6d8b162:where([data-truncate=start]){direction:ltr;text-align:left}.m_b6d8b162:where([data-variant=gradient]){background-image:var(--text-gradient);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.m_b6d8b162:where([data-line-clamp]){overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:var(--text-line-clamp);-webkit-box-orient:vertical}.m_b6d8b162:where([data-inherit]){line-height:inherit;font-weight:inherit;font-size:inherit}.m_b6d8b162:where([data-inline]){line-height:1}.m_849cf0da{color:var(--mantine-color-anchor);text-decoration:none;appearance:none;border:none;display:inline;padding:0;margin:0;background-color:transparent;cursor:pointer}@media(hover:hover){.m_849cf0da:where([data-underline=hover]):hover{text-decoration:underline}}@media(hover:none){.m_849cf0da:where([data-underline=hover]):active{text-decoration:underline}}.m_849cf0da:where([data-underline=not-hover]){text-decoration:underline}@media(hover:hover){.m_849cf0da:where([data-underline=not-hover]):hover{text-decoration:none}}@media(hover:none){.m_849cf0da:where([data-underline=not-hover]):active{text-decoration:none}}.m_849cf0da:where([data-underline=always]){text-decoration:underline}.m_849cf0da:where([data-variant=gradient]),.m_849cf0da:where([data-variant=gradient]):hover{text-decoration:none}.m_849cf0da:where([data-line-clamp]){display:-webkit-box}.m_48204f9b{width:var(--slider-size);height:var(--slider-size);position:relative;border-radius:100%;display:flex;align-items:center;justify-content:center;user-select:none}.m_48204f9b:focus-within{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_48204f9b{--slider-size: calc(3.75rem * var(--mantine-scale));--thumb-size: calc(var(--slider-size) / 5)}:where([data-mantine-color-scheme=light]) .m_48204f9b{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_48204f9b{background-color:var(--mantine-color-dark-5)}.m_bb9cdbad{position:absolute;inset:calc(.0625rem * var(--mantine-scale));border-radius:var(--slider-size);pointer-events:none}.m_481dd586{width:calc(.125rem * var(--mantine-scale));position:absolute;top:0;bottom:0;left:calc(50% - 1px);transform:rotate(var(--angle))}.m_481dd586:before{content:"";position:absolute;top:calc(var(--thumb-size) / 3);left:calc(.03125rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));height:calc(var(--thumb-size) / 1.5);transform:translate(-50%,-50%)}:where([data-mantine-color-scheme=light]) .m_481dd586:before{background-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_481dd586:before{background-color:var(--mantine-color-dark-3)}.m_481dd586[data-label]:after{min-width:calc(1.125rem * var(--mantine-scale));text-align:center;content:attr(data-label);position:absolute;top:calc(-1.5rem * var(--mantine-scale));left:calc(-.4375rem * var(--mantine-scale));transform:rotate(calc(360deg - var(--angle)));font-size:var(--mantine-font-size-xs)}.m_bc02ba3d{position:absolute;inset-block:0;inset-inline-start:calc(50% - 1.5px);inset-inline-end:0;height:100%;width:calc(.1875rem * var(--mantine-scale));outline:none;pointer-events:none}.m_bc02ba3d:before{content:"";position:absolute;right:0;top:0;height:min(var(--thumb-size),calc(var(--slider-size) / 2));width:calc(.1875rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_bc02ba3d:before{background-color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_bc02ba3d:before{background-color:var(--mantine-color-dark-1)}.m_bb8e875b{font-size:var(--mantine-font-size-xs)}.m_89ab340[data-resizing]{--app-shell-transition-duration: 0ms !important}.m_89ab340[data-disabled]{--app-shell-header-offset: 0rem !important;--app-shell-navbar-offset: 0rem !important;--app-shell-aside-offset: 0rem !important;--app-shell-footer-offset: 0rem !important}[data-mantine-color-scheme=light] .m_89ab340{--app-shell-border-color: var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_89ab340{--app-shell-border-color: var(--mantine-color-dark-4)}.m_45252eee,.m_9cdde9a,.m_3b16f56b,.m_8983817,.m_3840c879{transition-duration:var(--app-shell-transition-duration);transition-timing-function:var(--app-shell-transition-timing-function)}.m_45252eee,.m_9cdde9a{position:fixed;display:flex;flex-direction:column;top:var(--app-shell-header-offset, 0rem);height:calc(100dvh - var(--app-shell-header-offset, 0rem) - var(--app-shell-footer-offset, 0rem));background-color:var(--mantine-color-body);transition-property:transform,top,height}:where([data-layout=alt]) .m_45252eee,:where([data-layout=alt]) .m_9cdde9a{top:0rem;height:100dvh}.m_45252eee{inset-inline-start:0;width:var(--app-shell-navbar-width);transition-property:transform,top,height;transform:var(--app-shell-navbar-transform);z-index:var(--app-shell-navbar-z-index)}:where([dir=rtl]) .m_45252eee{transform:var(--app-shell-navbar-transform-rtl)}.m_45252eee:where([data-with-border]){border-inline-end:1px solid var(--app-shell-border-color)}.m_9cdde9a{inset-inline-end:0;width:var(--app-shell-aside-width);transform:var(--app-shell-aside-transform);z-index:var(--app-shell-aside-z-index)}:where([dir=rtl]) .m_9cdde9a{transform:var(--app-shell-aside-transform-rtl)}.m_9cdde9a:where([data-with-border]){border-inline-start:1px solid var(--app-shell-border-color)}:where([data-scroll-locked]) .m_9cdde9a{visibility:var(--app-shell-aside-scroll-locked-visibility)}.m_8983817{padding-inline-start:calc(var(--app-shell-navbar-offset, 0rem) + var(--app-shell-padding));padding-inline-end:calc(var(--app-shell-aside-offset, 0rem) + var(--app-shell-padding));padding-top:calc(var(--app-shell-header-offset, 0rem) + var(--app-shell-padding));padding-bottom:calc(var(--app-shell-footer-offset, 0rem) + var(--app-shell-padding));min-height:100dvh;transition-property:padding}.m_3b16f56b,.m_3840c879{position:fixed;inset-inline:0;transition-property:transform,margin-inline-start,margin-inline-end;background-color:var(--mantine-color-body)}:where([data-layout=alt]) .m_3b16f56b,:where([data-layout=alt]) .m_3840c879{margin-inline-start:var(--app-shell-navbar-offset, 0rem);margin-inline-end:var(--app-shell-aside-offset, 0rem)}.m_3b16f56b{top:0;height:var(--app-shell-header-height);background-color:var(--mantine-color-body);transform:var(--app-shell-header-transform);z-index:var(--app-shell-header-z-index)}.m_3b16f56b:where([data-with-border]){border-bottom:1px solid var(--app-shell-border-color)}.m_3840c879{bottom:0;height:calc(var(--app-shell-footer-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);transform:var(--app-shell-footer-transform);z-index:var(--app-shell-footer-z-index)}.m_3840c879:where([data-with-border]){border-top:1px solid var(--app-shell-border-color)}.m_6dcfc7c7{flex-grow:0}.m_6dcfc7c7:where([data-grow]){flex-grow:1}.m_71ac47fc{--ar-ratio: 1;max-width:100%}.m_71ac47fc>:where(*:not(style)){aspect-ratio:var(--ar-ratio);width:100%}.m_71ac47fc>:where(img,video){object-fit:cover}.m_88b62a41{--combobox-padding: calc(.25rem * var(--mantine-scale));padding:var(--combobox-padding)}.m_88b62a41:has([data-mantine-scrollbar]) .m_985517d8{max-width:calc(100% + var(--combobox-padding))}.m_88b62a41[data-composed]{padding-inline-end:0}.m_88b62a41[data-hidden]{display:none}.m_88b62a41,.m_b2821a6e{--combobox-option-padding-xs: calc(.25rem * var(--mantine-scale)) calc(.5rem * var(--mantine-scale));--combobox-option-padding-sm: calc(.375rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale));--combobox-option-padding-md: calc(.5rem * var(--mantine-scale)) calc(.75rem * var(--mantine-scale));--combobox-option-padding-lg: calc(.625rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));--combobox-option-padding-xl: calc(.875rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));--combobox-option-padding: var(--combobox-option-padding-sm)}.m_92253aa5{padding:var(--combobox-option-padding);font-size:var(--combobox-option-fz, var(--mantine-font-size-sm));border-radius:var(--mantine-radius-default);background-color:transparent;color:inherit;cursor:pointer;overflow-wrap:break-word}.m_92253aa5:where([data-combobox-selected]){background-color:var(--mantine-primary-color-filled);color:var(--mantine-color-white)}.m_92253aa5:where([data-combobox-disabled]){cursor:not-allowed;opacity:.35}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_92253aa5:hover:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_92253aa5:hover:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-dark-7)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_92253aa5:active:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_92253aa5:active:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-dark-7)}}.m_985517d8{margin-inline:calc(var(--combobox-padding) * -1);margin-top:calc(var(--combobox-padding) * -1);width:calc(100% + var(--combobox-padding) * 2);border-top-width:0;border-inline-width:0;border-end-start-radius:0;border-end-end-radius:0;margin-bottom:var(--combobox-padding);position:relative}:where([data-mantine-color-scheme=light]) .m_985517d8,:where([data-mantine-color-scheme=light]) .m_985517d8:focus{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_985517d8,:where([data-mantine-color-scheme=dark]) .m_985517d8:focus{border-color:var(--mantine-color-dark-4)}:where([data-mantine-color-scheme=light]) .m_985517d8{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_985517d8{background-color:var(--mantine-color-dark-7)}.m_2530cd1d{font-size:var(--combobox-option-fz, var(--mantine-font-size-sm));text-align:center;padding:var(--combobox-option-padding);color:var(--mantine-color-dimmed)}.m_858f94bd,.m_82b967cb{font-size:var(--combobox-option-fz, var(--mantine-font-size-sm));border:0 solid transparent;margin-inline:calc(var(--combobox-padding) * -1);padding:var(--combobox-option-padding)}:where([data-mantine-color-scheme=light]) .m_858f94bd,:where([data-mantine-color-scheme=light]) .m_82b967cb{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_858f94bd,:where([data-mantine-color-scheme=dark]) .m_82b967cb{border-color:var(--mantine-color-dark-4)}.m_82b967cb{border-top-width:calc(.0625rem * var(--mantine-scale));margin-top:var(--combobox-padding);margin-bottom:calc(var(--combobox-padding) * -1)}.m_858f94bd{border-bottom-width:calc(.0625rem * var(--mantine-scale));margin-bottom:var(--combobox-padding);margin-top:calc(var(--combobox-padding) * -1)}.m_254f3e4f:has(.m_2bb2e9e5:only-child){display:none}.m_2bb2e9e5{color:var(--mantine-color-dimmed);font-size:calc(var(--combobox-option-fz, var(--mantine-font-size-sm)) * .85);padding:var(--combobox-option-padding);font-weight:500;position:relative;display:flex;align-items:center}.m_2bb2e9e5:after{content:"";flex:1;inset-inline:0;height:calc(.0625rem * var(--mantine-scale));margin-inline-start:var(--mantine-spacing-xs)}:where([data-mantine-color-scheme=light]) .m_2bb2e9e5:after{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_2bb2e9e5:after{background-color:var(--mantine-color-dark-4)}.m_2bb2e9e5:only-child{display:none}.m_2943220b{--combobox-chevron-size-xs: calc(.875rem * var(--mantine-scale));--combobox-chevron-size-sm: calc(1.125rem * var(--mantine-scale));--combobox-chevron-size-md: calc(1.25rem * var(--mantine-scale));--combobox-chevron-size-lg: calc(1.5rem * var(--mantine-scale));--combobox-chevron-size-xl: calc(1.75rem * var(--mantine-scale));--combobox-chevron-size: var(--combobox-chevron-size-sm)}:where([data-mantine-color-scheme=light]) .m_2943220b{--_combobox-chevron-color: var(--combobox-chevron-color, var(--mantine-color-gray-6))}:where([data-mantine-color-scheme=dark]) .m_2943220b{--_combobox-chevron-color: var(--combobox-chevron-color, var(--mantine-color-dark-3))}.m_2943220b{width:var(--combobox-chevron-size);height:var(--combobox-chevron-size);color:var(--_combobox-chevron-color)}.m_2943220b:where([data-error]){color:var(--combobox-chevron-color, var(--mantine-color-error))}.m_390b5f4{display:flex;align-items:center;gap:calc(.5rem * var(--mantine-scale))}.m_390b5f4:where([data-reverse]){justify-content:space-between}.m_8ee53fc2{opacity:.4;width:.8em;min-width:.8em;height:.8em}:where([data-combobox-selected]) .m_8ee53fc2{opacity:1}.m_5f75b09e{--label-lh-xs: calc(1rem * var(--mantine-scale));--label-lh-sm: calc(1.25rem * var(--mantine-scale));--label-lh-md: calc(1.5rem * var(--mantine-scale));--label-lh-lg: calc(1.875rem * var(--mantine-scale));--label-lh-xl: calc(2.25rem * var(--mantine-scale));--label-lh: var(--label-lh-sm)}.m_5f75b09e[data-label-position=left]{--label-order: 1;--label-offset-end: var(--mantine-spacing-sm);--label-offset-start: 0}.m_5f75b09e[data-label-position=right]{--label-order: 2;--label-offset-end: 0;--label-offset-start: var(--mantine-spacing-sm)}.m_5f6e695e{-webkit-tap-highlight-color:transparent;display:flex}.m_d3ea56bb{--label-cursor: var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;display:inline-flex;flex-direction:column;font-size:var(--label-fz, var(--mantine-font-size-sm));line-height:var(--label-lh);cursor:var(--label-cursor);order:var(--label-order)}fieldset:disabled .m_d3ea56bb,.m_d3ea56bb[data-disabled]{--label-cursor: not-allowed}.m_8ee546b8{cursor:var(--label-cursor);color:inherit;padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}fieldset:disabled .m_8ee546b8,.m_8ee546b8:where([data-disabled]){color:var(--mantine-color-disabled-color)}.m_328f68c0,.m_8e8a99cc{margin-top:calc(var(--mantine-spacing-xs) / 2);padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}.m_26775b0a{--card-radius: var(--mantine-radius-default);display:block;width:100%;border-radius:var(--card-radius);cursor:pointer}.m_26775b0a :where(*){cursor:inherit}.m_26775b0a:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid transparent}:where([data-mantine-color-scheme=light]) .m_26775b0a:where([data-with-border]){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_26775b0a:where([data-with-border]){border-color:var(--mantine-color-dark-4)}.m_5e5256ee{--checkbox-size-xs: calc(1rem * var(--mantine-scale));--checkbox-size-sm: calc(1.25rem * var(--mantine-scale));--checkbox-size-md: calc(1.5rem * var(--mantine-scale));--checkbox-size-lg: calc(1.875rem * var(--mantine-scale));--checkbox-size-xl: calc(2.25rem * var(--mantine-scale));--checkbox-size: var(--checkbox-size-sm);--checkbox-color: var(--mantine-primary-color-filled)}.m_5e5256ee:where([data-variant=filled]){--checkbox-icon-color: var(--mantine-color-white)}.m_5e5256ee:where([data-variant=outline]){--checkbox-icon-color: var(--checkbox-color)}.m_5e5256ee{position:relative;border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--checkbox-size);min-width:var(--checkbox-size);height:var(--checkbox-size);min-height:var(--checkbox-size);border-radius:var(--checkbox-radius, var(--mantine-radius-default));transition:border-color .1s ease,background-color .1s ease;cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;display:flex;align-items:center;justify-content:center}:where([data-mantine-color-scheme=light]) .m_5e5256ee{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_5e5256ee{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_5e5256ee[data-indeterminate],.m_5e5256ee[data-checked]{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.m_5e5256ee[data-indeterminate]>.m_1b1c543a,.m_5e5256ee[data-checked]>.m_1b1c543a{opacity:1;transform:none;color:var(--checkbox-icon-color)}.m_5e5256ee[data-disabled]{cursor:not-allowed;border-color:var(--mantine-color-disabled-border);background-color:var(--mantine-color-disabled)}[data-mantine-color-scheme=light] .m_5e5256ee[data-disabled][data-checked]>.m_1b1c543a{color:var(--mantine-color-gray-5)}[data-mantine-color-scheme=dark] .m_5e5256ee[data-disabled][data-checked]>.m_1b1c543a{color:var(--mantine-color-dark-3)}.m_76e20374[data-indeterminate]:not([data-disabled]),.m_76e20374[data-checked]:not([data-disabled]){background-color:transparent;border-color:var(--checkbox-color)}.m_76e20374[data-indeterminate]:not([data-disabled])>.m_1b1c543a,.m_76e20374[data-checked]:not([data-disabled])>.m_1b1c543a{color:var(--checkbox-icon-color);opacity:1;transform:none}.m_1b1c543a{display:block;width:60%;color:transparent;pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:1;transition:transform .1s ease,opacity .1s ease}.m_bf2d988c{--checkbox-size-xs: calc(1rem * var(--mantine-scale));--checkbox-size-sm: calc(1.25rem * var(--mantine-scale));--checkbox-size-md: calc(1.5rem * var(--mantine-scale));--checkbox-size-lg: calc(1.875rem * var(--mantine-scale));--checkbox-size-xl: calc(2.25rem * var(--mantine-scale));--checkbox-size: var(--checkbox-size-sm);--checkbox-color: var(--mantine-primary-color-filled)}.m_bf2d988c:where([data-variant=filled]){--checkbox-icon-color: var(--mantine-color-white)}.m_bf2d988c:where([data-variant=outline]){--checkbox-icon-color: var(--checkbox-color)}.m_26062bec{position:relative;width:var(--checkbox-size);height:var(--checkbox-size);order:1}.m_26062bec:where([data-label-position=left]){order:2}.m_26063560{appearance:none;border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--checkbox-size);height:var(--checkbox-size);border-radius:var(--checkbox-radius, var(--mantine-radius-default));padding:0;display:block;margin:0;transition:border-color .1s ease,background-color .1s ease;cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent}:where([data-mantine-color-scheme=light]) .m_26063560{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_26063560{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_26063560:where([data-error]){border-color:var(--mantine-color-error)}.m_26063560[data-indeterminate],.m_26063560:checked{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.m_26063560[data-indeterminate]+.m_bf295423,.m_26063560:checked+.m_bf295423{opacity:1;transform:none}.m_26063560:disabled{cursor:not-allowed;border-color:var(--mantine-color-disabled-border);background-color:var(--mantine-color-disabled)}.m_26063560:disabled+.m_bf295423{color:var(--mantine-color-disabled-color)}.m_215c4542+.m_bf295423{color:var(--checkbox-color)}.m_215c4542[data-indeterminate]:not(:disabled),.m_215c4542:checked:not(:disabled){background-color:transparent;border-color:var(--checkbox-color)}.m_215c4542[data-indeterminate]:not(:disabled)+.m_bf295423,.m_215c4542:checked:not(:disabled)+.m_bf295423{color:var(--checkbox-icon-color);opacity:1;transform:none}.m_bf295423{position:absolute;inset:0;width:60%;margin:auto;color:var(--checkbox-icon-color);pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:0;transition:transform .1s ease,opacity .1s ease}.m_11def92b{--ag-spacing: var(--mantine-spacing-sm);--ag-offset: calc(var(--ag-spacing) * -1);display:flex;padding-inline-start:var(--ag-spacing)}.m_f85678b6{--avatar-size-xs: calc(1rem * var(--mantine-scale));--avatar-size-sm: calc(1.625rem * var(--mantine-scale));--avatar-size-md: calc(2.375rem * var(--mantine-scale));--avatar-size-lg: calc(3.5rem * var(--mantine-scale));--avatar-size-xl: calc(5.25rem * var(--mantine-scale));--avatar-size: var(--avatar-size-md);--avatar-radius: calc(62.5rem * var(--mantine-scale));--avatar-bg: var(--mantine-color-gray-light);--avatar-bd: calc(.0625rem * var(--mantine-scale)) solid transparent;--avatar-color: var(--mantine-color-gray-light-color);--avatar-placeholder-fz: calc(var(--avatar-size) / 2.5);-webkit-tap-highlight-color:transparent;position:relative;display:block;user-select:none;overflow:hidden;border-radius:var(--avatar-radius);text-decoration:none;padding:0;width:var(--avatar-size);height:var(--avatar-size);min-width:var(--avatar-size)}.m_f85678b6:where([data-within-group]){margin-inline-start:var(--ag-offset);border:2px solid var(--mantine-color-body);background:var(--mantine-color-body)}.m_11f8ac07{object-fit:cover;width:100%;height:100%;display:block}.m_104cd71f{font-weight:700;display:flex;align-items:center;justify-content:center;width:100%;height:100%;user-select:none;border-radius:var(--avatar-radius);font-size:var(--avatar-placeholder-fz);background:var(--avatar-bg);border:var(--avatar-bd);color:var(--avatar-color)}.m_104cd71f>[data-avatar-placeholder-icon]{width:70%;height:70%}.m_2ce0de02{background-size:cover;background-position:center;display:block;width:100%;border:0;text-decoration:none;border-radius:var(--bi-radius, 0)}.m_347db0ec{--badge-height-xs: calc(1rem * var(--mantine-scale));--badge-height-sm: calc(1.125rem * var(--mantine-scale));--badge-height-md: calc(1.25rem * var(--mantine-scale));--badge-height-lg: calc(1.625rem * var(--mantine-scale));--badge-height-xl: calc(2rem * var(--mantine-scale));--badge-fz-xs: calc(.5625rem * var(--mantine-scale));--badge-fz-sm: calc(.625rem * var(--mantine-scale));--badge-fz-md: calc(.6875rem * var(--mantine-scale));--badge-fz-lg: calc(.8125rem * var(--mantine-scale));--badge-fz-xl: calc(1rem * var(--mantine-scale));--badge-padding-x-xs: calc(.375rem * var(--mantine-scale));--badge-padding-x-sm: calc(.5rem * var(--mantine-scale));--badge-padding-x-md: calc(.625rem * var(--mantine-scale));--badge-padding-x-lg: calc(.75rem * var(--mantine-scale));--badge-padding-x-xl: calc(1rem * var(--mantine-scale));--badge-height: var(--badge-height-md);--badge-fz: var(--badge-fz-md);--badge-padding-x: var(--badge-padding-x-md);--badge-radius: calc(62.5rem * var(--mantine-scale));--badge-lh: calc(var(--badge-height) - calc(.125rem * var(--mantine-scale)));--badge-color: var(--mantine-color-white);--badge-bg: var(--mantine-primary-color-filled);--badge-border-width: calc(.0625rem * var(--mantine-scale));--badge-bd: var(--badge-border-width) solid transparent;-webkit-tap-highlight-color:transparent;font-size:var(--badge-fz);border-radius:var(--badge-radius);height:var(--badge-height);line-height:var(--badge-lh);text-decoration:none;padding:0 var(--badge-padding-x);display:inline-grid;align-items:center;justify-content:center;width:fit-content;text-transform:uppercase;font-weight:700;letter-spacing:calc(.015625rem * var(--mantine-scale));cursor:default;text-overflow:ellipsis;overflow:hidden;color:var(--badge-color);background:var(--badge-bg);border:var(--badge-bd)}.m_347db0ec:where([data-with-left-section],[data-variant=dot]){grid-template-columns:auto 1fr}.m_347db0ec:where([data-with-right-section]){grid-template-columns:1fr auto}.m_347db0ec:where([data-with-left-section][data-with-right-section],[data-variant=dot][data-with-right-section]){grid-template-columns:auto 1fr auto}.m_347db0ec:where([data-block]){display:flex;width:100%}.m_347db0ec:where([data-circle]){padding-inline:calc(.125rem * var(--mantine-scale));display:flex;width:var(--badge-height)}.m_fbd81e3d{--badge-dot-size: calc(var(--badge-height) / 3.4)}:where([data-mantine-color-scheme=light]) .m_fbd81e3d{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4);color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_fbd81e3d{background-color:var(--mantine-color-dark-5);border-color:var(--mantine-color-dark-5);color:var(--mantine-color-white)}.m_fbd81e3d:before{content:"";display:block;width:var(--badge-dot-size);height:var(--badge-dot-size);border-radius:var(--badge-dot-size);background-color:var(--badge-dot-color);margin-inline-end:var(--badge-dot-size)}.m_5add502a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;cursor:inherit}.m_91fdda9b{--badge-section-margin: calc(var(--mantine-spacing-xs) / 2);display:inline-flex;justify-content:center;align-items:center;max-height:calc(var(--badge-height) - var(--badge-border-width) * 2)}.m_91fdda9b:where([data-position=left]){margin-inline-end:var(--badge-section-margin)}.m_91fdda9b:where([data-position=right]){margin-inline-start:var(--badge-section-margin)}.m_ddec01c0{--blockquote-border: 3px solid var(--bq-bd);position:relative;margin:0;border-inline-start:var(--blockquote-border);border-start-end-radius:var(--bq-radius);border-end-end-radius:var(--bq-radius);padding:var(--mantine-spacing-xl) calc(2.375rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_ddec01c0{background-color:var(--bq-bg-light)}:where([data-mantine-color-scheme=dark]) .m_ddec01c0{background-color:var(--bq-bg-dark)}.m_dde7bd57{--blockquote-icon-offset: calc(var(--bq-icon-size) / -2);position:absolute;color:var(--bq-bd);background-color:var(--mantine-color-body);display:flex;align-items:center;justify-content:center;top:var(--blockquote-icon-offset);inset-inline-start:var(--blockquote-icon-offset);width:var(--bq-icon-size);height:var(--bq-icon-size);border-radius:var(--bq-icon-size)}.m_dde51a35{display:block;margin-top:var(--mantine-spacing-md);opacity:.6;font-size:85%}.m_8b3717df{display:flex;align-items:center;flex-wrap:wrap}.m_f678d540{line-height:1;white-space:nowrap;-webkit-tap-highlight-color:transparent}.m_3b8f2208{margin-inline:var(--bc-separator-margin, var(--mantine-spacing-xs));line-height:1;display:flex;align-items:center;justify-content:center}:where([data-mantine-color-scheme=light]) .m_3b8f2208{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_3b8f2208{color:var(--mantine-color-dark-2)}.m_fea6bf1a{--burger-size-xs: calc(.75rem * var(--mantine-scale));--burger-size-sm: calc(1.125rem * var(--mantine-scale));--burger-size-md: calc(1.5rem * var(--mantine-scale));--burger-size-lg: calc(2.125rem * var(--mantine-scale));--burger-size-xl: calc(2.625rem * var(--mantine-scale));--burger-size: var(--burger-size-md);--burger-line-size: calc(var(--burger-size) / 12);width:calc(var(--burger-size) + var(--mantine-spacing-xs));height:calc(var(--burger-size) + var(--mantine-spacing-xs));padding:calc(var(--mantine-spacing-xs) / 2);cursor:pointer}:where([data-mantine-color-scheme=light]) .m_fea6bf1a{--burger-color: var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_fea6bf1a{--burger-color: var(--mantine-color-white)}.m_d4fb9cad{position:relative;user-select:none}.m_d4fb9cad,.m_d4fb9cad:before,.m_d4fb9cad:after{display:block;width:var(--burger-size);height:var(--burger-line-size);background-color:var(--burger-color);outline:calc(.0625rem * var(--mantine-scale)) solid transparent;transition-property:background-color,transform;transition-duration:var(--burger-transition-duration, .3s);transition-timing-function:var(--burger-transition-timing-function, ease)}.m_d4fb9cad:before,.m_d4fb9cad:after{position:absolute;content:"";inset-inline-start:0}.m_d4fb9cad:before{top:calc(var(--burger-size) / -3)}.m_d4fb9cad:after{top:calc(var(--burger-size) / 3)}.m_d4fb9cad[data-opened]{background-color:transparent}.m_d4fb9cad[data-opened]:before{transform:translateY(calc(var(--burger-size) / 3)) rotate(45deg)}.m_d4fb9cad[data-opened]:after{transform:translateY(calc(var(--burger-size) / -3)) rotate(-45deg)}.m_77c9d27d{--button-height-xs: calc(1.875rem * var(--mantine-scale));--button-height-sm: calc(2.25rem * var(--mantine-scale));--button-height-md: calc(2.625rem * var(--mantine-scale));--button-height-lg: calc(3.125rem * var(--mantine-scale));--button-height-xl: calc(3.75rem * var(--mantine-scale));--button-height-compact-xs: calc(1.375rem * var(--mantine-scale));--button-height-compact-sm: calc(1.625rem * var(--mantine-scale));--button-height-compact-md: calc(1.875rem * var(--mantine-scale));--button-height-compact-lg: calc(2.125rem * var(--mantine-scale));--button-height-compact-xl: calc(2.5rem * var(--mantine-scale));--button-padding-x-xs: calc(.875rem * var(--mantine-scale));--button-padding-x-sm: calc(1.125rem * var(--mantine-scale));--button-padding-x-md: calc(1.375rem * var(--mantine-scale));--button-padding-x-lg: calc(1.625rem * var(--mantine-scale));--button-padding-x-xl: calc(2rem * var(--mantine-scale));--button-padding-x-compact-xs: calc(.4375rem * var(--mantine-scale));--button-padding-x-compact-sm: calc(.5rem * var(--mantine-scale));--button-padding-x-compact-md: calc(.625rem * var(--mantine-scale));--button-padding-x-compact-lg: calc(.75rem * var(--mantine-scale));--button-padding-x-compact-xl: calc(.875rem * var(--mantine-scale));--button-height: var(--button-height-sm);--button-padding-x: var(--button-padding-x-sm);--button-color: var(--mantine-color-white);user-select:none;font-weight:600;position:relative;line-height:1;text-align:center;overflow:hidden;width:auto;cursor:pointer;display:inline-block;border-radius:var(--button-radius, var(--mantine-radius-default));font-size:var(--button-fz, var(--mantine-font-size-sm));background:var(--button-bg, var(--mantine-primary-color-filled));border:var(--button-bd, calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--button-color, var(--mantine-color-white));height:var(--button-height, var(--button-height-sm));padding-inline:var(--button-padding-x, var(--button-padding-x-sm));vertical-align:middle}.m_77c9d27d:where([data-block]){display:block;width:100%}.m_77c9d27d:where([data-with-left-section]){padding-inline-start:calc(var(--button-padding-x) / 1.5)}.m_77c9d27d:where([data-with-right-section]){padding-inline-end:calc(var(--button-padding-x) / 1.5)}.m_77c9d27d:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])){cursor:not-allowed;border:calc(.0625rem * var(--mantine-scale)) solid transparent;transform:none;color:var(--mantine-color-disabled-color);background:var(--mantine-color-disabled)}.m_77c9d27d:before{content:"";pointer-events:none;position:absolute;inset:calc(-.0625rem * var(--mantine-scale));border-radius:var(--button-radius, var(--mantine-radius-default));transform:translateY(-100%);opacity:0;filter:blur(12px);transition:transform .15s ease,opacity .1s ease}:where([data-mantine-color-scheme=light]) .m_77c9d27d:before{background-color:#ffffff26}:where([data-mantine-color-scheme=dark]) .m_77c9d27d:before{background-color:#00000026}.m_77c9d27d:where([data-loading]){cursor:not-allowed;transform:none}.m_77c9d27d:where([data-loading]):before{transform:translateY(0);opacity:1}.m_77c9d27d:where([data-loading]) .m_80f1301b{opacity:0;transform:translateY(100%)}@media(hover:hover){.m_77c9d27d:hover:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--button-hover, var(--mantine-primary-color-filled-hover));color:var(--button-hover-color, var(--button-color))}}@media(hover:none){.m_77c9d27d:active:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--button-hover, var(--mantine-primary-color-filled-hover));color:var(--button-hover-color, var(--button-color))}}.m_80f1301b{display:flex;align-items:center;justify-content:var(--button-justify, center);height:100%;overflow:visible;transition:transform .15s ease,opacity .1s ease}.m_811560b9{white-space:nowrap;height:100%;overflow:hidden;display:flex;align-items:center;opacity:1}.m_811560b9:where([data-loading]){opacity:.2}.m_a74036a{display:flex;align-items:center}.m_a74036a:where([data-position=left]){margin-inline-end:var(--mantine-spacing-xs)}.m_a74036a:where([data-position=right]){margin-inline-start:var(--mantine-spacing-xs)}.m_a25b86ee{position:absolute;left:50%;top:50%}.m_80d6d844{--button-border-width: calc(.0625rem * var(--mantine-scale));display:flex}.m_80d6d844 :where(.m_77c9d27d):focus{position:relative;z-index:1}.m_80d6d844[data-orientation=horizontal]{flex-direction:row}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):first-child,.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):first-child{border-end-end-radius:0;border-start-end-radius:0;border-inline-end-width:calc(var(--button-border-width) / 2)}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):last-child,.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):last-child{border-end-start-radius:0;border-start-start-radius:0;border-inline-start-width:calc(var(--button-border-width) / 2)}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):not(:first-child):not(:last-child),.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):not(:first-child):not(:last-child){border-radius:0;border-inline-width:calc(var(--button-border-width) / 2)}.m_80d6d844[data-orientation=vertical]{flex-direction:column}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):first-child,.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):first-child{border-end-start-radius:0;border-end-end-radius:0;border-bottom-width:calc(var(--button-border-width) / 2)}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):last-child,.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):last-child{border-start-start-radius:0;border-start-end-radius:0;border-top-width:calc(var(--button-border-width) / 2)}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):not(:first-child):not(:last-child),.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):not(:first-child):not(:last-child){border-radius:0;border-bottom-width:calc(var(--button-border-width) / 2);border-top-width:calc(var(--button-border-width) / 2)}.m_70be2a01{--section-height-xs: calc(1.875rem * var(--mantine-scale));--section-height-sm: calc(2.25rem * var(--mantine-scale));--section-height-md: calc(2.625rem * var(--mantine-scale));--section-height-lg: calc(3.125rem * var(--mantine-scale));--section-height-xl: calc(3.75rem * var(--mantine-scale));--section-height-compact-xs: calc(1.375rem * var(--mantine-scale));--section-height-compact-sm: calc(1.625rem * var(--mantine-scale));--section-height-compact-md: calc(1.875rem * var(--mantine-scale));--section-height-compact-lg: calc(2.125rem * var(--mantine-scale));--section-height-compact-xl: calc(2.5rem * var(--mantine-scale));--section-padding-x-xs: calc(.875rem * var(--mantine-scale));--section-padding-x-sm: calc(1.125rem * var(--mantine-scale));--section-padding-x-md: calc(1.375rem * var(--mantine-scale));--section-padding-x-lg: calc(1.625rem * var(--mantine-scale));--section-padding-x-xl: calc(2rem * var(--mantine-scale));--section-padding-x-compact-xs: calc(.4375rem * var(--mantine-scale));--section-padding-x-compact-sm: calc(.5rem * var(--mantine-scale));--section-padding-x-compact-md: calc(.625rem * var(--mantine-scale));--section-padding-x-compact-lg: calc(.75rem * var(--mantine-scale));--section-padding-x-compact-xl: calc(.875rem * var(--mantine-scale));--section-height: var(--section-height-sm);--section-padding-x: var(--section-padding-x-sm);--section-color: var(--mantine-color-white);font-weight:600;width:auto;border-radius:var(--section-radius, var(--mantine-radius-default));font-size:var(--section-fz, var(--mantine-font-size-sm));background:var(--section-bg, var(--mantine-primary-color-filled));border:var(--section-bd, calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--section-color, var(--mantine-color-white));height:var(--section-height, var(--section-height-sm));padding-inline:var(--section-padding-x, var(--section-padding-x-sm));vertical-align:middle;line-height:1;display:inline-flex;align-items:center;justify-content:center}.m_e615b15f{--card-padding: var(--mantine-spacing-md);position:relative;overflow:hidden;display:flex;flex-direction:column;padding:var(--card-padding);color:var(--mantine-color-text)}:where([data-mantine-color-scheme=light]) .m_e615b15f{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_e615b15f{background-color:var(--mantine-color-dark-6)}.m_599a2148{display:block;margin-inline:calc(var(--card-padding) * -1)}.m_599a2148:where(:first-child){margin-top:calc(var(--card-padding) * -1);border-top:none!important}.m_599a2148:where(:last-child){margin-bottom:calc(var(--card-padding) * -1);border-bottom:none!important}.m_599a2148:where([data-inherit-padding]){padding-inline:var(--card-padding)}.m_599a2148:where([data-with-border]){border-top:calc(.0625rem * var(--mantine-scale)) solid;border-bottom:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_599a2148{border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_599a2148{border-color:var(--mantine-color-dark-4)}.m_599a2148+.m_599a2148{border-top:none!important}.m_4451eb3a{display:flex;align-items:center;justify-content:center}.m_4451eb3a:where([data-inline]){display:inline-flex}.m_f59ffda3{--chip-size-xs: calc(1.4375rem * var(--mantine-scale));--chip-size-sm: calc(1.75rem * var(--mantine-scale));--chip-size-md: calc(2rem * var(--mantine-scale));--chip-size-lg: calc(2.25rem * var(--mantine-scale));--chip-size-xl: calc(2.5rem * var(--mantine-scale));--chip-icon-size-xs: calc(.5625rem * var(--mantine-scale));--chip-icon-size-sm: calc(.75rem * var(--mantine-scale));--chip-icon-size-md: calc(.875rem * var(--mantine-scale));--chip-icon-size-lg: calc(1rem * var(--mantine-scale));--chip-icon-size-xl: calc(1.125rem * var(--mantine-scale));--chip-padding-xs: calc(1rem * var(--mantine-scale));--chip-padding-sm: calc(1.25rem * var(--mantine-scale));--chip-padding-md: calc(1.5rem * var(--mantine-scale));--chip-padding-lg: calc(1.75rem * var(--mantine-scale));--chip-padding-xl: calc(2rem * var(--mantine-scale));--chip-checked-padding-xs: calc(.5125rem * var(--mantine-scale));--chip-checked-padding-sm: calc(.625rem * var(--mantine-scale));--chip-checked-padding-md: calc(.73125rem * var(--mantine-scale));--chip-checked-padding-lg: calc(.84375rem * var(--mantine-scale));--chip-checked-padding-xl: calc(.98125rem * var(--mantine-scale));--chip-spacing-xs: calc(.625rem * var(--mantine-scale));--chip-spacing-sm: calc(.75rem * var(--mantine-scale));--chip-spacing-md: calc(1rem * var(--mantine-scale));--chip-spacing-lg: calc(1.25rem * var(--mantine-scale));--chip-spacing-xl: calc(1.375rem * var(--mantine-scale));--chip-size: var(--chip-size-sm);--chip-icon-size: var(--chip-icon-size-sm);--chip-padding: var(--chip-padding-sm);--chip-spacing: var(--chip-spacing-sm);--chip-checked-padding: var(--chip-checked-padding-sm);--chip-bg: var(--mantine-primary-color-filled);--chip-hover: var(--mantine-primary-color-filled-hover);--chip-color: var(--mantine-color-white);--chip-bd: calc(.0625rem * var(--mantine-scale)) solid transparent}.m_be049a53{display:inline-flex;align-items:center;user-select:none;border-radius:var(--chip-radius, 1000rem);height:var(--chip-size);font-size:var(--chip-fz, var(--mantine-font-size-sm));line-height:calc(var(--chip-size) - calc(.125rem * var(--mantine-scale)));padding-inline:var(--chip-padding);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-text)}.m_be049a53:where([data-checked]){padding:var(--chip-checked-padding)}.m_be049a53:where([data-disabled]){cursor:not-allowed;background-color:var(--mantine-color-disabled);color:var(--mantine-color-disabled-color)}:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]){background-color:var(--mantine-color-white);border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]){background-color:var(--mantine-color-dark-6);border:1px solid var(--mantine-color-dark-4)}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]):hover{background-color:var(--mantine-color-dark-5)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]):active{background-color:var(--mantine-color-dark-5)}}.m_3904c1af:not([data-disabled]):where([data-checked]){--chip-icon-color: var(--chip-color);border:var(--chip-bd)}@media(hover:hover){.m_3904c1af:not([data-disabled]):where([data-checked]):hover{background-color:var(--chip-hover)}}@media(hover:none){.m_3904c1af:not([data-disabled]):where([data-checked]):active{background-color:var(--chip-hover)}}.m_fa109255:not([data-disabled]),.m_f7e165c3:not([data-disabled]){border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-text)}:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]),:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]),:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]){background-color:var(--mantine-color-dark-5)}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]):hover,:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]):hover{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]):hover,:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]):hover{background-color:var(--mantine-color-dark-4)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]):active,:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]):active{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]):active,:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]):active{background-color:var(--mantine-color-dark-4)}}.m_fa109255:not([data-disabled]):where([data-checked]),.m_f7e165c3:not([data-disabled]):where([data-checked]){--chip-icon-color: var(--chip-color);color:var(--chip-color);background-color:var(--chip-bg)}@media(hover:hover){.m_fa109255:not([data-disabled]):where([data-checked]):hover,.m_f7e165c3:not([data-disabled]):where([data-checked]):hover{background-color:var(--chip-hover)}}@media(hover:none){.m_fa109255:not([data-disabled]):where([data-checked]):active,.m_f7e165c3:not([data-disabled]):where([data-checked]):active{background-color:var(--chip-hover)}}.m_9ac86df9{width:calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));max-width:calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));height:var(--chip-icon-size);display:flex;align-items:center;overflow:hidden}.m_d6d72580{width:var(--chip-icon-size);height:var(--chip-icon-size);display:block;color:var(--chip-icon-color, inherit)}.m_bde07329{width:0;height:0;padding:0;opacity:0;margin:0}.m_bde07329:focus-visible+.m_be049a53{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_b183c0a2{font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);padding:2px calc(var(--mantine-spacing-xs) / 2);border-radius:var(--mantine-radius-sm);font-size:var(--mantine-font-size-xs);margin:0;overflow:auto}:where([data-mantine-color-scheme=light]) .m_b183c0a2{background-color:var(--code-bg, var(--mantine-color-gray-0))}:where([data-mantine-color-scheme=dark]) .m_b183c0a2{background-color:var(--code-bg, var(--mantine-color-dark-6))}.m_b183c0a2[data-block]{padding:var(--mantine-spacing-xs)}.m_de3d2490{--cs-size: calc(1.75rem * var(--mantine-scale));--cs-radius: calc(62.5rem * var(--mantine-scale));-webkit-tap-highlight-color:transparent;border:none;appearance:none;display:block;line-height:1;position:relative;width:var(--cs-size);height:var(--cs-size);min-width:var(--cs-size);min-height:var(--cs-size);border-radius:var(--cs-radius);color:inherit;text-decoration:none}[data-mantine-color-scheme=light] .m_de3d2490{--alpha-overlay-color: var(--mantine-color-gray-3);--alpha-overlay-bg: var(--mantine-color-white)}[data-mantine-color-scheme=dark] .m_de3d2490{--alpha-overlay-color: var(--mantine-color-dark-4);--alpha-overlay-bg: var(--mantine-color-dark-7)}.m_862f3d1b{position:absolute;inset:0;border-radius:var(--cs-radius)}.m_98ae7f22{position:absolute;inset:0;border-radius:var(--cs-radius);z-index:1;box-shadow:#0000001a 0 0 0 calc(.0625rem * var(--mantine-scale)) inset,#00000026 0 0 calc(.25rem * var(--mantine-scale)) inset}.m_95709ac0{position:absolute;inset:0;border-radius:var(--cs-radius);background-size:calc(.5rem * var(--mantine-scale)) calc(.5rem * var(--mantine-scale));background-position:0 0,0 calc(.25rem * var(--mantine-scale)),calc(.25rem * var(--mantine-scale)) calc(-.25rem * var(--mantine-scale)),calc(-.25rem * var(--mantine-scale)) 0;background-image:linear-gradient(45deg,var(--alpha-overlay-color) 25%,transparent 25%),linear-gradient(-45deg,var(--alpha-overlay-color) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--alpha-overlay-color) 75%),linear-gradient(-45deg,var(--alpha-overlay-bg) 75%,var(--alpha-overlay-color) 75%)}.m_93e74e3{position:absolute;inset:0;border-radius:var(--cs-radius);z-index:2;display:flex;align-items:center;justify-content:center}.m_fee9c77{--cp-width-xs: calc(11.25rem * var(--mantine-scale));--cp-width-sm: calc(12.5rem * var(--mantine-scale));--cp-width-md: calc(15rem * var(--mantine-scale));--cp-width-lg: calc(17.5rem * var(--mantine-scale));--cp-width-xl: calc(20rem * var(--mantine-scale));--cp-preview-size-xs: calc(1.625rem * var(--mantine-scale));--cp-preview-size-sm: calc(2.125rem * var(--mantine-scale));--cp-preview-size-md: calc(2.625rem * var(--mantine-scale));--cp-preview-size-lg: calc(3.125rem * var(--mantine-scale));--cp-preview-size-xl: calc(3.375rem * var(--mantine-scale));--cp-thumb-size-xs: calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm: calc(.75rem * var(--mantine-scale));--cp-thumb-size-md: calc(1rem * var(--mantine-scale));--cp-thumb-size-lg: calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl: calc(1.375rem * var(--mantine-scale));--cp-saturation-height-xs: calc(6.25rem * var(--mantine-scale));--cp-saturation-height-sm: calc(6.875rem * var(--mantine-scale));--cp-saturation-height-md: calc(7.5rem * var(--mantine-scale));--cp-saturation-height-lg: calc(8.75rem * var(--mantine-scale));--cp-saturation-height-xl: calc(10rem * var(--mantine-scale));--cp-preview-size: var(--cp-preview-size-sm);--cp-thumb-size: var(--cp-thumb-size-sm);--cp-saturation-height: var(--cp-saturation-height-sm);--cp-width: var(--cp-width-sm);--cp-body-spacing: var(--mantine-spacing-sm);width:var(--cp-width);padding:calc(.0625rem * var(--mantine-scale))}.m_fee9c77:where([data-full-width]){width:100%}.m_9dddfbac{width:var(--cp-preview-size);height:var(--cp-preview-size)}.m_bffecc3e{display:flex;padding-top:calc(var(--cp-body-spacing) / 2)}.m_3283bb96{flex:1}.m_3283bb96:not(:only-child){margin-inline-end:var(--mantine-spacing-xs)}.m_40d572ba{overflow:hidden;position:absolute;box-shadow:0 0 1px #0009;border:2px solid var(--mantine-color-white);width:var(--cp-thumb-size);height:var(--cp-thumb-size);border-radius:var(--cp-thumb-size);left:calc(var(--thumb-x-offset) - var(--cp-thumb-size) / 2);top:calc(var(--thumb-y-offset) - var(--cp-thumb-size) / 2)}.m_d8ee6fd8{height:unset!important;width:unset!important;min-width:0!important;min-height:0!important;margin:calc(.125rem * var(--mantine-scale));cursor:pointer;padding-bottom:calc(var(--cp-swatch-size) - calc(.25rem * var(--mantine-scale)));flex:0 0 calc(var(--cp-swatch-size) - calc(.25rem * var(--mantine-scale)))}.m_5711e686{margin-top:calc(.3125rem * var(--mantine-scale));margin-inline:calc(-.125rem * var(--mantine-scale));display:flex;flex-wrap:wrap}.m_5711e686:only-child{margin-top:0}.m_202a296e{--cp-thumb-size-xs: calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm: calc(.75rem * var(--mantine-scale));--cp-thumb-size-md: calc(1rem * var(--mantine-scale));--cp-thumb-size-lg: calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl: calc(1.375rem * var(--mantine-scale));-webkit-tap-highlight-color:transparent;position:relative;height:var(--cp-saturation-height);border-radius:var(--mantine-radius-sm);margin:calc(var(--cp-thumb-size) / 2)}.m_202a296e:where([data-focus-ring=auto]):focus:focus-visible .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}.m_202a296e:where([data-focus-ring=always]):focus .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}.m_11b3db02{position:absolute;border-radius:var(--mantine-radius-sm);inset:calc(var(--cp-thumb-size) * -1 / 2 - calc(.0625rem * var(--mantine-scale)))}.m_d856d47d{--cp-thumb-size-xs: calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm: calc(.75rem * var(--mantine-scale));--cp-thumb-size-md: calc(1rem * var(--mantine-scale));--cp-thumb-size-lg: calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl: calc(1.375rem * var(--mantine-scale));--cp-thumb-size: var(--cp-thumb-size, calc(.75rem * var(--mantine-scale)));position:relative;height:calc(var(--cp-thumb-size) + calc(.125rem * var(--mantine-scale)));margin-inline:calc(var(--cp-thumb-size) / 2);outline:none}.m_d856d47d+.m_d856d47d{margin-top:calc(.375rem * var(--mantine-scale))}.m_d856d47d:where([data-focus-ring=auto]):focus:focus-visible .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}.m_d856d47d:where([data-focus-ring=always]):focus .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}:where([data-mantine-color-scheme=light]) .m_d856d47d{--slider-checkers: var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d856d47d{--slider-checkers: var(--mantine-color-dark-4)}.m_8f327113{position:absolute;top:0;bottom:0;inset-inline:calc(var(--cp-thumb-size) * -1 / 2 - calc(.0625rem * var(--mantine-scale)));border-radius:10000rem}.m_b077c2bc{--ci-eye-dropper-icon-size-xs: calc(.875rem * var(--mantine-scale));--ci-eye-dropper-icon-size-sm: calc(1rem * var(--mantine-scale));--ci-eye-dropper-icon-size-md: calc(1.125rem * var(--mantine-scale));--ci-eye-dropper-icon-size-lg: calc(1.25rem * var(--mantine-scale));--ci-eye-dropper-icon-size-xl: calc(1.375rem * var(--mantine-scale));--ci-eye-dropper-icon-size: var(--ci-eye-dropper-icon-size-sm)}.m_c5ccdcab{--ci-preview-size-xs: calc(1rem * var(--mantine-scale));--ci-preview-size-sm: calc(1.125rem * var(--mantine-scale));--ci-preview-size-md: calc(1.375rem * var(--mantine-scale));--ci-preview-size-lg: calc(1.75rem * var(--mantine-scale));--ci-preview-size-xl: calc(2.25rem * var(--mantine-scale));--ci-preview-size: var(--ci-preview-size-sm)}.m_5ece2cd7{padding:calc(.5rem * var(--mantine-scale))}.m_7485cace{--container-size-xs: calc(33.75rem * var(--mantine-scale));--container-size-sm: calc(45rem * var(--mantine-scale));--container-size-md: calc(60rem * var(--mantine-scale));--container-size-lg: calc(71.25rem * var(--mantine-scale));--container-size-xl: calc(82.5rem * var(--mantine-scale));--container-size: var(--container-size-md)}.m_7485cace:where([data-strategy=block]){max-width:var(--container-size);padding-inline:var(--mantine-spacing-md);margin-inline:auto}.m_7485cace:where([data-strategy=block]):where([data-fluid]){max-width:100%}.m_7485cace:where([data-strategy=grid]){display:grid;grid-template-columns:1fr min(100%,var(--container-size)) 1fr;margin-inline:auto}.m_7485cace:where([data-strategy=grid])>*{grid-column:2}.m_7485cace:where([data-strategy=grid])>[data-breakout]{grid-column:1 / -1}.m_7485cace:where([data-strategy=grid])>[data-breakout]>[data-container]{max-width:var(--container-size);margin-inline:auto}.m_e2125a27{--dialog-size-xs: calc(10rem * var(--mantine-scale));--dialog-size-sm: calc(12.5rem * var(--mantine-scale));--dialog-size-md: calc(21.25rem * var(--mantine-scale));--dialog-size-lg: calc(25rem * var(--mantine-scale));--dialog-size-xl: calc(31.25rem * var(--mantine-scale));--dialog-size: var(--dialog-size-md);position:relative;width:var(--dialog-size);max-width:calc(100vw - var(--mantine-spacing-xl) * 2);min-height:calc(3.125rem * var(--mantine-scale))}.m_5abab665{position:absolute;top:calc(var(--mantine-spacing-md) / 2);inset-inline-end:calc(var(--mantine-spacing-md) / 2)}.m_3eebeb36{--divider-size-xs: calc(.0625rem * var(--mantine-scale));--divider-size-sm: calc(.125rem * var(--mantine-scale));--divider-size-md: calc(.1875rem * var(--mantine-scale));--divider-size-lg: calc(.25rem * var(--mantine-scale));--divider-size-xl: calc(.3125rem * var(--mantine-scale));--divider-size: var(--divider-size-xs)}:where([data-mantine-color-scheme=light]) .m_3eebeb36{--divider-color: var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_3eebeb36{--divider-color: var(--mantine-color-dark-4)}.m_3eebeb36:where([data-orientation=horizontal]){border-top:var(--divider-size) var(--divider-border-style, solid) var(--divider-color)}.m_3eebeb36:where([data-orientation=vertical]){border-inline-start:var(--divider-size) var(--divider-border-style, solid) var(--divider-color);height:auto;align-self:stretch}.m_3eebeb36:where([data-with-label]){border:0}.m_9e365f20{display:flex;align-items:center;font-size:var(--mantine-font-size-xs);color:var(--mantine-color-dimmed);white-space:nowrap}.m_9e365f20:where([data-position=left]):before{display:none}.m_9e365f20:where([data-position=right]):after{display:none}.m_9e365f20:before{content:"";flex:1;height:calc(.0625rem * var(--mantine-scale));border-top:var(--divider-size) var(--divider-border-style, solid) var(--divider-color);margin-inline-end:var(--mantine-spacing-xs)}.m_9e365f20:after{content:"";flex:1;height:calc(.0625rem * var(--mantine-scale));border-top:var(--divider-size) var(--divider-border-style, solid) var(--divider-color);margin-inline-start:var(--mantine-spacing-xs)}.m_f11b401e{--drawer-size-xs: calc(20rem * var(--mantine-scale));--drawer-size-sm: calc(23.75rem * var(--mantine-scale));--drawer-size-md: calc(27.5rem * var(--mantine-scale));--drawer-size-lg: calc(38.75rem * var(--mantine-scale));--drawer-size-xl: calc(48.75rem * var(--mantine-scale));--drawer-size: var(--drawer-size-md);--drawer-offset: 0rem}.m_5a7c2c9{z-index:1000}.m_b8a05bbd{flex:var(--drawer-flex, 0 0 var(--drawer-size));height:var(--drawer-height, calc(100% - var(--drawer-offset) * 2));margin:var(--drawer-offset);max-width:calc(100% - var(--drawer-offset) * 2);max-height:calc(100% - var(--drawer-offset) * 2);overflow-y:auto}.m_b8a05bbd[data-hidden]{opacity:0!important;pointer-events:none}.m_31cd769a{display:flex;justify-content:var(--drawer-justify, flex-start);align-items:var(--drawer-align, flex-start)}.m_e9408a47{padding:var(--mantine-spacing-lg);padding-top:var(--mantine-spacing-xs);border-radius:var(--fieldset-radius, var(--mantine-radius-default));min-inline-size:auto}.m_84c9523a{border:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_84c9523a{border-color:var(--mantine-color-gray-3);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_84c9523a{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-7)}.m_ef274e49{border:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_ef274e49{border-color:var(--mantine-color-gray-3);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_ef274e49{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}.m_eda993d3{padding:0;border:0;border-radius:0}.m_90794832{font-size:var(--mantine-font-size-sm)}.m_74ca27fe{padding:0;margin-bottom:var(--mantine-spacing-sm)}.m_8478a6da{container:mantine-grid / inline-size}.m_410352e9{--grid-overflow: visible;--grid-margin: calc(var(--grid-gutter) / -2);--grid-col-padding: calc(var(--grid-gutter) / 2);overflow:var(--grid-overflow)}.m_dee7bd2f{width:calc(100% + var(--grid-gutter));display:flex;flex-wrap:wrap;justify-content:var(--grid-justify);align-items:var(--grid-align);margin:var(--grid-margin)}.m_96bdd299{--col-flex-grow: 0;--col-offset: 0rem;flex-shrink:0;order:var(--col-order);flex-basis:var(--col-flex-basis);width:var(--col-width);max-width:var(--col-max-width);flex-grow:var(--col-flex-grow);margin-inline-start:var(--col-offset);padding:var(--grid-col-padding)}.m_bcb3f3c2{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=light]) .m_bcb3f3c2{background-color:var(--mark-bg-light)}:where([data-mantine-color-scheme=dark]) .m_bcb3f3c2{background-color:var(--mark-bg-dark)}.m_9e117634{display:block;object-fit:var(--image-object-fit, cover);width:100%;border-radius:var(--image-radius, 0)}@keyframes m_885901b1{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(2.8)}}.m_e5262200{--indicator-size: calc(.625rem * var(--mantine-scale));--indicator-color: var(--mantine-primary-color-filled);position:relative;display:block}.m_e5262200:where([data-inline]){display:inline-block}.m_760d1fb1{position:absolute;top:var(--indicator-top);left:var(--indicator-left);right:var(--indicator-right);bottom:var(--indicator-bottom);transform:translate(var(--indicator-translate-x),var(--indicator-translate-y));min-width:var(--indicator-size);height:var(--indicator-size);border-radius:var(--indicator-radius, 1000rem);z-index:var(--indicator-z-index, 200);display:flex;align-items:center;justify-content:center;font-size:var(--mantine-font-size-xs);background-color:var(--indicator-color);color:var(--indicator-text-color, var(--mantine-color-white));white-space:nowrap}.m_760d1fb1:before{content:"";position:absolute;inset:0;background-color:var(--indicator-color);border-radius:var(--indicator-radius, 1000rem);z-index:-1}.m_760d1fb1:where([data-with-label]){padding-inline:calc(var(--mantine-spacing-xs) / 2)}.m_760d1fb1:where([data-with-border]){border:2px solid var(--mantine-color-body)}.m_760d1fb1[data-processing]:before{animation:m_885901b1 1s linear infinite}.m_dc6f14e2{--kbd-fz-xs: calc(.625rem * var(--mantine-scale));--kbd-fz-sm: calc(.75rem * var(--mantine-scale));--kbd-fz-md: calc(.875rem * var(--mantine-scale));--kbd-fz-lg: calc(1rem * var(--mantine-scale));--kbd-fz-xl: calc(1.25rem * var(--mantine-scale));--kbd-fz: var(--kbd-fz-sm);font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);font-weight:700;font-size:var(--kbd-fz);border-radius:var(--mantine-radius-sm);border:calc(.0625rem * var(--mantine-scale)) solid;border-bottom-width:calc(.1875rem * var(--mantine-scale));unicode-bidi:embed;text-align:center;padding:.12em .45em}:where([data-mantine-color-scheme=light]) .m_dc6f14e2{border-color:var(--mantine-color-gray-3);color:var(--mantine-color-gray-7);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_dc6f14e2{border-color:var(--mantine-color-dark-4);color:var(--mantine-color-dark-0);background-color:var(--mantine-color-dark-6)}.m_abbac491{--list-fz: var(--mantine-font-size-md);--list-lh: var(--mantine-line-height-md);--list-marker-gap: var(--mantine-spacing-lg);list-style-position:outside;font-size:var(--list-fz);line-height:var(--list-lh);margin:0;padding:0;padding-inline-start:var(--list-marker-gap)}.m_abbac491[data-type=none]{--list-marker-gap: 0}.m_abbac491:where([data-with-padding]){padding-inline-start:calc(var(--list-marker-gap) + var(--mantine-spacing-md))}.m_abb6bec2{white-space:normal;line-height:var(--list-lh)}.m_abb6bec2:where([data-with-icon]){list-style:none}.m_abb6bec2:where([data-with-icon]) .m_75cd9f71{--li-direction: row;--li-align: center}.m_abb6bec2:where(:not(:first-of-type)){margin-top:var(--list-spacing, 0)}.m_abb6bec2:where([data-centered]){line-height:1}.m_75cd9f71{display:inline-flex;flex-direction:var(--li-direction, column);align-items:var(--li-align, flex-start);white-space:normal}.m_60f83e5b{display:inline-block;vertical-align:middle;margin-inline-end:var(--mantine-spacing-sm)}.m_6e45937b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:var(--lo-z-index)}.m_e8eb006c{position:relative;z-index:calc(var(--lo-z-index) + 1)}.m_df587f17{z-index:var(--lo-z-index)}.m_dc9b7c9f{padding:calc(.25rem * var(--mantine-scale))}.m_9bfac126{color:var(--mantine-color-dimmed);font-weight:500;font-size:var(--mantine-font-size-xs);padding:calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-sm);cursor:default}.m_efdf90cb{margin-top:calc(.25rem * var(--mantine-scale));margin-bottom:calc(.25rem * var(--mantine-scale));border-top:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_efdf90cb{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_efdf90cb{border-color:var(--mantine-color-dark-4)}.m_99ac2aa1{font-size:var(--mantine-font-size-sm);width:100%;padding:calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-sm);border-radius:var(--popover-radius, var(--mantine-radius-default));color:var(--menu-item-color, var(--mantine-color-text));display:flex;align-items:center;user-select:none}.m_99ac2aa1:where([data-disabled],:disabled){color:var(--mantine-color-disabled-color);opacity:.6;cursor:not-allowed}:where([data-mantine-color-scheme=light]) .m_99ac2aa1:where(:hover,:focus):where(:not(:disabled,[data-disabled])){background-color:var(--menu-item-hover, var(--mantine-color-gray-1))}:where([data-mantine-color-scheme=dark]) .m_99ac2aa1:where(:hover,:focus):where(:not(:disabled,[data-disabled])){background-color:var(--menu-item-hover, var(--mantine-color-dark-4))}.m_99ac2aa1:where([data-sub-menu-item]){padding-inline-end:calc(.3125rem * var(--mantine-scale))}.m_5476e0d3{flex:1}.m_8b75e504{display:flex;justify-content:center;align-items:center}.m_8b75e504:where([data-position=left]){margin-inline-end:var(--mantine-spacing-xs)}.m_8b75e504:where([data-position=right]){margin-inline-start:var(--mantine-spacing-xs)}.m_b85b0bed{transform:rotate(-90deg)}:where([dir=rtl]) .m_b85b0bed{transform:rotate(90deg)}.m_9df02822{--modal-size-xs: calc(20rem * var(--mantine-scale));--modal-size-sm: calc(23.75rem * var(--mantine-scale));--modal-size-md: calc(27.5rem * var(--mantine-scale));--modal-size-lg: calc(38.75rem * var(--mantine-scale));--modal-size-xl: calc(48.75rem * var(--mantine-scale));--modal-size: var(--modal-size-md);--modal-y-offset: 5dvh;--modal-x-offset: 5vw}.m_9df02822[data-full-screen]{--modal-border-radius: 0 !important}.m_9df02822[data-full-screen] .m_54c44539{--modal-content-flex: 0 0 100%;--modal-content-max-height: auto;--modal-content-height: 100dvh}.m_9df02822[data-full-screen] .m_1f958f16{--modal-inner-y-offset: 0;--modal-inner-x-offset: 0}.m_9df02822[data-centered] .m_1f958f16{--modal-inner-align: center}.m_d0e2b9cd{border-start-start-radius:var(--modal-radius, var(--mantine-radius-default));border-start-end-radius:var(--modal-radius, var(--mantine-radius-default))}.m_54c44539{flex:var(--modal-content-flex, 0 0 var(--modal-size));max-width:100%;max-height:var(--modal-content-max-height, calc(100dvh - var(--modal-y-offset) * 2));height:var(--modal-content-height, auto);overflow-y:auto}.m_54c44539[data-full-screen]{border-radius:0}.m_54c44539[data-hidden]{opacity:0!important;pointer-events:none}.m_1f958f16{display:flex;justify-content:center;align-items:var(--modal-inner-align, flex-start);padding-top:var(--modal-inner-y-offset, var(--modal-y-offset));padding-bottom:var(--modal-inner-y-offset, var(--modal-y-offset));padding-inline:var(--modal-inner-x-offset, var(--modal-x-offset))}.m_7cda1cd6{--pill-fz-xs: calc(.625rem * var(--mantine-scale));--pill-fz-sm: calc(.75rem * var(--mantine-scale));--pill-fz-md: calc(.875rem * var(--mantine-scale));--pill-fz-lg: calc(1rem * var(--mantine-scale));--pill-fz-xl: calc(1.125rem * var(--mantine-scale));--pill-height-xs: calc(1.125rem * var(--mantine-scale));--pill-height-sm: calc(1.375rem * var(--mantine-scale));--pill-height-md: calc(1.5625rem * var(--mantine-scale));--pill-height-lg: calc(1.75rem * var(--mantine-scale));--pill-height-xl: calc(2rem * var(--mantine-scale));--pill-fz: var(--pill-fz-sm);--pill-height: var(--pill-height-sm);font-size:var(--pill-fz);flex:0;height:var(--pill-height);padding-inline:.8em;display:inline-flex;align-items:center;border-radius:var(--pill-radius, 1000rem);line-height:1;white-space:nowrap;user-select:none;-webkit-user-select:none;max-width:100%}:where([data-mantine-color-scheme=dark]) .m_7cda1cd6{background-color:var(--mantine-color-dark-7);color:var(--mantine-color-dark-0)}:where([data-mantine-color-scheme=light]) .m_7cda1cd6{color:var(--mantine-color-black)}.m_7cda1cd6:where([data-with-remove]:not(:has(button:disabled))){padding-inline-end:0}.m_7cda1cd6:where([data-disabled],:has(button:disabled)){cursor:not-allowed}:where([data-mantine-color-scheme=light]) .m_44da308b{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=light]) .m_44da308b:where([data-disabled],:has(button:disabled)){background-color:var(--mantine-color-disabled)}:where([data-mantine-color-scheme=light]) .m_e3a01f8{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=light]) .m_e3a01f8:where([data-disabled],:has(button:disabled)){background-color:var(--mantine-color-disabled)}.m_1e0e6180{cursor:inherit;overflow:hidden;height:100%;line-height:var(--pill-height);text-overflow:ellipsis}.m_ae386778{color:inherit;font-size:inherit;height:100%;min-height:unset;min-width:2em;width:unset;border-radius:0;padding-inline-start:.1em;padding-inline-end:.3em;flex:0;border-end-end-radius:var(--pill-radius, 50%);border-start-end-radius:var(--pill-radius, 50%)}.m_7cda1cd6[data-disabled]>.m_ae386778,.m_ae386778:disabled{display:none;background-color:transparent;width:.8em;min-width:.8em;padding:0;cursor:not-allowed}.m_7cda1cd6[data-disabled]>.m_ae386778>svg,.m_ae386778:disabled>svg{display:none}.m_ae386778>svg{pointer-events:none}.m_1dcfd90b{--pg-gap-xs: calc(.375rem * var(--mantine-scale));--pg-gap-sm: calc(.5rem * var(--mantine-scale));--pg-gap-md: calc(.625rem * var(--mantine-scale));--pg-gap-lg: calc(.75rem * var(--mantine-scale));--pg-gap-xl: calc(.75rem * var(--mantine-scale));--pg-gap: var(--pg-gap-sm);display:flex;align-items:center;gap:var(--pg-gap);flex-wrap:wrap}.m_45c4369d{background-color:transparent;appearance:none;min-width:calc(6.25rem * var(--mantine-scale));flex:1;border:0;font-size:inherit;height:1.6em;color:inherit;padding:0}.m_45c4369d::placeholder{color:var(--input-placeholder-color);opacity:1}.m_45c4369d:where([data-type=hidden],[data-type=auto]){height:calc(.0625rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));top:0;left:0;pointer-events:none;position:absolute;opacity:0}.m_45c4369d:focus{outline:none}.m_45c4369d:where([data-type=auto]:focus){height:1.6em;visibility:visible;opacity:1;position:static}.m_45c4369d:where([data-pointer]:not([data-disabled],:disabled)){cursor:pointer}.m_45c4369d:where([data-disabled],:disabled){cursor:not-allowed}.m_f0824112{--nl-bg: var(--mantine-primary-color-light);--nl-hover: var(--mantine-primary-color-light-hover);--nl-color: var(--mantine-primary-color-light-color);display:flex;align-items:center;width:100%;padding:8px var(--mantine-spacing-sm);user-select:none}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_f0824112:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_f0824112:hover{background-color:var(--mantine-color-dark-6)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_f0824112:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_f0824112:active{background-color:var(--mantine-color-dark-6)}}.m_f0824112:where([data-disabled]){opacity:.4;pointer-events:none}.m_f0824112:where([data-active],[aria-current=page]){background-color:var(--nl-bg);color:var(--nl-color)}@media(hover:hover){.m_f0824112:where([data-active],[aria-current=page]):hover{background-color:var(--nl-hover)}}@media(hover:none){.m_f0824112:where([data-active],[aria-current=page]):active{background-color:var(--nl-hover)}}.m_f0824112:where([data-active],[aria-current=page]) .m_57492dcc{--description-opacity: .9;--description-color: var(--nl-color)}.m_690090b5{display:flex;align-items:center;justify-content:center;transition:transform .15s ease}.m_690090b5>svg{display:block}.m_690090b5:where([data-position=left]){margin-inline-end:var(--mantine-spacing-sm)}.m_690090b5:where([data-position=right]){margin-inline-start:var(--mantine-spacing-sm)}.m_690090b5:where([data-rotate]){transform:rotate(90deg)}.m_1f6ac4c4{font-size:var(--mantine-font-size-sm)}.m_f07af9d2{flex:1;overflow:hidden;text-overflow:ellipsis}.m_f07af9d2:where([data-no-wrap]){white-space:nowrap}.m_57492dcc{display:block;font-size:var(--mantine-font-size-xs);opacity:var(--description-opacity, 1);color:var(--description-color, var(--mantine-color-dimmed));overflow:hidden;text-overflow:ellipsis}:where([data-no-wrap]) .m_57492dcc{white-space:nowrap}.m_e17b862f{padding-inline-start:var(--nl-offset, var(--mantine-spacing-lg))}.m_1fd8a00b{transform:rotate(-90deg)}.m_a513464{--notification-radius: var(--mantine-radius-default);--notification-color: var(--mantine-primary-color-filled);overflow:hidden;box-sizing:border-box;position:relative;display:flex;align-items:center;padding-inline-start:calc(1.375rem * var(--mantine-scale));padding-inline-end:var(--mantine-spacing-xs);padding-top:var(--mantine-spacing-xs);padding-bottom:var(--mantine-spacing-xs);border-radius:var(--notification-radius);box-shadow:var(--mantine-shadow-lg)}.m_a513464:before{content:"";display:block;position:absolute;width:calc(.375rem * var(--mantine-scale));top:var(--notification-radius);bottom:var(--notification-radius);inset-inline-start:calc(.25rem * var(--mantine-scale));border-radius:var(--notification-radius);background-color:var(--notification-color)}:where([data-mantine-color-scheme=light]) .m_a513464{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_a513464{background-color:var(--mantine-color-dark-6)}.m_a513464:where([data-with-icon]):before{display:none}:where([data-mantine-color-scheme=light]) .m_a513464:where([data-with-border]){border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_a513464:where([data-with-border]){border:1px solid var(--mantine-color-dark-4)}.m_a4ceffb{box-sizing:border-box;margin-inline-end:var(--mantine-spacing-md);width:calc(1.75rem * var(--mantine-scale));height:calc(1.75rem * var(--mantine-scale));border-radius:calc(1.75rem * var(--mantine-scale));display:flex;align-items:center;justify-content:center;background-color:var(--notification-color);color:var(--mantine-color-white)}.m_b0920b15{margin-inline-end:var(--mantine-spacing-md)}.m_a49ed24{flex:1;overflow:hidden;margin-inline-end:var(--mantine-spacing-xs)}.m_3feedf16{margin-bottom:calc(.125rem * var(--mantine-scale));overflow:hidden;text-overflow:ellipsis;font-size:var(--mantine-font-size-sm);line-height:var(--mantine-line-height-sm);font-weight:500}:where([data-mantine-color-scheme=light]) .m_3feedf16{color:var(--mantine-color-gray-9)}:where([data-mantine-color-scheme=dark]) .m_3feedf16{color:var(--mantine-color-white)}.m_3d733a3a{font-size:var(--mantine-font-size-sm);line-height:var(--mantine-line-height-sm);overflow:hidden;text-overflow:ellipsis}:where([data-mantine-color-scheme=light]) .m_3d733a3a{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_3d733a3a{color:var(--mantine-color-dark-0)}:where([data-mantine-color-scheme=light]) .m_3d733a3a:where([data-with-title]){color:var(--mantine-color-gray-6)}:where([data-mantine-color-scheme=dark]) .m_3d733a3a:where([data-with-title]){color:var(--mantine-color-dark-2)}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_919a4d88:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_919a4d88:hover{background-color:var(--mantine-color-dark-8)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_919a4d88:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_919a4d88:active{background-color:var(--mantine-color-dark-8)}}.m_e2f5cd4e{--ni-right-section-width-xs: calc(1.0625rem * var(--mantine-scale));--ni-right-section-width-sm: calc(1.5rem * var(--mantine-scale));--ni-right-section-width-md: calc(1.6875rem * var(--mantine-scale));--ni-right-section-width-lg: calc(1.9375rem * var(--mantine-scale));--ni-right-section-width-xl: calc(2.125rem * var(--mantine-scale))}.m_95e17d22{--ni-chevron-size-xs: calc(.625rem * var(--mantine-scale));--ni-chevron-size-sm: calc(.875rem * var(--mantine-scale));--ni-chevron-size-md: calc(1rem * var(--mantine-scale));--ni-chevron-size-lg: calc(1.125rem * var(--mantine-scale));--ni-chevron-size-xl: calc(1.25rem * var(--mantine-scale));--ni-chevron-size: var(--ni-chevron-size-sm);display:flex;flex-direction:column;width:100%;height:calc(var(--input-height) - calc(.125rem * var(--mantine-scale)));max-width:calc(var(--ni-chevron-size) * 1.7);margin-inline-start:auto}.m_80b4b171{--control-border: 1px solid var(--input-bd);--control-radius: calc(var(--input-radius) - calc(.0625rem * var(--mantine-scale)));flex:0 0 50%;width:100%;padding:0;height:calc(var(--input-height) / 2 - calc(.0625rem * var(--mantine-scale)));border-inline-start:var(--control-border);display:flex;align-items:center;justify-content:center;color:var(--mantine-color-text);background-color:transparent;cursor:pointer}.m_80b4b171:where(:disabled){background-color:transparent;cursor:not-allowed;opacity:.6;color:var(--mantine-color-disabled-color)}.m_e2f5cd4e[data-error] :where(.m_80b4b171){color:var(--mantine-color-error)}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_80b4b171:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_80b4b171:hover{background-color:var(--mantine-color-dark-4)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_80b4b171:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_80b4b171:active{background-color:var(--mantine-color-dark-4)}}.m_80b4b171:where(:first-of-type){border-radius:0;border-start-end-radius:var(--control-radius)}.m_80b4b171:last-of-type{border-radius:0;border-end-end-radius:var(--control-radius)}.m_4addd315{--pagination-control-size-xs: calc(1.375rem * var(--mantine-scale));--pagination-control-size-sm: calc(1.625rem * var(--mantine-scale));--pagination-control-size-md: calc(2rem * var(--mantine-scale));--pagination-control-size-lg: calc(2.375rem * var(--mantine-scale));--pagination-control-size-xl: calc(2.75rem * var(--mantine-scale));--pagination-control-size: var(--pagination-control-size-md);--pagination-control-fz: var(--mantine-font-size-md);--pagination-active-bg: var(--mantine-primary-color-filled)}.m_326d024a{display:flex;align-items:center;justify-content:center;border:calc(.0625rem * var(--mantine-scale)) solid;cursor:pointer;color:var(--mantine-color-text);height:var(--pagination-control-size);min-width:var(--pagination-control-size);font-size:var(--pagination-control-fz);line-height:1;border-radius:var(--pagination-control-radius, var(--mantine-radius-default))}.m_326d024a:where([data-with-padding]){padding:calc(var(--pagination-control-size) / 4)}.m_326d024a:where(:disabled,[data-disabled]){cursor:not-allowed;opacity:.4}:where([data-mantine-color-scheme=light]) .m_326d024a{border-color:var(--mantine-color-gray-4);background-color:var(--mantine-color-white)}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_326d024a:hover:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-0)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_326d024a:active:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-0)}}:where([data-mantine-color-scheme=dark]) .m_326d024a{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}@media(hover:hover){:where([data-mantine-color-scheme=dark]) .m_326d024a:hover:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}}@media(hover:none){:where([data-mantine-color-scheme=dark]) .m_326d024a:active:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}}.m_326d024a:where([data-active]){background-color:var(--pagination-active-bg);border-color:var(--pagination-active-bg);color:var(--pagination-active-color, var(--mantine-color-white))}@media(hover:hover){.m_326d024a:where([data-active]):hover{background-color:var(--pagination-active-bg)}}@media(hover:none){.m_326d024a:where([data-active]):active{background-color:var(--pagination-active-bg)}}.m_4ad7767d{height:var(--pagination-control-size);min-width:var(--pagination-control-size);display:flex;align-items:center;justify-content:center;pointer-events:none}.m_f61ca620{--psi-button-size-xs: calc(1.375rem * var(--mantine-scale));--psi-button-size-sm: calc(1.625rem * var(--mantine-scale));--psi-button-size-md: calc(1.75rem * var(--mantine-scale));--psi-button-size-lg: calc(2rem * var(--mantine-scale));--psi-button-size-xl: calc(2.5rem * var(--mantine-scale));--psi-icon-size-xs: calc(.75rem * var(--mantine-scale));--psi-icon-size-sm: calc(.9375rem * var(--mantine-scale));--psi-icon-size-md: calc(1.0625rem * var(--mantine-scale));--psi-icon-size-lg: calc(1.1875rem * var(--mantine-scale));--psi-icon-size-xl: calc(1.3125rem * var(--mantine-scale));--psi-button-size: var(--psi-button-size-sm);--psi-icon-size: var(--psi-icon-size-sm)}.m_ccf8da4c{position:relative;overflow:hidden}.m_f2d85dd2{font-family:var(--mantine-font-family);background-color:transparent;border:0;padding-inline-end:var(--input-padding-inline-end);padding-inline-start:var(--input-padding-inline-start);position:absolute;inset:0;outline:0;font-size:inherit;line-height:var(--mantine-line-height);height:100%;width:100%;color:inherit}.m_ccf8da4c[data-disabled] .m_f2d85dd2,.m_f2d85dd2:disabled{cursor:not-allowed}.m_f2d85dd2::placeholder{color:var(--input-placeholder-color);opacity:1}.m_f2d85dd2::-ms-reveal{display:none}.m_b1072d44{width:var(--psi-button-size);height:var(--psi-button-size);min-width:var(--psi-button-size);min-height:var(--psi-button-size)}.m_b1072d44:disabled{display:none}.m_f1cb205a{--pin-input-size-xs: calc(1.875rem * var(--mantine-scale));--pin-input-size-sm: calc(2.25rem * var(--mantine-scale));--pin-input-size-md: calc(2.625rem * var(--mantine-scale));--pin-input-size-lg: calc(3.125rem * var(--mantine-scale));--pin-input-size-xl: calc(3.75rem * var(--mantine-scale));--pin-input-size: var(--pin-input-size-sm)}.m_cb288ead{width:var(--pin-input-size);height:var(--pin-input-size)}@keyframes m_81a374bd{0%{background-position:0 0}to{background-position:calc(2.5rem * var(--mantine-scale)) 0}}@keyframes m_e0fb7a86{0%{background-position:0 0}to{background-position:0 calc(2.5rem * var(--mantine-scale))}}.m_db6d6462{--progress-radius: var(--mantine-radius-default);--progress-size: var(--progress-size-md);--progress-size-xs: calc(.1875rem * var(--mantine-scale));--progress-size-sm: calc(.3125rem * var(--mantine-scale));--progress-size-md: calc(.5rem * var(--mantine-scale));--progress-size-lg: calc(.75rem * var(--mantine-scale));--progress-size-xl: calc(1rem * var(--mantine-scale));position:relative;height:var(--progress-size);border-radius:var(--progress-radius);overflow:hidden;display:flex}:where([data-mantine-color-scheme=light]) .m_db6d6462{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_db6d6462{background-color:var(--mantine-color-dark-4)}.m_db6d6462:where([data-orientation=vertical]){height:auto;width:var(--progress-size);flex-direction:column-reverse}.m_2242eb65{background-color:var(--progress-section-color);height:100%;width:var(--progress-section-size);display:flex;align-items:center;justify-content:center;overflow:hidden;background-size:calc(1.25rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));transition:width var(--progress-transition-duration, .1s) ease}.m_2242eb65:where([data-striped]){background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.m_2242eb65:where([data-animated]){animation:m_81a374bd 1s linear infinite}.m_2242eb65:where(:last-of-type){border-radius:0;border-start-end-radius:var(--progress-radius);border-end-end-radius:var(--progress-radius)}.m_2242eb65:where(:first-of-type){border-radius:0;border-start-start-radius:var(--progress-radius);border-end-start-radius:var(--progress-radius)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65{width:100%;height:var(--progress-section-size);transition:height var(--progress-transition-duration, .1s) ease}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where([data-striped]){background-image:linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where([data-animated]){animation:m_e0fb7a86 1s linear infinite}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where(:last-of-type){border-radius:0;border-start-start-radius:var(--progress-radius);border-start-end-radius:var(--progress-radius)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where(:first-of-type){border-radius:0;border-end-start-radius:var(--progress-radius);border-end-end-radius:var(--progress-radius)}.m_91e40b74{color:var(--progress-label-color, var(--mantine-color-white));font-weight:700;user-select:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:min(calc(var(--progress-size) * .65),calc(1.125rem * var(--mantine-scale)));line-height:1;padding-inline:calc(.25rem * var(--mantine-scale))}.m_db6d6462:where([data-orientation=vertical]) .m_91e40b74{writing-mode:vertical-rl}.m_9dc8ae12{--card-radius: var(--mantine-radius-default);display:block;width:100%;border-radius:var(--card-radius);cursor:pointer}.m_9dc8ae12 :where(*){cursor:inherit}.m_9dc8ae12:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid transparent}:where([data-mantine-color-scheme=light]) .m_9dc8ae12:where([data-with-border]){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_9dc8ae12:where([data-with-border]){border-color:var(--mantine-color-dark-4)}.m_717d7ff6{--radio-size-xs: calc(1rem * var(--mantine-scale));--radio-size-sm: calc(1.25rem * var(--mantine-scale));--radio-size-md: calc(1.5rem * var(--mantine-scale));--radio-size-lg: calc(1.875rem * var(--mantine-scale));--radio-size-xl: calc(2.25rem * var(--mantine-scale));--radio-icon-size-xs: calc(.375rem * var(--mantine-scale));--radio-icon-size-sm: calc(.5rem * var(--mantine-scale));--radio-icon-size-md: calc(.625rem * var(--mantine-scale));--radio-icon-size-lg: calc(.875rem * var(--mantine-scale));--radio-icon-size-xl: calc(1rem * var(--mantine-scale));--radio-icon-size: var(--radio-icon-size-sm);--radio-size: var(--radio-size-sm);--radio-color: var(--mantine-primary-color-filled);--radio-icon-color: var(--mantine-color-white);position:relative;border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--radio-size);min-width:var(--radio-size);height:var(--radio-size);min-height:var(--radio-size);border-radius:var(--radio-radius, 10000px);transition:border-color .1s ease,background-color .1s ease;cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;display:flex;align-items:center;justify-content:center}:where([data-mantine-color-scheme=light]) .m_717d7ff6{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_717d7ff6{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_717d7ff6[data-indeterminate],.m_717d7ff6[data-checked]{background-color:var(--radio-color);border-color:var(--radio-color)}.m_717d7ff6[data-indeterminate]>.m_3e4da632,.m_717d7ff6[data-checked]>.m_3e4da632{opacity:1;transform:none;color:var(--radio-icon-color)}.m_717d7ff6[data-disabled]{cursor:not-allowed;background-color:var(--mantine-color-disabled);border-color:var(--mantine-color-disabled-border)}.m_717d7ff6[data-disabled][data-checked]>.m_3e4da632{color:var(--mantine-color-disabled-color)}.m_2980836c[data-indeterminate]:not([data-disabled]),.m_2980836c[data-checked]:not([data-disabled]){background-color:transparent;border-color:var(--radio-color)}.m_2980836c[data-indeterminate]:not([data-disabled])>.m_3e4da632,.m_2980836c[data-checked]:not([data-disabled])>.m_3e4da632{color:var(--radio-color);opacity:1;transform:none}.m_3e4da632{display:block;width:var(--radio-icon-size);height:var(--radio-icon-size);color:transparent;pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:1;transition:transform .1s ease,opacity .1s ease}.m_f3f1af94{--radio-size-xs: calc(1rem * var(--mantine-scale));--radio-size-sm: calc(1.25rem * var(--mantine-scale));--radio-size-md: calc(1.5rem * var(--mantine-scale));--radio-size-lg: calc(1.875rem * var(--mantine-scale));--radio-size-xl: calc(2.25rem * var(--mantine-scale));--radio-size: var(--radio-size-sm);--radio-icon-size-xs: calc(.375rem * var(--mantine-scale));--radio-icon-size-sm: calc(.5rem * var(--mantine-scale));--radio-icon-size-md: calc(.625rem * var(--mantine-scale));--radio-icon-size-lg: calc(.875rem * var(--mantine-scale));--radio-icon-size-xl: calc(1rem * var(--mantine-scale));--radio-icon-size: var(--radio-icon-size-sm);--radio-icon-color: var(--mantine-color-white)}.m_89c4f5e4{position:relative;width:var(--radio-size);height:var(--radio-size);order:1}.m_89c4f5e4:where([data-label-position=left]){order:2}.m_f3ed6b2b{color:var(--radio-icon-color);opacity:var(--radio-icon-opacity, 0);transform:var(--radio-icon-transform, scale(.2) translateY(calc(.625rem * var(--mantine-scale))));transition:opacity .1s ease,transform .2s ease;pointer-events:none;width:var(--radio-icon-size);height:var(--radio-icon-size);position:absolute;top:calc(50% - var(--radio-icon-size) / 2);left:calc(50% - var(--radio-icon-size) / 2)}.m_8a3dbb89{border:calc(.0625rem * var(--mantine-scale)) solid;position:relative;appearance:none;width:var(--radio-size);height:var(--radio-size);border-radius:var(--radio-radius, var(--radio-size));margin:0;display:flex;align-items:center;justify-content:center;transition-property:background-color,border-color;transition-timing-function:ease;transition-duration:.1s;cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent}:where([data-mantine-color-scheme=light]) .m_8a3dbb89{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_8a3dbb89{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_8a3dbb89:checked{background-color:var(--radio-color, var(--mantine-primary-color-filled));border-color:var(--radio-color, var(--mantine-primary-color-filled))}.m_8a3dbb89:checked+.m_f3ed6b2b{--radio-icon-opacity: 1;--radio-icon-transform: scale(1)}.m_8a3dbb89:disabled{cursor:not-allowed;background-color:var(--mantine-color-disabled);border-color:var(--mantine-color-disabled-border)}.m_8a3dbb89:disabled+.m_f3ed6b2b{--radio-icon-color: var(--mantine-color-disabled-color)}.m_8a3dbb89:where([data-error]){border-color:var(--mantine-color-error)}.m_1bfe9d39+.m_f3ed6b2b{--radio-icon-color: var(--radio-color)}.m_1bfe9d39:checked:not(:disabled){background-color:transparent;border-color:var(--radio-color)}.m_1bfe9d39:checked:not(:disabled)+.m_f3ed6b2b{--radio-icon-color: var(--radio-color);--radio-icon-opacity: 1;--radio-icon-transform: none}.m_f8d312f2{--rating-size-xs: calc(.875rem * var(--mantine-scale));--rating-size-sm: calc(1.125rem * var(--mantine-scale));--rating-size-md: calc(1.25rem * var(--mantine-scale));--rating-size-lg: calc(1.75rem * var(--mantine-scale));--rating-size-xl: calc(2rem * var(--mantine-scale));display:flex;width:max-content}.m_f8d312f2:where(:has(input:disabled)){pointer-events:none}.m_61734bb7{position:relative;transition:transform .1s ease}.m_61734bb7:where([data-active]){z-index:1;transform:scale(1.1)}.m_5662a89a{width:var(--rating-size);height:var(--rating-size);display:block}:where([data-mantine-color-scheme=light]) .m_5662a89a{fill:var(--mantine-color-gray-3);stroke:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_5662a89a{fill:var(--mantine-color-dark-3);stroke:var(--mantine-color-dark-3)}.m_5662a89a:where([data-filled]){fill:var(--rating-color);stroke:var(--rating-color)}.m_211007ba{height:0;width:0;position:absolute;overflow:hidden;white-space:nowrap;opacity:0;-webkit-tap-highlight-color:transparent}.m_211007ba:focus-visible+label{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_21342ee4{display:block;cursor:pointer;position:absolute;top:0;left:0;z-index:var(--rating-item-z-index, 0);-webkit-tap-highlight-color:transparent}.m_21342ee4:where([data-read-only]){cursor:default}.m_21342ee4:where(:last-of-type){position:relative}.m_fae05d6a{clip-path:var(--rating-symbol-clip-path)}.m_1b3c8819{--tooltip-radius: var(--mantine-radius-default);position:absolute;padding:calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-xs);pointer-events:none;font-size:var(--mantine-font-size-sm);white-space:nowrap;border-radius:var(--tooltip-radius)}:where([data-mantine-color-scheme=light]) .m_1b3c8819{background-color:var(--tooltip-bg, var(--mantine-color-gray-9));color:var(--tooltip-color, var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_1b3c8819{background-color:var(--tooltip-bg, var(--mantine-color-gray-2));color:var(--tooltip-color, var(--mantine-color-black))}.m_1b3c8819:where([data-multiline]){white-space:normal}.m_1b3c8819:where([data-fixed]){position:fixed}.m_f898399f{background-color:inherit;border:0;z-index:1}.m_b32e4812{position:relative;width:var(--rp-size);height:var(--rp-size);min-width:var(--rp-size);min-height:var(--rp-size);--rp-transition-duration: 0ms}.m_d43b5134{width:var(--rp-size);height:var(--rp-size);min-width:var(--rp-size);min-height:var(--rp-size);transform:rotate(-90deg)}.m_b1ca1fbf{stroke:var(--curve-color, var(--rp-curve-root-color));transition:stroke-dashoffset var(--rp-transition-duration) ease,stroke-dasharray var(--rp-transition-duration) ease,stroke var(--rp-transition-duration)}[data-mantine-color-scheme=light] .m_b1ca1fbf{--rp-curve-root-color: var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_b1ca1fbf{--rp-curve-root-color: var(--mantine-color-dark-4)}.m_b23f9dc4{position:absolute;top:50%;transform:translateY(-50%);inset-inline:var(--rp-label-offset)}.m_cf365364{--sc-padding-xs: calc(.125rem * var(--mantine-scale)) calc(.375rem * var(--mantine-scale));--sc-padding-sm: calc(.1875rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale));--sc-padding-md: calc(.25rem * var(--mantine-scale)) calc(.875rem * var(--mantine-scale));--sc-padding-lg: calc(.4375rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));--sc-padding-xl: calc(.625rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));--sc-transition-duration: .2s;--sc-padding: var(--sc-padding-sm);--sc-transition-timing-function: ease;--sc-font-size: var(--mantine-font-size-sm);position:relative;display:inline-flex;flex-direction:row;width:auto;border-radius:var(--sc-radius, var(--mantine-radius-default));overflow:hidden;padding:calc(.25rem * var(--mantine-scale))}.m_cf365364:where([data-full-width]){display:flex}.m_cf365364:where([data-orientation=vertical]){display:flex;flex-direction:column;width:max-content}.m_cf365364:where([data-orientation=vertical]):where([data-full-width]){width:auto}:where([data-mantine-color-scheme=light]) .m_cf365364{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_cf365364{background-color:var(--mantine-color-dark-8)}.m_9e182ccd{position:absolute;display:block;z-index:1;border-radius:var(--sc-radius, var(--mantine-radius-default))}:where([data-mantine-color-scheme=light]) .m_9e182ccd{box-shadow:var(--sc-shadow, none);background-color:var(--sc-color, var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_9e182ccd{box-shadow:none;background-color:var(--sc-color, var(--mantine-color-dark-5))}.m_1738fcb2{-webkit-tap-highlight-color:transparent;font-weight:500;display:block;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;border-radius:var(--sc-radius, var(--mantine-radius-default));font-size:var(--sc-font-size);padding:var(--sc-padding);transition:color var(--sc-transition-duration) var(--sc-transition-timing-function);cursor:pointer;outline:var(--segmented-control-outline, none)}:where([data-mantine-color-scheme=light]) .m_1738fcb2{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2{color:var(--mantine-color-dark-1)}.m_1738fcb2:where([data-read-only]){cursor:default}fieldset:disabled .m_1738fcb2,.m_1738fcb2:where([data-disabled]){cursor:not-allowed;color:var(--mantine-color-disabled-color)}:where([data-mantine-color-scheme=light]) .m_1738fcb2:where([data-active]){color:var(--sc-label-color, var(--mantine-color-black))}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where([data-active]){color:var(--sc-label-color, var(--mantine-color-white))}.m_cf365364:where([data-initialized]) .m_1738fcb2:where([data-active]):before{display:none}.m_1738fcb2:where([data-active]):before{content:"";inset:0;z-index:0;position:absolute;border-radius:var(--sc-radius, var(--mantine-radius-default))}:where([data-mantine-color-scheme=light]) .m_1738fcb2:where([data-active]):before{box-shadow:var(--sc-shadow, none);background-color:var(--sc-color, var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where([data-active]):before{box-shadow:none;background-color:var(--sc-color, var(--mantine-color-dark-5))}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):hover{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):hover{color:var(--mantine-color-white)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):active{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):active{color:var(--mantine-color-white)}}@media(hover:hover){fieldset:disabled .m_1738fcb2:hover{color:var(--mantine-color-disabled-color)!important}}@media(hover:none){fieldset:disabled .m_1738fcb2:active{color:var(--mantine-color-disabled-color)!important}}.m_1714d588{height:0;width:0;position:absolute;overflow:hidden;white-space:nowrap;opacity:0}.m_1714d588[data-focus-ring=auto]:focus:focus-visible+.m_1738fcb2{--segmented-control-outline: 2px solid var(--mantine-primary-color-filled)}.m_1714d588[data-focus-ring=always]:focus+.m_1738fcb2{--segmented-control-outline: 2px solid var(--mantine-primary-color-filled)}.m_69686b9b{position:relative;flex:1;z-index:2;transition:border-color var(--sc-transition-duration) var(--sc-transition-timing-function)}.m_cf365364[data-with-items-borders] :where(.m_69686b9b):before{content:"";position:absolute;top:0;bottom:0;inset-inline-start:0;background-color:var(--separator-color);width:calc(.0625rem * var(--mantine-scale));transition:background-color var(--sc-transition-duration) var(--sc-transition-timing-function)}.m_69686b9b[data-orientation=vertical]:before{top:0;inset-inline:0;bottom:auto;height:calc(.0625rem * var(--mantine-scale));width:auto}:where([data-mantine-color-scheme=light]) .m_69686b9b{--separator-color: var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_69686b9b{--separator-color: var(--mantine-color-dark-4)}.m_69686b9b:first-of-type:before{--separator-color: transparent}[data-mantine-color-scheme] .m_69686b9b[data-active]:before,[data-mantine-color-scheme] .m_69686b9b[data-active]+.m_69686b9b:before{--separator-color: transparent}.m_78882f40{position:relative;z-index:2}.m_fa528724{--scp-filled-segment-color: var(--mantine-primary-color-filled);--scp-transition-duration: 0ms;--scp-thickness: calc(.625rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_fa528724{--scp-empty-segment-color: var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa528724{--scp-empty-segment-color: var(--mantine-color-dark-4)}.m_fa528724{position:relative;width:fit-content}.m_62e9e7e2{display:block;transform:var(--scp-rotation);overflow:hidden}.m_c573fb6f{transition:stroke-dashoffset var(--scp-transition-duration) ease,stroke-dasharray var(--scp-transition-duration) ease,stroke var(--scp-transition-duration)}.m_4fa340f2{position:absolute;margin:0;padding:0;inset-inline:0;text-align:center;z-index:1}.m_4fa340f2:where([data-position=bottom]){bottom:0;padding-inline:calc(var(--scp-thickness) * 2)}.m_4fa340f2:where([data-position=bottom]):where([data-orientation=down]){bottom:auto;top:0}.m_4fa340f2:where([data-position=center]){top:50%;padding-inline:calc(var(--scp-thickness) * 3)}.m_925c2d2c{container:simple-grid / inline-size}.m_2415a157{display:grid;grid-template-columns:repeat(var(--sg-cols),minmax(0,1fr));gap:var(--sg-spacing-y) var(--sg-spacing-x)}@keyframes m_299c329c{0%,to{opacity:.4}50%{opacity:1}}.m_18320242{height:var(--skeleton-height, auto);width:var(--skeleton-width, 100%);border-radius:var(--skeleton-radius, var(--mantine-radius-default));position:relative;transform:translateZ(0);-webkit-transform:translateZ(0)}.m_18320242:where([data-animate]):after{animation:m_299c329c 1.5s linear infinite}.m_18320242:where([data-visible]){overflow:hidden}.m_18320242:where([data-visible]):before{position:absolute;content:"";inset:0;z-index:10;background-color:var(--mantine-color-body)}.m_18320242:where([data-visible]):after{position:absolute;content:"";inset:0;z-index:11}:where([data-mantine-color-scheme=light]) .m_18320242:where([data-visible]):after{background-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_18320242:where([data-visible]):after{background-color:var(--mantine-color-dark-4)}.m_dd36362e{--slider-size-xs: calc(.25rem * var(--mantine-scale));--slider-size-sm: calc(.375rem * var(--mantine-scale));--slider-size-md: calc(.5rem * var(--mantine-scale));--slider-size-lg: calc(.625rem * var(--mantine-scale));--slider-size-xl: calc(.75rem * var(--mantine-scale));--slider-size: var(--slider-size-md);--slider-radius: calc(62.5rem * var(--mantine-scale));--slider-color: var(--mantine-primary-color-filled);--slider-track-disabled-bg: var(--mantine-color-disabled);-webkit-tap-highlight-color:transparent;outline:none;height:calc(var(--slider-size) * 2);padding-inline:var(--slider-size);display:flex;flex-direction:column;align-items:center;touch-action:none;position:relative}[data-mantine-color-scheme=light] .m_dd36362e{--slider-track-bg: var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_dd36362e{--slider-track-bg: var(--mantine-color-dark-4)}.m_c9357328{position:absolute;top:calc(-2.25rem * var(--mantine-scale));font-size:var(--mantine-font-size-xs);color:var(--mantine-color-white);padding:calc(var(--mantine-spacing-xs) / 2);border-radius:var(--mantine-radius-sm);white-space:nowrap;pointer-events:none;user-select:none;touch-action:none}:where([data-mantine-color-scheme=light]) .m_c9357328{background-color:var(--mantine-color-gray-9)}:where([data-mantine-color-scheme=dark]) .m_c9357328{background-color:var(--mantine-color-dark-4)}.m_c9a9a60a{position:absolute;display:flex;height:var(--slider-thumb-size);width:var(--slider-thumb-size);border:calc(.25rem * var(--mantine-scale)) solid;transform:translate(-50%,-50%);top:50%;cursor:pointer;border-radius:var(--slider-radius);align-items:center;justify-content:center;transition:box-shadow .1s ease,transform .1s ease;z-index:3;user-select:none;touch-action:none;outline-offset:calc(.125rem * var(--mantine-scale));left:var(--slider-thumb-offset)}:where([dir=rtl]) .m_c9a9a60a{left:auto;right:calc(var(--slider-thumb-offset) - var(--slider-thumb-size))}fieldset:disabled .m_c9a9a60a,.m_c9a9a60a:where([data-disabled]){display:none}.m_c9a9a60a:where([data-dragging]){transform:translate(-50%,-50%) scale(1.05);box-shadow:var(--mantine-shadow-sm)}:where([data-mantine-color-scheme=light]) .m_c9a9a60a{color:var(--slider-color);border-color:var(--slider-color);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_c9a9a60a{color:var(--mantine-color-white);border-color:var(--mantine-color-white);background-color:var(--slider-color)}.m_a8645c2{display:flex;align-items:center;width:100%;height:calc(var(--slider-size) * 2);cursor:pointer}fieldset:disabled .m_a8645c2,.m_a8645c2:where([data-disabled]){cursor:not-allowed}.m_c9ade57f{position:relative;width:100%;height:var(--slider-size)}.m_c9ade57f:where([data-inverted]:not([data-disabled])){--track-bg: var(--slider-color)}fieldset:disabled .m_c9ade57f:where([data-inverted]),.m_c9ade57f:where([data-inverted][data-disabled]){--track-bg: var(--slider-track-disabled-bg)}.m_c9ade57f:before{content:"";position:absolute;top:0;bottom:0;border-radius:var(--slider-radius);inset-inline:calc(var(--slider-size) * -1);background-color:var(--track-bg, var(--slider-track-bg));z-index:0}.m_38aeed47{position:absolute;z-index:1;top:0;bottom:0;background-color:var(--slider-color);border-radius:var(--slider-radius);width:var(--slider-bar-width);inset-inline-start:var(--slider-bar-offset)}.m_38aeed47:where([data-inverted]){background-color:var(--slider-track-bg)}fieldset:disabled .m_38aeed47:where(:not([data-inverted])),.m_38aeed47:where([data-disabled]:not([data-inverted])){background-color:var(--mantine-color-disabled-color)}.m_b7b0423a{position:absolute;inset-inline-start:calc(var(--mark-offset) - var(--slider-size) / 2);top:0;z-index:2;height:0;pointer-events:none}.m_dd33bc19{border:calc(.125rem * var(--mantine-scale)) solid;height:var(--slider-size);width:var(--slider-size);border-radius:calc(62.5rem * var(--mantine-scale));background-color:var(--mantine-color-white);pointer-events:none}:where([data-mantine-color-scheme=light]) .m_dd33bc19{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_dd33bc19{border-color:var(--mantine-color-dark-4)}.m_dd33bc19:where([data-filled]){border-color:var(--slider-color)}.m_dd33bc19:where([data-filled]):where([data-disabled]){border-color:var(--mantine-color-disabled-border)}.m_68c77a5b{transform:translate(calc(-50% + var(--slider-size) / 2),calc(var(--mantine-spacing-xs) / 2));font-size:var(--mantine-font-size-sm);white-space:nowrap;cursor:pointer;user-select:none}:where([data-mantine-color-scheme=light]) .m_68c77a5b{color:var(--mantine-color-gray-6)}:where([data-mantine-color-scheme=dark]) .m_68c77a5b{color:var(--mantine-color-dark-2)}.m_559cce2d{position:relative}.m_559cce2d:where([data-has-spoiler]){margin-bottom:calc(1.5rem * var(--mantine-scale))}.m_b912df4e{display:flex;flex-direction:column;overflow:hidden;transition:max-height var(--spoiler-transition-duration, .2s) ease}.m_b9131032{position:absolute;inset-inline-start:0;top:100%;height:calc(1.5rem * var(--mantine-scale))}.m_6d731127{display:flex;flex-direction:column;align-items:var(--stack-align, stretch);justify-content:var(--stack-justify, flex-start);gap:var(--stack-gap, var(--mantine-spacing-md))}.m_cbb4ea7e{--stepper-icon-size-xs: calc(2.125rem * var(--mantine-scale));--stepper-icon-size-sm: calc(2.25rem * var(--mantine-scale));--stepper-icon-size-md: calc(2.625rem * var(--mantine-scale));--stepper-icon-size-lg: calc(3rem * var(--mantine-scale));--stepper-icon-size-xl: calc(3.25rem * var(--mantine-scale));--stepper-icon-size: var(--stepper-icon-size-md);--stepper-color: var(--mantine-primary-color-filled);--stepper-content-padding: var(--mantine-spacing-md);--stepper-spacing: var(--mantine-spacing-md);--stepper-radius: calc(62.5rem * var(--mantine-scale));--stepper-fz: var(--mantine-font-size-md);--stepper-outline-thickness: calc(.125rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_cbb4ea7e{--stepper-outline-color: var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_cbb4ea7e{--stepper-outline-color: var(--mantine-color-dark-5)}.m_aaf89d0b{display:flex;flex-wrap:nowrap;align-items:center}.m_aaf89d0b:where([data-wrap]){flex-wrap:wrap;gap:var(--mantine-spacing-md) 0}.m_aaf89d0b:where([data-orientation=vertical]){flex-direction:column}.m_aaf89d0b:where([data-orientation=vertical]):where([data-icon-position=left]){align-items:flex-start}.m_aaf89d0b:where([data-orientation=vertical]):where([data-icon-position=right]){align-items:flex-end}.m_aaf89d0b:where([data-orientation=horizontal]){flex-direction:row}.m_2a371ac9{transition:background-color .15s ease;flex:1;height:var(--stepper-outline-thickness);margin-inline:var(--mantine-spacing-md);background-color:var(--stepper-outline-color)}.m_2a371ac9:where([data-active]){background-color:var(--stepper-color)}.m_78da155d{padding-top:var(--stepper-content-padding)}.m_cbb57068{--step-color: var(--stepper-color);display:flex;cursor:default}.m_cbb57068:where([data-allow-click]){cursor:pointer}.m_cbb57068:where([data-icon-position=left]){flex-direction:row}.m_cbb57068:where([data-icon-position=right]){flex-direction:row-reverse}.m_f56b1e2c{align-items:center}.m_833edb7e{--separator-spacing: calc(var(--mantine-spacing-xs) / 2);justify-content:flex-start;min-height:calc(var(--stepper-icon-size) + var(--mantine-spacing-xl) + var(--separator-spacing));margin-top:var(--separator-spacing);overflow:hidden}.m_833edb7e:where(:first-of-type){margin-top:0}.m_833edb7e:where(:last-of-type){min-height:auto}.m_833edb7e:where(:last-of-type) .m_6496b3f3{display:none}.m_818e70b{position:relative}.m_6496b3f3{top:calc(var(--stepper-icon-size) + var(--separator-spacing));inset-inline-start:calc(var(--stepper-icon-size) / 2);height:100vh;position:absolute;border-inline-start:var(--stepper-outline-thickness) solid var(--stepper-outline-color)}.m_6496b3f3:where([data-active]){border-color:var(--stepper-color)}.m_1959ad01{height:var(--stepper-icon-size);width:var(--stepper-icon-size);min-height:var(--stepper-icon-size);min-width:var(--stepper-icon-size);border-radius:var(--stepper-radius);font-size:var(--stepper-fz);display:flex;align-items:center;justify-content:center;position:relative;font-weight:700;transition:background-color .15s ease,border-color .15s ease;border:var(--stepper-outline-thickness) solid var(--stepper-outline-color);background-color:var(--stepper-outline-color)}:where([data-mantine-color-scheme=light]) .m_1959ad01{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_1959ad01{color:var(--mantine-color-dark-1)}.m_1959ad01:where([data-progress]){border-color:var(--step-color)}.m_1959ad01:where([data-completed]){color:var(--stepper-icon-color, var(--mantine-color-white));background-color:var(--step-color);border-color:var(--step-color)}.m_a79331dc{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--stepper-icon-color, var(--mantine-color-white))}.m_1956aa2a{display:flex;flex-direction:column}.m_1956aa2a:where([data-icon-position=left]){margin-inline-start:var(--mantine-spacing-sm)}.m_1956aa2a:where([data-icon-position=right]){text-align:right;margin-inline-end:var(--mantine-spacing-sm)}:where([dir=rtl]) .m_1956aa2a:where([data-icon-position=right]){text-align:left}.m_12051f6c{font-weight:500;font-size:var(--stepper-fz);line-height:1}.m_164eea74{margin-top:calc(var(--stepper-spacing) / 3);margin-bottom:calc(var(--stepper-spacing) / 3);font-size:calc(var(--stepper-fz) - calc(.125rem * var(--mantine-scale)));line-height:1;color:var(--mantine-color-dimmed)}.m_5f93f3bb{--switch-height-xs: calc(1rem * var(--mantine-scale));--switch-height-sm: calc(1.25rem * var(--mantine-scale));--switch-height-md: calc(1.5rem * var(--mantine-scale));--switch-height-lg: calc(1.875rem * var(--mantine-scale));--switch-height-xl: calc(2.25rem * var(--mantine-scale));--switch-width-xs: calc(2rem * var(--mantine-scale));--switch-width-sm: calc(2.375rem * var(--mantine-scale));--switch-width-md: calc(2.875rem * var(--mantine-scale));--switch-width-lg: calc(3.5rem * var(--mantine-scale));--switch-width-xl: calc(4.5rem * var(--mantine-scale));--switch-thumb-size-xs: calc(.75rem * var(--mantine-scale));--switch-thumb-size-sm: calc(.875rem * var(--mantine-scale));--switch-thumb-size-md: calc(1.125rem * var(--mantine-scale));--switch-thumb-size-lg: calc(1.375rem * var(--mantine-scale));--switch-thumb-size-xl: calc(1.75rem * var(--mantine-scale));--switch-label-font-size-xs: calc(.3125rem * var(--mantine-scale));--switch-label-font-size-sm: calc(.375rem * var(--mantine-scale));--switch-label-font-size-md: calc(.4375rem * var(--mantine-scale));--switch-label-font-size-lg: calc(.5625rem * var(--mantine-scale));--switch-label-font-size-xl: calc(.6875rem * var(--mantine-scale));--switch-track-label-padding-xs: calc(.125rem * var(--mantine-scale));--switch-track-label-padding-sm: calc(.15625rem * var(--mantine-scale));--switch-track-label-padding-md: calc(.1875rem * var(--mantine-scale));--switch-track-label-padding-lg: calc(.1875rem * var(--mantine-scale));--switch-track-label-padding-xl: calc(.21875rem * var(--mantine-scale));--switch-height: var(--switch-height-sm);--switch-width: var(--switch-width-sm);--switch-thumb-size: var(--switch-thumb-size-sm);--switch-label-font-size: var(--switch-label-font-size-sm);--switch-track-label-padding: var(--switch-track-label-padding-sm);--switch-radius: calc(62.5rem * var(--mantine-scale));--switch-color: var(--mantine-primary-color-filled);--switch-disabled-color: var(--mantine-color-disabled);position:relative}.m_926b4011{height:0;width:0;opacity:0;margin:0;padding:0;position:absolute;overflow:hidden;white-space:nowrap}.m_9307d992{-webkit-tap-highlight-color:transparent;cursor:var(--switch-cursor, var(--mantine-cursor-type));overflow:hidden;position:relative;border-radius:var(--switch-radius);background-color:var(--switch-bg);height:var(--switch-height);min-width:var(--switch-width);margin:0;transition:background-color .15s ease,border-color .15s ease;appearance:none;display:flex;align-items:center;font-size:var(--switch-label-font-size);font-weight:600;order:var(--switch-order, 1);user-select:none;z-index:0;line-height:0;color:var(--switch-text-color)}.m_9307d992:where([data-without-labels]){width:var(--switch-width)}.m_926b4011:focus-visible+.m_9307d992{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_926b4011:checked+.m_9307d992{--switch-bg: var(--switch-color);--switch-text-color: var(--mantine-color-white)}.m_926b4011:disabled+.m_9307d992,.m_926b4011[data-disabled]+.m_9307d992{--switch-bg: var(--switch-disabled-color);--switch-cursor: not-allowed}[data-mantine-color-scheme=light] .m_9307d992{--switch-bg: var(--mantine-color-gray-3);--switch-text-color: var(--mantine-color-gray-6)}[data-mantine-color-scheme=dark] .m_9307d992{--switch-bg: var(--mantine-color-dark-5);--switch-text-color: var(--mantine-color-dark-1)}.m_9307d992[data-label-position=left]{--switch-order: 2}.m_93039a1d{position:absolute;z-index:1;border-radius:var(--switch-radius);display:flex;background-color:var(--switch-thumb-bg, var(--mantine-color-white));height:var(--switch-thumb-size);width:var(--switch-thumb-size);inset-inline-start:var(--switch-thumb-start, var(--switch-track-label-padding));transition:inset-inline-start .15s ease}.m_93039a1d:where([data-with-thumb-indicator]):before{content:"";width:40%;height:40%;background-color:var(--switch-bg);position:absolute;border-radius:var(--switch-radius);top:50%;left:50%;transform:translate(-50%,-50%)}.m_93039a1d>*{margin:auto}.m_926b4011:checked+*>.m_93039a1d{--switch-thumb-start: calc(100% - var(--switch-thumb-size) - var(--switch-track-label-padding))}.m_926b4011:disabled+*>.m_93039a1d,.m_926b4011[data-disabled]+*>.m_93039a1d{--switch-thumb-bg: var(--switch-thumb-bg-disabled)}[data-mantine-color-scheme=light] .m_93039a1d{--switch-thumb-bg-disabled: var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_93039a1d{--switch-thumb-bg-disabled: var(--mantine-color-dark-3)}.m_8277e082{height:100%;display:grid;place-content:center;min-width:calc(var(--switch-width) - var(--switch-thumb-size));padding-inline:var(--switch-track-label-padding);margin-inline-start:calc(var(--switch-thumb-size) + var(--switch-track-label-padding));transition:margin .15s ease}.m_926b4011:checked+*>.m_8277e082{margin-inline-end:calc(var(--switch-thumb-size) + var(--switch-track-label-padding));margin-inline-start:0}.m_b23fa0ef{width:100%;border-collapse:collapse;border-spacing:0;line-height:var(--mantine-line-height);font-size:var(--mantine-font-size-sm);table-layout:var(--table-layout, auto);caption-side:var(--table-caption-side, bottom);border:none}:where([data-mantine-color-scheme=light]) .m_b23fa0ef{--table-hover-color: var(--mantine-color-gray-1);--table-striped-color: var(--mantine-color-gray-0);--table-border-color: var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_b23fa0ef{--table-hover-color: var(--mantine-color-dark-5);--table-striped-color: var(--mantine-color-dark-6);--table-border-color: var(--mantine-color-dark-4)}.m_b23fa0ef:where([data-with-table-border]){border:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_b23fa0ef:where([data-tabular-nums]){font-variant-numeric:tabular-nums}.m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){font-weight:500}:where([data-mantine-color-scheme=light]) .m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){background-color:var(--mantine-color-dark-6)}.m_4e7aa4f3{text-align:left}:where([dir=rtl]) .m_4e7aa4f3{text-align:right}.m_4e7aa4fd{border-bottom:none;background-color:transparent}@media(hover:hover){.m_4e7aa4fd:hover:where([data-hover]){background-color:var(--tr-hover-bg)}}@media(hover:none){.m_4e7aa4fd:active:where([data-hover]){background-color:var(--tr-hover-bg)}}.m_4e7aa4fd:where([data-with-row-border]){border-bottom:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_4e7aa4ef,.m_4e7aa4f3{padding:var(--table-vertical-spacing) var(--table-horizontal-spacing, var(--mantine-spacing-xs))}.m_4e7aa4ef:where([data-with-column-border]:not(:first-child)),.m_4e7aa4f3:where([data-with-column-border]:not(:first-child)){border-inline-start:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_4e7aa4ef:where([data-with-column-border]:not(:last-child)),.m_4e7aa4f3:where([data-with-column-border]:not(:last-child)){border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_b2404537>:where(tr):where([data-with-row-border]:last-of-type){border-bottom:none}.m_b2404537>:where(tr):where([data-striped=odd]:nth-of-type(odd)){background-color:var(--table-striped-color)}.m_b2404537>:where(tr):where([data-striped=even]:nth-of-type(2n)){background-color:var(--table-striped-color)}.m_b2404537>:where(tr)[data-hover]{--tr-hover-bg: var(--table-highlight-on-hover-color, var(--table-hover-color))}.m_b242d975{top:var(--table-sticky-header-offset, 0);z-index:3}.m_b242d975:where([data-sticky]){position:sticky}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3){position:sticky;top:var(--table-sticky-header-offset, 0);background-color:var(--mantine-color-body)}:where([data-with-table-border]) .m_b242d975[data-sticky]{position:sticky;top:var(--table-sticky-header-offset, 0);z-index:4;border-top:none}:where([data-with-table-border]) .m_b242d975[data-sticky]:before{content:"";display:block;position:absolute;left:0;top:calc(-.03125rem * var(--mantine-scale));width:100%;height:calc(.0625rem * var(--mantine-scale));background-color:var(--table-border-color);z-index:5}:where([data-with-table-border]) .m_b242d975[data-sticky] .m_4e7aa4f3:first-child{border-top:none}.m_9e5a3ac7{color:var(--mantine-color-dimmed)}.m_9e5a3ac7:where([data-side=top]){margin-bottom:var(--mantine-spacing-xs)}.m_9e5a3ac7:where([data-side=bottom]){margin-top:var(--mantine-spacing-xs)}.m_a100c15{overflow-x:var(--table-overflow)}.m_62259741{min-width:var(--table-min-width);max-height:var(--table-max-height)}.m_bcaa9990{display:flex;flex-direction:column;--toc-depth-offset: .8em}.m_375a65ef{display:block;padding:.3em .8em;font-size:var(--toc-size, var(--mantine-font-size-md));border-radius:var(--toc-radius, var(--mantine-radius-default));padding-left:max(calc(var(--depth-offset) * var(--toc-depth-offset)),.8em)}@media(hover:hover){:where([data-mantine-color-scheme=light]) .m_375a65ef:where(:hover):where(:not([data-variant=none])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_375a65ef:where(:hover):where(:not([data-variant=none])){background-color:var(--mantine-color-dark-5)}}@media(hover:none){:where([data-mantine-color-scheme=light]) .m_375a65ef:where(:active):where(:not([data-variant=none])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_375a65ef:where(:active):where(:not([data-variant=none])){background-color:var(--mantine-color-dark-5)}}.m_375a65ef:where([data-active]){background-color:var(--toc-bg);color:var(--toc-color)}[data-mantine-color-scheme=light] .m_89d60db1{--tab-border-color: var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_89d60db1{--tab-border-color: var(--mantine-color-dark-4)}.m_89d60db1{display:var(--tabs-display);flex-direction:var(--tabs-flex-direction);--tabs-list-direction: row;--tabs-panel-grow: unset;--tabs-display: block;--tabs-flex-direction: row;--tabs-list-border-width: 0;--tabs-list-border-size: 0 0 var(--tabs-list-border-width) 0;--tabs-list-gap: unset;--tabs-list-line-bottom: 0;--tabs-list-line-top: unset;--tabs-list-line-start: 0;--tabs-list-line-end: 0;--tab-radius: var(--tabs-radius) var(--tabs-radius) 0 0;--tab-border-width: 0 0 var(--tabs-list-border-width) 0}.m_89d60db1[data-inverted]{--tabs-list-line-bottom: unset;--tabs-list-line-top: 0;--tab-radius: 0 0 var(--tabs-radius) var(--tabs-radius);--tab-border-width: var(--tabs-list-border-width) 0 0 0}.m_89d60db1[data-inverted] .m_576c9d4:before{top:0;bottom:unset}.m_89d60db1[data-orientation=vertical]{--tabs-list-line-start: unset;--tabs-list-line-end: 0;--tabs-list-line-top: 0;--tabs-list-line-bottom: 0;--tabs-list-border-size: 0 var(--tabs-list-border-width) 0 0;--tab-border-width: 0 var(--tabs-list-border-width) 0 0;--tab-radius: var(--tabs-radius) 0 0 var(--tabs-radius);--tabs-list-direction: column;--tabs-panel-grow: 1;--tabs-display: flex}[dir=rtl] .m_89d60db1[data-orientation=vertical]{--tabs-list-border-size: 0 0 0 var(--tabs-list-border-width);--tab-border-width: 0 0 0 var(--tabs-list-border-width);--tab-radius: 0 var(--tabs-radius) var(--tabs-radius) 0}.m_89d60db1[data-orientation=vertical][data-placement=right]{--tabs-flex-direction: row-reverse;--tabs-list-line-start: 0;--tabs-list-line-end: unset;--tabs-list-border-size: 0 0 0 var(--tabs-list-border-width);--tab-border-width: 0 0 0 var(--tabs-list-border-width);--tab-radius: 0 var(--tabs-radius) var(--tabs-radius) 0}[dir=rtl] .m_89d60db1[data-orientation=vertical][data-placement=right]{--tabs-list-border-size: 0 var(--tabs-list-border-width) 0 0;--tab-border-width: 0 var(--tabs-list-border-width) 0 0;--tab-radius: var(--tabs-radius) 0 0 var(--tabs-radius)}.m_89d60db1[data-variant=default]{--tabs-list-border-width: calc(.125rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_89d60db1[data-variant=default]{--tab-hover-color: var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_89d60db1[data-variant=default]{--tab-hover-color: var(--mantine-color-dark-6)}.m_89d60db1[data-variant=outline]{--tabs-list-border-width: calc(.0625rem * var(--mantine-scale))}.m_89d60db1[data-variant=pills]{--tabs-list-gap: calc(var(--mantine-spacing-sm) / 2)}[data-mantine-color-scheme=light] .m_89d60db1[data-variant=pills]{--tab-hover-color: var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_89d60db1[data-variant=pills]{--tab-hover-color: var(--mantine-color-dark-6)}.m_89d33d6d{display:flex;flex-wrap:wrap;justify-content:var(--tabs-justify, flex-start);flex-direction:var(--tabs-list-direction);gap:var(--tabs-list-gap)}.m_89d33d6d:where([data-grow]) .m_4ec4dce6{flex:1}.m_b0c91715{flex-grow:var(--tabs-panel-grow)}.m_4ec4dce6{position:relative;padding:var(--mantine-spacing-xs) var(--mantine-spacing-md);font-size:var(--mantine-font-size-sm);white-space:nowrap;z-index:0;display:flex;align-items:center;line-height:1;user-select:none}.m_4ec4dce6:where(:disabled,[data-disabled]){opacity:.5;cursor:not-allowed}.m_4ec4dce6:focus{z-index:1}.m_fc420b1f{display:flex;align-items:center;justify-content:center}.m_fc420b1f:where([data-position=left]:not(:only-child)){margin-inline-end:var(--mantine-spacing-xs)}.m_fc420b1f:where([data-position=right]:not(:only-child)){margin-inline-start:var(--mantine-spacing-xs)}.m_42bbd1ae{flex:1;text-align:center}.m_576c9d4{position:relative}.m_576c9d4:before{content:"";position:absolute;border:1px solid var(--tab-border-color);bottom:var(--tabs-list-line-bottom);inset-inline-start:var(--tabs-list-line-start);inset-inline-end:var(--tabs-list-line-end);top:var(--tabs-list-line-top)}.m_539e827b{border-radius:var(--tab-radius);border-width:var(--tab-border-width);border-style:solid;border-color:transparent;background-color:transparent}.m_539e827b:where([data-active]){border-color:var(--tabs-color)}@media(hover:hover){.m_539e827b:hover{background-color:var(--tab-hover-color)}.m_539e827b:hover:where(:not([data-active])){border-color:var(--tab-border-color)}}@media(hover:none){.m_539e827b:active{background-color:var(--tab-hover-color)}.m_539e827b:active:where(:not([data-active])){border-color:var(--tab-border-color)}}@media(hover:hover){.m_539e827b:disabled:hover,.m_539e827b[data-disabled]:hover{background-color:transparent}}@media(hover:none){.m_539e827b:disabled:active,.m_539e827b[data-disabled]:active{background-color:transparent}}.m_6772fbd5{position:relative}.m_6772fbd5:before{content:"";position:absolute;border-color:var(--tab-border-color);border-width:var(--tabs-list-border-size);border-style:solid;bottom:var(--tabs-list-line-bottom);inset-inline-start:var(--tabs-list-line-start);inset-inline-end:var(--tabs-list-line-end);top:var(--tabs-list-line-top)}.m_b59ab47c{border-top:calc(.0625rem * var(--mantine-scale)) solid transparent;border-bottom:calc(.0625rem * var(--mantine-scale)) solid transparent;border-right:calc(.0625rem * var(--mantine-scale)) solid transparent;border-left:calc(.0625rem * var(--mantine-scale)) solid transparent;border-top-color:var(--tab-border-top-color);border-bottom-color:var(--tab-border-bottom-color);border-radius:var(--tab-radius);position:relative;--tab-border-bottom-color: transparent;--tab-border-top-color: transparent;--tab-border-inline-end-color: transparent;--tab-border-inline-start-color: transparent}.m_b59ab47c:where([data-active]):before{content:"";position:absolute;background-color:var(--tab-border-color);bottom:var(--tab-before-bottom, calc(-.0625rem * var(--mantine-scale)));left:var(--tab-before-left, calc(-.0625rem * var(--mantine-scale)));right:var(--tab-before-right, auto);top:var(--tab-before-top, auto);width:calc(.0625rem * var(--mantine-scale));height:calc(.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active]):after{content:"";position:absolute;background-color:var(--tab-border-color);bottom:var(--tab-after-bottom, calc(-.0625rem * var(--mantine-scale)));right:var(--tab-after-right, calc(-.0625rem * var(--mantine-scale)));left:var(--tab-after-left, auto);top:var(--tab-after-top, auto);width:calc(.0625rem * var(--mantine-scale));height:calc(.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active]){border-top-color:var(--tab-border-top-color);border-bottom-color:var(--tab-border-bottom-color);border-inline-start-color:var(--tab-border-inline-start-color);border-inline-end-color:var(--tab-border-inline-end-color);--tab-border-top-color: var(--tab-border-color);--tab-border-inline-start-color: var(--tab-border-color);--tab-border-inline-end-color: var(--tab-border-color);--tab-border-bottom-color: var(--mantine-color-body)}.m_b59ab47c:where([data-active])[data-inverted]{--tab-border-bottom-color: var(--tab-border-color);--tab-border-top-color: var(--mantine-color-body);--tab-before-bottom: auto;--tab-before-top: calc(-.0625rem * var(--mantine-scale));--tab-after-bottom: auto;--tab-after-top: calc(-.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=left]{--tab-border-inline-end-color: var(--mantine-color-body);--tab-border-inline-start-color: var(--tab-border-color);--tab-border-bottom-color: var(--tab-border-color);--tab-before-right: calc(-.0625rem * var(--mantine-scale));--tab-before-left: auto;--tab-before-bottom: auto;--tab-before-top: calc(-.0625rem * var(--mantine-scale));--tab-after-left: auto;--tab-after-right: calc(-.0625rem * var(--mantine-scale))}[dir=rtl] .m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=left]{--tab-before-right: auto;--tab-before-left: calc(-.0625rem * var(--mantine-scale));--tab-after-left: calc(-.0625rem * var(--mantine-scale));--tab-after-right: auto}.m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=right]{--tab-border-inline-start-color: var(--mantine-color-body);--tab-border-inline-end-color: var(--tab-border-color);--tab-border-bottom-color: var(--tab-border-color);--tab-before-left: calc(-.0625rem * var(--mantine-scale));--tab-before-right: auto;--tab-before-bottom: auto;--tab-before-top: calc(-.0625rem * var(--mantine-scale));--tab-after-right: auto;--tab-after-left: calc(-.0625rem * var(--mantine-scale))}[dir=rtl] .m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=right]{--tab-before-left: auto;--tab-before-right: calc(-.0625rem * var(--mantine-scale));--tab-after-right: calc(-.0625rem * var(--mantine-scale));--tab-after-left: auto}.m_c3381914{border-radius:var(--tabs-radius);background-color:var(--tab-bg);color:var(--tab-color);--tab-bg: transparent;--tab-color: inherit}@media(hover:hover){.m_c3381914:not([data-disabled]):hover{--tab-bg: var(--tab-hover-color)}}@media(hover:none){.m_c3381914:not([data-disabled]):active{--tab-bg: var(--tab-hover-color)}}.m_c3381914[data-active][data-active]{--tab-bg: var(--tabs-color);--tab-color: var(--tabs-text-color, var(--mantine-color-white))}@media(hover:hover){.m_c3381914[data-active][data-active]:hover{--tab-bg: var(--tabs-color)}}@media(hover:none){.m_c3381914[data-active][data-active]:active{--tab-bg: var(--tabs-color)}}.m_7341320d{--ti-size-xs: calc(1.125rem * var(--mantine-scale));--ti-size-sm: calc(1.375rem * var(--mantine-scale));--ti-size-md: calc(1.75rem * var(--mantine-scale));--ti-size-lg: calc(2.125rem * var(--mantine-scale));--ti-size-xl: calc(2.75rem * var(--mantine-scale));--ti-size: var(--ti-size-md);line-height:1;display:inline-flex;align-items:center;justify-content:center;position:relative;user-select:none;width:var(--ti-size);height:var(--ti-size);min-width:var(--ti-size);min-height:var(--ti-size);border-radius:var(--ti-radius, var(--mantine-radius-default));background:var(--ti-bg, var(--mantine-primary-color-filled));color:var(--ti-color, var(--mantine-color-white));border:var(--ti-bd, 1px solid transparent)}.m_43657ece{--offset: calc(var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2);--tl-bullet-size: calc(1.25rem * var(--mantine-scale));--tl-line-width: calc(.25rem * var(--mantine-scale));--tl-radius: calc(62.5rem * var(--mantine-scale));--tl-color: var(--mantine-primary-color-filled)}.m_43657ece:where([data-align=left]){padding-inline-start:var(--offset)}.m_43657ece:where([data-align=right]){padding-inline-end:var(--offset)}.m_2ebe8099{font-weight:500;line-height:1;margin-bottom:calc(var(--mantine-spacing-xs) / 2)}.m_436178ff{--item-border: var(--tl-line-width) var(--tli-border-style, solid) var(--item-border-color);position:relative;color:var(--mantine-color-text)}.m_436178ff:before{content:"";pointer-events:none;position:absolute;top:0;left:var(--timeline-line-left, 0);right:var(--timeline-line-right, 0);bottom:calc(var(--mantine-spacing-xl) * -1);border-inline-start:var(--item-border);display:var(--timeline-line-display, none)}.m_43657ece[data-align=left] .m_436178ff:before{--timeline-line-left: calc(var(--tl-line-width) * -1);--timeline-line-right: auto}[dir=rtl] .m_43657ece[data-align=left] .m_436178ff:before{--timeline-line-left: auto;--timeline-line-right: calc(var(--tl-line-width) * -1)}.m_43657ece[data-align=right] .m_436178ff:before{--timeline-line-left: auto;--timeline-line-right: calc(var(--tl-line-width) * -1)}[dir=rtl] .m_43657ece[data-align=right] .m_436178ff:before{--timeline-line-left: calc(var(--tl-line-width) * -1);--timeline-line-right: auto}.m_43657ece:where([data-align=left]) .m_436178ff{padding-inline-start:var(--offset);text-align:left}.m_43657ece:where([data-align=right]) .m_436178ff{padding-inline-end:var(--offset);text-align:right}:where([data-mantine-color-scheme=light]) .m_436178ff{--item-border-color: var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_436178ff{--item-border-color: var(--mantine-color-dark-4)}.m_436178ff:where([data-line-active]):before{border-color:var(--tli-color, var(--tl-color))}.m_436178ff:where(:not(:last-of-type)){--timeline-line-display: block}.m_436178ff:where(:not(:first-of-type)){margin-top:var(--mantine-spacing-xl)}.m_8affcee1{width:var(--tl-bullet-size);height:var(--tl-bullet-size);border-radius:var(--tli-radius, var(--tl-radius));border:var(--tl-line-width) solid;background-color:var(--mantine-color-body);position:absolute;top:0;display:flex;align-items:center;justify-content:center;color:var(--mantine-color-text)}:where([data-mantine-color-scheme=light]) .m_8affcee1{border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_8affcee1{border-color:var(--mantine-color-dark-4)}.m_43657ece:where([data-align=left]) .m_8affcee1{left:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);right:auto}:where([dir=rtl]) .m_43657ece:where([data-align=left]) .m_8affcee1{left:auto;right:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1)}.m_43657ece:where([data-align=right]) .m_8affcee1{left:auto;right:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1)}:where([dir=rtl]) .m_43657ece:where([data-align=right]) .m_8affcee1{left:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);right:auto}.m_8affcee1:where([data-with-child]){border-width:var(--tl-line-width)}:where([data-mantine-color-scheme=light]) .m_8affcee1:where([data-with-child]){background-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_8affcee1:where([data-with-child]){background-color:var(--mantine-color-dark-4)}.m_8affcee1:where([data-active]){border-color:var(--tli-color, var(--tl-color));background-color:var(--mantine-color-white);color:var(--tl-icon-color, var(--mantine-color-white))}.m_8affcee1:where([data-active]):where([data-with-child]){background-color:var(--tli-color, var(--tl-color));color:var(--tl-icon-color, var(--mantine-color-white))}.m_43657ece:where([data-align=left]) .m_540e8f41{padding-inline-start:var(--offset);text-align:left}:where([dir=rtl]) .m_43657ece:where([data-align=left]) .m_540e8f41{text-align:right}.m_43657ece:where([data-align=right]) .m_540e8f41{padding-inline-end:var(--offset);text-align:right}:where([dir=rtl]) .m_43657ece:where([data-align=right]) .m_540e8f41{text-align:left}.m_8a5d1357{margin:0;font-weight:var(--title-fw);font-size:var(--title-fz);line-height:var(--title-lh);font-family:var(--mantine-font-family-headings);text-wrap:var(--title-text-wrap, var(--mantine-heading-text-wrap))}.m_8a5d1357:where([data-line-clamp]){overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:var(--title-line-clamp);-webkit-box-orient:vertical}.m_f698e191{--level-offset: var(--mantine-spacing-lg);margin:0;padding:0;user-select:none}.m_75f3ecf{margin:0;padding:0}.m_f6970eb1{cursor:pointer;list-style:none;margin:0;padding:0;outline:0}.m_f6970eb1:focus-visible>.m_dc283425{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_dc283425{padding-inline-start:var(--label-offset)}:where([data-mantine-color-scheme=light]) .m_dc283425:where([data-selected]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_dc283425:where([data-selected]){background-color:var(--mantine-color-dark-5)}.m_d08caa0 :first-child{margin-top:0}.m_d08caa0 :last-child{margin-bottom:0}.m_d08caa0 :where(h1,h2,h3,h4,h5,h6){margin-bottom:var(--mantine-spacing-xs);text-wrap:var(--mantine-heading-text-wrap);font-family:var(--mantine-font-family-headings)}.m_d08caa0 :where(h1){margin-top:calc(1.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h1-font-size);line-height:var(--mantine-h1-line-height);font-weight:var(--mantine-h1-font-weight)}.m_d08caa0 :where(h2){margin-top:var(--mantine-spacing-xl);font-size:var(--mantine-h2-font-size);line-height:var(--mantine-h2-line-height);font-weight:var(--mantine-h2-font-weight)}.m_d08caa0 :where(h3){margin-top:calc(.8 * var(--mantine-spacing-xl));font-size:var(--mantine-h3-font-size);line-height:var(--mantine-h3-line-height);font-weight:var(--mantine-h3-font-weight)}.m_d08caa0 :where(h4){margin-top:calc(.8 * var(--mantine-spacing-xl));font-size:var(--mantine-h4-font-size);line-height:var(--mantine-h4-line-height);font-weight:var(--mantine-h4-font-weight)}.m_d08caa0 :where(h5){margin-top:calc(.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h5-font-size);line-height:var(--mantine-h5-line-height);font-weight:var(--mantine-h5-font-weight)}.m_d08caa0 :where(h6){margin-top:calc(.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h6-font-size);line-height:var(--mantine-h6-line-height);font-weight:var(--mantine-h6-font-weight)}.m_d08caa0 :where(img){max-width:100%;margin-bottom:var(--mantine-spacing-xs)}.m_d08caa0 :where(p){margin-top:0;margin-bottom:var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(mark){background-color:var(--mantine-color-yellow-2);color:inherit}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(mark){background-color:var(--mantine-color-yellow-5);color:var(--mantine-color-black)}.m_d08caa0 :where(a){color:var(--mantine-color-anchor);text-decoration:none}@media(hover:hover){.m_d08caa0 :where(a):hover{text-decoration:underline}}@media(hover:none){.m_d08caa0 :where(a):active{text-decoration:underline}}.m_d08caa0 :where(hr){margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-md);border:0;border-top:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(hr){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(hr){border-color:var(--mantine-color-dark-3)}.m_d08caa0 :where(pre){padding:var(--mantine-spacing-xs);line-height:var(--mantine-line-height);margin:0;margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-md);overflow-x:auto;font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-xs);border-radius:var(--mantine-radius-sm)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(pre){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(pre){background-color:var(--mantine-color-dark-8)}.m_d08caa0 :where(pre) :where(code){background-color:transparent;padding:0;border-radius:0;color:inherit;border:0}.m_d08caa0 :where(kbd){--kbd-fz: calc(.75rem * var(--mantine-scale));--kbd-padding: calc(.1875rem * var(--mantine-scale)) calc(.3125rem * var(--mantine-scale));font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);font-weight:700;padding:var(--kbd-padding);font-size:var(--kbd-fz);border-radius:var(--mantine-radius-sm);border:calc(.0625rem * var(--mantine-scale)) solid;border-bottom-width:calc(.1875rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(kbd){border-color:var(--mantine-color-gray-3);color:var(--mantine-color-gray-7);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(kbd){border-color:var(--mantine-color-dark-3);color:var(--mantine-color-dark-0);background-color:var(--mantine-color-dark-5)}.m_d08caa0 :where(code){line-height:var(--mantine-line-height);padding:calc(.0625rem * var(--mantine-scale)) calc(.3125rem * var(--mantine-scale));border-radius:var(--mantine-radius-sm);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-xs)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(code){background-color:var(--mantine-color-gray-0);color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(code){background-color:var(--mantine-color-dark-5);color:var(--mantine-color-white)}.m_d08caa0 :where(ul,ol):not([data-type=taskList]){margin-bottom:var(--mantine-spacing-md);padding-inline-start:var(--mantine-spacing-xl);list-style-position:outside}.m_d08caa0 :where(table){width:100%;border-collapse:collapse;caption-side:bottom;margin-bottom:var(--mantine-spacing-md)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(table){--table-border-color: var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(table){--table-border-color: var(--mantine-color-dark-4)}.m_d08caa0 :where(table) :where(caption){margin-top:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-sm);color:var(--mantine-color-dimmed)}.m_d08caa0 :where(table) :where(th){text-align:left;font-weight:700;font-size:var(--mantine-font-size-sm);padding:var(--mantine-spacing-xs) var(--mantine-spacing-sm)}.m_d08caa0 :where(table) :where(thead th){border-bottom:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color)}.m_d08caa0 :where(table) :where(tfoot th){border-top:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color)}.m_d08caa0 :where(table) :where(td){padding:var(--mantine-spacing-xs) var(--mantine-spacing-sm);border-bottom:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color);font-size:var(--mantine-font-size-sm)}.m_d08caa0 :where(table) :where(tr:last-of-type td){border-bottom:0}.m_d08caa0 :where(blockquote){font-size:var(--mantine-font-size-lg);line-height:var(--mantine-line-height);margin:var(--mantine-spacing-md) 0;border-radius:var(--mantine-radius-sm);padding:var(--mantine-spacing-md) var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(blockquote){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(blockquote){background-color:var(--mantine-color-dark-8)}}@layer xyflow{.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}}@layer base{:root{--made-with-panda: "🐼"}*,:before,:after,::backdrop{--blur: ;--brightness: ;--contrast: ;--grayscale: ;--hue-rotate: ;--invert: ;--saturate: ;--sepia: ;--drop-shadow: ;--backdrop-blur: ;--backdrop-brightness: ;--backdrop-contrast: ;--backdrop-grayscale: ;--backdrop-hue-rotate: ;--backdrop-invert: ;--backdrop-opacity: ;--backdrop-saturate: ;--backdrop-sepia: ;--gradient-from-position: ;--gradient-to-position: ;--gradient-via-position: ;--scroll-snap-strictness: proximity;--border-spacing-x: 0;--border-spacing-y: 0;--translate-x: 0;--translate-y: 0;--rotate: 0;--rotate-x: 0;--rotate-y: 0;--skew-x: 0;--skew-y: 0;--scale-x: 1;--scale-y: 1}:where(:root,:host){--likec4-app-font-default: "IBM Plex Sans",'ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"'}:where([data-likec4-text-size=xs]){--likec4-text-size: var(--font-sizes-likec4-xs)}:where([data-likec4-text-size=sm]){--likec4-text-size: var(--font-sizes-likec4-sm)}:where([data-likec4-text-size=md]){--likec4-text-size: var(--font-sizes-likec4-md)}:where([data-likec4-text-size=lg]){--likec4-text-size: var(--font-sizes-likec4-lg)}:where([data-likec4-text-size=xl]){--likec4-text-size: var(--font-sizes-likec4-xl)}:where([data-likec4-spacing=xs]){--likec4-spacing: var(--spacing-likec4-xs)}:where([data-likec4-spacing=sm]){--likec4-spacing: var(--spacing-likec4-sm)}:where([data-likec4-spacing=md]){--likec4-spacing: var(--spacing-likec4-md)}:where([data-likec4-spacing=lg]){--likec4-spacing: var(--spacing-likec4-lg)}:where([data-likec4-spacing=xl]){--likec4-spacing: var(--spacing-likec4-xl)}.likec4-shadow-root{--mantine-font-family: var(--likec4-app-font, var(--likec4-app-font-default));--mantine-font-family-headings: var(--likec4-app-font, var(--likec4-app-font-default));display:contents}.likec4-shadow-root dialog{color:var(--mantine-color-text)}.likec4-edge-label-container{position:absolute;top:var(--spacing-0);left:var(--spacing-0);width:auto;height:auto}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-edge-label-container{display:none}:where([data-likec4-zoom-small=true]) .likec4-edge-label-container{display:none}.likec4-root{padding:var(--spacing-0);margin:var(--spacing-0);border:0px solid transparent;overflow:hidden;position:relative;container-name:likec4-root;container-type:size;width:var(--sizes-100\\%);height:var(--sizes-100\\%)}.likec4-root .react-flow{--xy-background-color: var(--colors-likec4-background);--xy-background-pattern-color: var(--colors-likec4-background-pattern, var(--colors-likec4-background));contain:paint}.likec4-root .react-flow:is(.bg-transparent){--xy-background-color: transparent !important;background:var(--colors-transparent)!important}.likec4-root .react-flow:is(.not-initialized){opacity:0}.likec4-root .react-flow .react-flow__pane{-webkit-user-select:none;user-select:none}.likec4-root .react-flow :where(.react-flow__nodes,.react-flow__edges,.react-flow__edgelabel-renderer){display:contents}.likec4-root .react-flow .react-flow__node.draggable:has(.likec4-compound-node){cursor:default}.likec4-root :where(.react-flow__edge,.likec4-edge-container,.likec4-edge-label-container){--xy-edge-stroke-width: 3;--xy-edge-stroke: var(--likec4-palette-relation-stroke);--xy-edge-stroke-selected: var(--likec4-palette-relation-stroke-selected);--xy-edge-label-color: var(--likec4-palette-relation-label);--xy-edge-label-background-color: var(--likec4-palette-relation-label-bg)}[data-mantine-color-scheme=dark] .likec4-root :where(.react-flow__edge,.likec4-edge-container,.likec4-edge-label-container){--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-palette-relation-label-bg) 50%, transparent)}[data-mantine-color-scheme=light] .likec4-root :where(.react-flow__edge,.likec4-edge-container,.likec4-edge-label-container){--xy-edge-label-color: color-mix(in srgb, var(--likec4-palette-relation-label), rgba(255 255 255 / .85) 40%);--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-palette-relation-label-bg) 60%, transparent)}.likec4-root :where(.react-flow__edge,.likec4-edge-container,.likec4-edge-label-container):is([data-likec4-hovered=true],[data-edge-active=true]){--xy-edge-stroke-width: 4;--xy-edge-stroke: var(--likec4-palette-relation-stroke-selected)}.likec4-root :where(.react-flow__node,.react-flow__edge):has([data-likec4-dimmed]){opacity:.25}.likec4-root .likec4-edge-label-container:is([data-likec4-dimmed]){opacity:.25}.likec4-root:is([data-likec4-reduced-graphics]) .hide-on-reduced-graphics{display:none}.likec4-root :where(.relationships-browser,.likec4-relationship-details) .react-flow__attribution{display:none}.likec4-root .mantine-ActionIcon-icon .tabler-icon{width:75%;height:75%}.likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__node,.react-flow__edge):has([data-likec4-dimmed]){filter:grayscale(85%)}.likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__node,.react-flow__edge):has([data-likec4-dimmed=true]){--transition-prop: opacity, filter;transition-property:opacity,filter;--transition-easing: cubic-bezier(.5, 0, .2, 1);transition-timing-function:cubic-bezier(.5,0,.2,1);--transition-duration: .4s;transition-duration:.4s}.likec4-root:not([data-likec4-reduced-graphics]) .likec4-edge-label-container:is([data-likec4-dimmed]){filter:grayscale(85%)}.likec4-root:not([data-likec4-reduced-graphics]) .likec4-edge-label-container:is([data-likec4-dimmed=true]){--transition-prop: opacity, filter;transition-property:opacity,filter;--transition-easing: cubic-bezier(.5, 0, .2, 1);transition-timing-function:cubic-bezier(.5,0,.2,1);--transition-duration: .4s;transition-duration:.4s}[data-mantine-color-scheme=dark] .likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__edges,.react-flow__edgelabel-renderer)>:where(svg,.likec4-edge-label-container){mix-blend-mode:plus-lighter}[data-mantine-color-scheme=light] .likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__edges,.react-flow__edgelabel-renderer)>:where(svg,.likec4-edge-label-container){mix-blend-mode:screen}[data-mantine-color-scheme=light] .likec4-root:not([data-likec4-reduced-graphics]):has(.react-flow__node-seq-parallel) :where(.react-flow__edges>svg){mix-blend-mode:color-burn}[data-mantine-color-scheme=dark] .likec4-root:not([data-likec4-reduced-graphics]) .react-flow__node-seq-parallel{mix-blend-mode:luminosity}[data-mantine-color-scheme=light] .likec4-root:not([data-likec4-reduced-graphics]) .react-flow__node-seq-parallel{mix-blend-mode:color-burn}.likec4-static-view .react-flow .react-flow__attribution{display:none}:where(:root,:host){--likec4-text-size: 1.2rem;--likec4-palette-fill: #3b82f6;--likec4-palette-stroke: #2563eb;--likec4-palette-hiContrast: #eff6ff;--likec4-palette-loContrast: #bfdbfe;--likec4-palette-relation-stroke: #6E6E6E;--likec4-palette-relation-label: #C6C6C6;--likec4-palette-relation-label-bg: #18191b;--mantine-scale: 1;--likec4-palette-outline: var(--likec4-palette-loContrast);--likec4-spacing: ;--text-fz: ;--likec4-icon-size: }}@layer tokens{:where(:root,:host){--spacing-0: 0px;--spacing-1: 4px;--spacing-2: 8px;--spacing-3: 12px;--spacing-4: 16px;--spacing-5: 20px;--spacing-6: 24px;--spacing-7: 28px;--spacing-8: 32px;--spacing-9: 36px;--spacing-10: 40px;--spacing-likec4-xs: 8px;--spacing-likec4-sm: 10px;--spacing-likec4-md: 16px;--spacing-likec4-lg: 24px;--spacing-likec4-xl: 32px;--spacing-0\\.5: 2px;--spacing-1\\.5: 6px;--spacing-2\\.5: 10px;--spacing-3\\.5: 14px;--spacing-4\\.5: 18px;--spacing-xxs: calc(.5rem * var(--mantine-scale));--spacing-xs: calc(.625rem * var(--mantine-scale));--spacing-sm: calc(.75rem * var(--mantine-scale));--spacing-md: calc(1rem * var(--mantine-scale));--spacing-lg: calc(1.25rem * var(--mantine-scale));--spacing-xl: calc(2rem * var(--mantine-scale));--font-sizes-xxs: .625rem;--font-sizes-xs: calc(.75rem * var(--mantine-scale));--font-sizes-sm: calc(.875rem * var(--mantine-scale));--font-sizes-md: calc(1rem * var(--mantine-scale));--font-sizes-lg: calc(1.125rem * var(--mantine-scale));--font-sizes-xl: calc(1.25rem * var(--mantine-scale));--font-sizes-likec4-xs: .833rem;--font-sizes-likec4-sm: 1rem;--font-sizes-likec4-md: 1.2rem;--font-sizes-likec4-lg: 1.44rem;--font-sizes-likec4-xl: 1.73rem;--line-heights-1: 1;--line-heights-xs: 1.4;--line-heights-sm: 1.45;--line-heights-md: 1.55;--line-heights-lg: 1.6;--line-heights-xl: 1.65;--colors-mantine-colors-primary: var(--mantine-primary-color-6);--colors-mantine-colors-primary-filled: var(--mantine-primary-color-filled);--colors-mantine-colors-primary-filled-hover: var(--mantine-primary-color-filled-hover);--colors-mantine-colors-primary-light: var(--mantine-primary-color-light);--colors-mantine-colors-primary-light-hover: var(--mantine-primary-color-light-hover);--colors-mantine-colors-primary-light-color: var(--mantine-primary-color-light-color);--colors-mantine-colors-primary-outline: var(--mantine-primary-color-outline);--colors-mantine-colors-primary-outline-hover: var(--mantine-primary-color-outline-hover);--colors-mantine-colors-primary\\[0\\]: var(--mantine-primary-color-0);--colors-mantine-colors-primary\\[1\\]: var(--mantine-primary-color-1);--colors-mantine-colors-primary\\[2\\]: var(--mantine-primary-color-2);--colors-mantine-colors-primary\\[3\\]: var(--mantine-primary-color-3);--colors-mantine-colors-primary\\[4\\]: var(--mantine-primary-color-4);--colors-mantine-colors-primary\\[5\\]: var(--mantine-primary-color-5);--colors-mantine-colors-primary\\[6\\]: var(--mantine-primary-color-6);--colors-mantine-colors-primary\\[7\\]: var(--mantine-primary-color-7);--colors-mantine-colors-primary\\[8\\]: var(--mantine-primary-color-8);--colors-mantine-colors-primary\\[9\\]: var(--mantine-primary-color-9);--colors-mantine-colors-white: var(--mantine-color-white);--colors-mantine-colors-text: var(--mantine-color-text);--colors-mantine-colors-body: var(--mantine-color-body);--colors-mantine-colors-dimmed: var(--mantine-color-dimmed);--colors-mantine-colors-default-border: var(--mantine-color-default-border);--colors-mantine-colors-default-color: var(--mantine-color-default-color);--colors-mantine-colors-default-hover: var(--mantine-color-default-hover);--colors-mantine-colors-default: var(--mantine-color-default);--colors-mantine-colors-error: var(--mantine-color-error);--colors-mantine-colors-placeholder: var(--mantine-color-placeholder);--colors-mantine-colors-gray: var(--mantine-color-gray-6);--colors-mantine-colors-gray-filled: var(--mantine-color-gray-filled);--colors-mantine-colors-gray-filled-hover: var(--mantine-color-gray-filled-hover);--colors-mantine-colors-gray-light: var(--mantine-color-gray-light);--colors-mantine-colors-gray-light-hover: var(--mantine-color-gray-light-hover);--colors-mantine-colors-gray-light-color: var(--mantine-color-gray-light-color);--colors-mantine-colors-gray-outline: var(--mantine-color-gray-outline);--colors-mantine-colors-gray-outline-hover: var(--mantine-color-gray-outline-hover);--colors-mantine-colors-gray\\[0\\]: var(--mantine-color-gray-0);--colors-mantine-colors-gray\\[1\\]: var(--mantine-color-gray-1);--colors-mantine-colors-gray\\[2\\]: var(--mantine-color-gray-2);--colors-mantine-colors-gray\\[3\\]: var(--mantine-color-gray-3);--colors-mantine-colors-gray\\[4\\]: var(--mantine-color-gray-4);--colors-mantine-colors-gray\\[5\\]: var(--mantine-color-gray-5);--colors-mantine-colors-gray\\[6\\]: var(--mantine-color-gray-6);--colors-mantine-colors-gray\\[7\\]: var(--mantine-color-gray-7);--colors-mantine-colors-gray\\[8\\]: var(--mantine-color-gray-8);--colors-mantine-colors-gray\\[9\\]: var(--mantine-color-gray-9);--colors-mantine-colors-dark: var(--mantine-color-dark-6);--colors-mantine-colors-dark-filled: var(--mantine-color-dark-filled);--colors-mantine-colors-dark-filled-hover: var(--mantine-color-dark-filled-hover);--colors-mantine-colors-dark-light: var(--mantine-color-dark-light);--colors-mantine-colors-dark-light-hover: var(--mantine-color-dark-light-hover);--colors-mantine-colors-dark-light-color: var(--mantine-color-dark-light-color);--colors-mantine-colors-dark-outline: var(--mantine-color-dark-outline);--colors-mantine-colors-dark-outline-hover: var(--mantine-color-dark-outline-hover);--colors-mantine-colors-dark\\[0\\]: var(--mantine-color-dark-0);--colors-mantine-colors-dark\\[1\\]: var(--mantine-color-dark-1);--colors-mantine-colors-dark\\[2\\]: var(--mantine-color-dark-2);--colors-mantine-colors-dark\\[3\\]: var(--mantine-color-dark-3);--colors-mantine-colors-dark\\[4\\]: var(--mantine-color-dark-4);--colors-mantine-colors-dark\\[5\\]: var(--mantine-color-dark-5);--colors-mantine-colors-dark\\[6\\]: var(--mantine-color-dark-6);--colors-mantine-colors-dark\\[7\\]: var(--mantine-color-dark-7);--colors-mantine-colors-dark\\[8\\]: var(--mantine-color-dark-8);--colors-mantine-colors-dark\\[9\\]: var(--mantine-color-dark-9);--colors-mantine-colors-orange: var(--mantine-color-orange-6);--colors-mantine-colors-orange-filled: var(--mantine-color-orange-filled);--colors-mantine-colors-orange-filled-hover: var(--mantine-color-orange-filled-hover);--colors-mantine-colors-orange-light: var(--mantine-color-orange-light);--colors-mantine-colors-orange-light-hover: var(--mantine-color-orange-light-hover);--colors-mantine-colors-orange-light-color: var(--mantine-color-orange-light-color);--colors-mantine-colors-orange-outline: var(--mantine-color-orange-outline);--colors-mantine-colors-orange-outline-hover: var(--mantine-color-orange-outline-hover);--colors-mantine-colors-orange\\[0\\]: var(--mantine-color-orange-0);--colors-mantine-colors-orange\\[1\\]: var(--mantine-color-orange-1);--colors-mantine-colors-orange\\[2\\]: var(--mantine-color-orange-2);--colors-mantine-colors-orange\\[3\\]: var(--mantine-color-orange-3);--colors-mantine-colors-orange\\[4\\]: var(--mantine-color-orange-4);--colors-mantine-colors-orange\\[5\\]: var(--mantine-color-orange-5);--colors-mantine-colors-orange\\[6\\]: var(--mantine-color-orange-6);--colors-mantine-colors-orange\\[7\\]: var(--mantine-color-orange-7);--colors-mantine-colors-orange\\[8\\]: var(--mantine-color-orange-8);--colors-mantine-colors-orange\\[9\\]: var(--mantine-color-orange-9);--colors-mantine-colors-teal: var(--mantine-color-teal-6);--colors-mantine-colors-teal-filled: var(--mantine-color-teal-filled);--colors-mantine-colors-teal-filled-hover: var(--mantine-color-teal-filled-hover);--colors-mantine-colors-teal-light: var(--mantine-color-teal-light);--colors-mantine-colors-teal-light-hover: var(--mantine-color-teal-light-hover);--colors-mantine-colors-teal-light-color: var(--mantine-color-teal-light-color);--colors-mantine-colors-teal-outline: var(--mantine-color-teal-outline);--colors-mantine-colors-teal-outline-hover: var(--mantine-color-teal-outline-hover);--colors-mantine-colors-teal\\[0\\]: var(--mantine-color-teal-0);--colors-mantine-colors-teal\\[1\\]: var(--mantine-color-teal-1);--colors-mantine-colors-teal\\[2\\]: var(--mantine-color-teal-2);--colors-mantine-colors-teal\\[3\\]: var(--mantine-color-teal-3);--colors-mantine-colors-teal\\[4\\]: var(--mantine-color-teal-4);--colors-mantine-colors-teal\\[5\\]: var(--mantine-color-teal-5);--colors-mantine-colors-teal\\[6\\]: var(--mantine-color-teal-6);--colors-mantine-colors-teal\\[7\\]: var(--mantine-color-teal-7);--colors-mantine-colors-teal\\[8\\]: var(--mantine-color-teal-8);--colors-mantine-colors-teal\\[9\\]: var(--mantine-color-teal-9);--colors-mantine-colors-red: var(--mantine-color-red-6);--colors-mantine-colors-red-filled: var(--mantine-color-red-filled);--colors-mantine-colors-red-filled-hover: var(--mantine-color-red-filled-hover);--colors-mantine-colors-red-light: var(--mantine-color-red-light);--colors-mantine-colors-red-light-hover: var(--mantine-color-red-light-hover);--colors-mantine-colors-red-light-color: var(--mantine-color-red-light-color);--colors-mantine-colors-red-outline: var(--mantine-color-red-outline);--colors-mantine-colors-red-outline-hover: var(--mantine-color-red-outline-hover);--colors-mantine-colors-red\\[0\\]: var(--mantine-color-red-0);--colors-mantine-colors-red\\[1\\]: var(--mantine-color-red-1);--colors-mantine-colors-red\\[2\\]: var(--mantine-color-red-2);--colors-mantine-colors-red\\[3\\]: var(--mantine-color-red-3);--colors-mantine-colors-red\\[4\\]: var(--mantine-color-red-4);--colors-mantine-colors-red\\[5\\]: var(--mantine-color-red-5);--colors-mantine-colors-red\\[6\\]: var(--mantine-color-red-6);--colors-mantine-colors-red\\[7\\]: var(--mantine-color-red-7);--colors-mantine-colors-red\\[8\\]: var(--mantine-color-red-8);--colors-mantine-colors-red\\[9\\]: var(--mantine-color-red-9);--colors-mantine-colors-green: var(--mantine-color-green-6);--colors-mantine-colors-green-filled: var(--mantine-color-green-filled);--colors-mantine-colors-green-filled-hover: var(--mantine-color-green-filled-hover);--colors-mantine-colors-green-light: var(--mantine-color-green-light);--colors-mantine-colors-green-light-hover: var(--mantine-color-green-light-hover);--colors-mantine-colors-green-light-color: var(--mantine-color-green-light-color);--colors-mantine-colors-green-outline: var(--mantine-color-green-outline);--colors-mantine-colors-green-outline-hover: var(--mantine-color-green-outline-hover);--colors-mantine-colors-green\\[0\\]: var(--mantine-color-green-0);--colors-mantine-colors-green\\[1\\]: var(--mantine-color-green-1);--colors-mantine-colors-green\\[2\\]: var(--mantine-color-green-2);--colors-mantine-colors-green\\[3\\]: var(--mantine-color-green-3);--colors-mantine-colors-green\\[4\\]: var(--mantine-color-green-4);--colors-mantine-colors-green\\[5\\]: var(--mantine-color-green-5);--colors-mantine-colors-green\\[6\\]: var(--mantine-color-green-6);--colors-mantine-colors-green\\[7\\]: var(--mantine-color-green-7);--colors-mantine-colors-green\\[8\\]: var(--mantine-color-green-8);--colors-mantine-colors-green\\[9\\]: var(--mantine-color-green-9);--colors-mantine-colors-yellow: var(--mantine-color-yellow-6);--colors-mantine-colors-yellow-filled: var(--mantine-color-yellow-filled);--colors-mantine-colors-yellow-filled-hover: var(--mantine-color-yellow-filled-hover);--colors-mantine-colors-yellow-light: var(--mantine-color-yellow-light);--colors-mantine-colors-yellow-light-hover: var(--mantine-color-yellow-light-hover);--colors-mantine-colors-yellow-light-color: var(--mantine-color-yellow-light-color);--colors-mantine-colors-yellow-outline: var(--mantine-color-yellow-outline);--colors-mantine-colors-yellow-outline-hover: var(--mantine-color-yellow-outline-hover);--colors-mantine-colors-yellow\\[0\\]: var(--mantine-color-yellow-0);--colors-mantine-colors-yellow\\[1\\]: var(--mantine-color-yellow-1);--colors-mantine-colors-yellow\\[2\\]: var(--mantine-color-yellow-2);--colors-mantine-colors-yellow\\[3\\]: var(--mantine-color-yellow-3);--colors-mantine-colors-yellow\\[4\\]: var(--mantine-color-yellow-4);--colors-mantine-colors-yellow\\[5\\]: var(--mantine-color-yellow-5);--colors-mantine-colors-yellow\\[6\\]: var(--mantine-color-yellow-6);--colors-mantine-colors-yellow\\[7\\]: var(--mantine-color-yellow-7);--colors-mantine-colors-yellow\\[8\\]: var(--mantine-color-yellow-8);--colors-mantine-colors-yellow\\[9\\]: var(--mantine-color-yellow-9);--colors-transparent: transparent;--colors-none: none;--sizes-100\\%: 100%;--sizes-full: 100%;--sizes-breakpoint-xs: 36em;--sizes-breakpoint-sm: 48em;--sizes-breakpoint-md: 62em;--sizes-breakpoint-lg: 75em;--sizes-breakpoint-xl: 88em;--borders-none: none;--borders-transparent: 0px solid transparent;--borders-default: 1px solid var(--mantine-color-default-border);--radii-0: 0px;--radii-xs: .125rem;--radii-sm: .25rem;--radii-md: .5rem;--radii-lg: 1rem;--radii-xl: 2rem;--font-weights-normal: 400;--font-weights-medium: 500;--fonts-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--fonts-body: var(--likec4-app-font, var(--likec4-app-font-default));--fonts-likec4: var(--likec4-app-font, var(--likec4-app-font-default));--fonts-likec4-element: var(--likec4-element-font, var(--fonts-likec4));--fonts-likec4-compound: var(--likec4-compound-font, var(--fonts-likec4));--fonts-likec4-relation: var(--likec4-relation-font, var(--fonts-likec4));--easings-default: cubic-bezier(.4, 0, .2, 1);--easings-in: cubic-bezier(.4, 0, 1, 1);--easings-out: cubic-bezier(0, 0, .4, 1);--easings-in-out: cubic-bezier(.5, 0, .2, 1);--durations-fastest: 50ms;--durations-faster: .1s;--durations-fast: .13s;--durations-normal: .17s;--durations-slow: .3s;--durations-slower: .4s;--durations-slowest: .5s;--shadows-none: none;--shadows-xs: 0 1px 3px rgb(0 0 0/5%), 0 1px 2px rgb(0 0 0/10%);--shadows-sm: 0 1px 3px rgb(0 0 0/5%), 0 10px 15px -5px rgb(0 0 0/5%), 0 7px 7px -5px rgb(0 0 0/4%);--shadows-md: 0 1px 3px rgb(0 0 0/5%), 0 20px 25px -5px rgb(0 0 0/5%), 0 10px 10px -5px rgb(0 0 0/4%);--shadows-lg: 0 1px 3px rgb(0 0 0/5%), 0 28px 23px -7px rgb(0 0 0/5%), 0 12px 12px -7px rgb(0 0 0/4%);--shadows-xl: 0 1px 3px rgb(0 0 0/5%), 0 36px 28px -7px rgb(0 0 0/5%), 0 17px 17px -7px rgb(0 0 0/4%);--z-index-0: 0;--z-index-1: 1;--z-index--1: -1;--z-index-likec4-panel: 100;--z-index-likec4-dropdown: 200;--breakpoints-xs: 36em;--breakpoints-sm: 48em;--breakpoints-md: 62em;--breakpoints-lg: 75em;--breakpoints-xl: 88em;--colors-amber-1: var(--colors-amber-light-1);--colors-amber-2: var(--colors-amber-light-2);--colors-amber-3: var(--colors-amber-light-3);--colors-amber-4: var(--colors-amber-light-4);--colors-amber-5: var(--colors-amber-light-5);--colors-amber-6: var(--colors-amber-light-6);--colors-amber-7: var(--colors-amber-light-7);--colors-amber-8: var(--colors-amber-light-8);--colors-amber-9: var(--colors-amber-light-9);--colors-amber-10: var(--colors-amber-light-10);--colors-amber-11: var(--colors-amber-light-11);--colors-amber-12: var(--colors-amber-light-12);--colors-amber-light-1: #fefdfb;--colors-amber-light-2: #fefbe9;--colors-amber-light-3: #fff7c2;--colors-amber-light-4: #ffee9c;--colors-amber-light-5: #fbe577;--colors-amber-light-6: #f3d673;--colors-amber-light-7: #e9c162;--colors-amber-light-8: #e2a336;--colors-amber-light-9: #ffc53d;--colors-amber-light-10: #ffba18;--colors-amber-light-11: #ab6400;--colors-amber-light-12: #4f3422;--colors-amber-light-a-1: #c0800004;--colors-amber-light-a-2: #f4d10016;--colors-amber-light-a-3: #ffde003d;--colors-amber-light-a-4: #ffd40063;--colors-amber-light-a-5: #f8cf0088;--colors-amber-light-a-6: #eab5008c;--colors-amber-light-a-7: #dc9b009d;--colors-amber-light-a-8: #da8a00c9;--colors-amber-light-a-9: #ffb300c2;--colors-amber-light-a-10: #ffb300e7;--colors-amber-light-a-11: #ab6400;--colors-amber-light-a-12: #341500dd;--colors-amber-light-p3-1: color(display-p3 .995 .992 .985);--colors-amber-light-p3-2: color(display-p3 .994 .986 .921);--colors-amber-light-p3-3: color(display-p3 .994 .969 .782);--colors-amber-light-p3-4: color(display-p3 .989 .937 .65);--colors-amber-light-p3-5: color(display-p3 .97 .902 .527);--colors-amber-light-p3-6: color(display-p3 .936 .844 .506);--colors-amber-light-p3-7: color(display-p3 .89 .762 .443);--colors-amber-light-p3-8: color(display-p3 .85 .65 .3);--colors-amber-light-p3-9: color(display-p3 1 .77 .26);--colors-amber-light-p3-10: color(display-p3 .959 .741 .274);--colors-amber-light-p3-11: color(display-p3 .64 .4 0);--colors-amber-light-p3-12: color(display-p3 .294 .208 .145);--colors-amber-light-p3-a-1: color(display-p3 .757 .514 .024 / .016);--colors-amber-light-p3-a-2: color(display-p3 .902 .804 .008 / .079);--colors-amber-light-p3-a-3: color(display-p3 .965 .859 .004 / .22);--colors-amber-light-p3-a-4: color(display-p3 .969 .82 .004 / .35);--colors-amber-light-p3-a-5: color(display-p3 .933 .796 .004 / .475);--colors-amber-light-p3-a-6: color(display-p3 .875 .682 .004 / .495);--colors-amber-light-p3-a-7: color(display-p3 .804 .573 0 / .557);--colors-amber-light-p3-a-8: color(display-p3 .788 .502 0 / .699);--colors-amber-light-p3-a-9: color(display-p3 1 .686 0 / .742);--colors-amber-light-p3-a-10: color(display-p3 .945 .643 0 / .726);--colors-amber-light-p3-a-11: color(display-p3 .64 .4 0);--colors-amber-light-p3-a-12: color(display-p3 .294 .208 .145);--colors-amber-dark-1: #16120c;--colors-amber-dark-2: #1d180f;--colors-amber-dark-3: #302008;--colors-amber-dark-4: #3f2700;--colors-amber-dark-5: #4d3000;--colors-amber-dark-6: #5c3d05;--colors-amber-dark-7: #714f19;--colors-amber-dark-8: #8f6424;--colors-amber-dark-9: #ffc53d;--colors-amber-dark-10: #ffd60a;--colors-amber-dark-11: #ffca16;--colors-amber-dark-12: #ffe7b3;--colors-amber-dark-a-1: #e63c0006;--colors-amber-dark-a-2: #fd9b000d;--colors-amber-dark-a-3: #fa820022;--colors-amber-dark-a-4: #fc820032;--colors-amber-dark-a-5: #fd8b0041;--colors-amber-dark-a-6: #fd9b0051;--colors-amber-dark-a-7: #ffab2567;--colors-amber-dark-a-8: #ffae3587;--colors-amber-dark-a-9: #ffc53d;--colors-amber-dark-a-10: #ffd60a;--colors-amber-dark-a-11: #ffca16;--colors-amber-dark-a-12: #ffe7b3;--colors-amber-dark-p3-1: color(display-p3 .082 .07 .05);--colors-amber-dark-p3-2: color(display-p3 .111 .094 .064);--colors-amber-dark-p3-3: color(display-p3 .178 .128 .049);--colors-amber-dark-p3-4: color(display-p3 .239 .156 0);--colors-amber-dark-p3-5: color(display-p3 .29 .193 0);--colors-amber-dark-p3-6: color(display-p3 .344 .245 .076);--colors-amber-dark-p3-7: color(display-p3 .422 .314 .141);--colors-amber-dark-p3-8: color(display-p3 .535 .399 .189);--colors-amber-dark-p3-9: color(display-p3 1 .77 .26);--colors-amber-dark-p3-10: color(display-p3 1 .87 .15);--colors-amber-dark-p3-11: color(display-p3 1 .8 .29);--colors-amber-dark-p3-12: color(display-p3 .984 .909 .726);--colors-amber-dark-p3-a-1: color(display-p3 .992 .298 0 / .017);--colors-amber-dark-p3-a-2: color(display-p3 .988 .651 0 / .047);--colors-amber-dark-p3-a-3: color(display-p3 1 .6 0 / .118);--colors-amber-dark-p3-a-4: color(display-p3 1 .557 0 / .185);--colors-amber-dark-p3-a-5: color(display-p3 1 .592 0 / .24);--colors-amber-dark-p3-a-6: color(display-p3 1 .659 .094 / .299);--colors-amber-dark-p3-a-7: color(display-p3 1 .714 .263 / .383);--colors-amber-dark-p3-a-8: color(display-p3 .996 .729 .306 / .5);--colors-amber-dark-p3-a-9: color(display-p3 1 .769 .259);--colors-amber-dark-p3-a-10: color(display-p3 1 .871 .149);--colors-amber-dark-p3-a-11: color(display-p3 1 .8 .29);--colors-amber-dark-p3-a-12: color(display-p3 .984 .909 .726);--colors-amber-a-1: var(--colors-amber-light-a-1);--colors-amber-a-2: var(--colors-amber-light-a-2);--colors-amber-a-3: var(--colors-amber-light-a-3);--colors-amber-a-4: var(--colors-amber-light-a-4);--colors-amber-a-5: var(--colors-amber-light-a-5);--colors-amber-a-6: var(--colors-amber-light-a-6);--colors-amber-a-7: var(--colors-amber-light-a-7);--colors-amber-a-8: var(--colors-amber-light-a-8);--colors-amber-a-9: var(--colors-amber-light-a-9);--colors-amber-a-10: var(--colors-amber-light-a-10);--colors-amber-a-11: var(--colors-amber-light-a-11);--colors-amber-a-12: var(--colors-amber-light-a-12);--colors-amber-p3-1: var(--colors-amber-light-p3-1);--colors-amber-p3-2: var(--colors-amber-light-p3-2);--colors-amber-p3-3: var(--colors-amber-light-p3-3);--colors-amber-p3-4: var(--colors-amber-light-p3-4);--colors-amber-p3-5: var(--colors-amber-light-p3-5);--colors-amber-p3-6: var(--colors-amber-light-p3-6);--colors-amber-p3-7: var(--colors-amber-light-p3-7);--colors-amber-p3-8: var(--colors-amber-light-p3-8);--colors-amber-p3-9: var(--colors-amber-light-p3-9);--colors-amber-p3-10: var(--colors-amber-light-p3-10);--colors-amber-p3-11: var(--colors-amber-light-p3-11);--colors-amber-p3-12: var(--colors-amber-light-p3-12);--colors-amber-p3-a-1: var(--colors-amber-light-p3-a-1);--colors-amber-p3-a-2: var(--colors-amber-light-p3-a-2);--colors-amber-p3-a-3: var(--colors-amber-light-p3-a-3);--colors-amber-p3-a-4: var(--colors-amber-light-p3-a-4);--colors-amber-p3-a-5: var(--colors-amber-light-p3-a-5);--colors-amber-p3-a-6: var(--colors-amber-light-p3-a-6);--colors-amber-p3-a-7: var(--colors-amber-light-p3-a-7);--colors-amber-p3-a-8: var(--colors-amber-light-p3-a-8);--colors-amber-p3-a-9: var(--colors-amber-light-p3-a-9);--colors-amber-p3-a-10: var(--colors-amber-light-p3-a-10);--colors-amber-p3-a-11: var(--colors-amber-light-p3-a-11);--colors-amber-p3-a-12: var(--colors-amber-light-p3-a-12);--colors-blue-1: var(--colors-blue-light-1);--colors-blue-2: var(--colors-blue-light-2);--colors-blue-3: var(--colors-blue-light-3);--colors-blue-4: var(--colors-blue-light-4);--colors-blue-5: var(--colors-blue-light-5);--colors-blue-6: var(--colors-blue-light-6);--colors-blue-7: var(--colors-blue-light-7);--colors-blue-8: var(--colors-blue-light-8);--colors-blue-9: var(--colors-blue-light-9);--colors-blue-10: var(--colors-blue-light-10);--colors-blue-11: var(--colors-blue-light-11);--colors-blue-12: var(--colors-blue-light-12);--colors-blue-light-1: #fbfdff;--colors-blue-light-2: #f4faff;--colors-blue-light-3: #e6f4fe;--colors-blue-light-4: #d5efff;--colors-blue-light-5: #c2e5ff;--colors-blue-light-6: #acd8fc;--colors-blue-light-7: #8ec8f6;--colors-blue-light-8: #5eb1ef;--colors-blue-light-9: #0090ff;--colors-blue-light-10: #0588f0;--colors-blue-light-11: #0d74ce;--colors-blue-light-12: #113264;--colors-blue-light-a-1: #0080ff04;--colors-blue-light-a-2: #008cff0b;--colors-blue-light-a-3: #008ff519;--colors-blue-light-a-4: #009eff2a;--colors-blue-light-a-5: #0093ff3d;--colors-blue-light-a-6: #0088f653;--colors-blue-light-a-7: #0083eb71;--colors-blue-light-a-8: #0084e6a1;--colors-blue-light-a-9: #0090ff;--colors-blue-light-a-10: #0086f0fa;--colors-blue-light-a-11: #006dcbf2;--colors-blue-light-a-12: #002359ee;--colors-blue-light-p3-1: color(display-p3 .986 .992 .999);--colors-blue-light-p3-2: color(display-p3 .96 .979 .998);--colors-blue-light-p3-3: color(display-p3 .912 .956 .991);--colors-blue-light-p3-4: color(display-p3 .853 .932 1);--colors-blue-light-p3-5: color(display-p3 .788 .894 .998);--colors-blue-light-p3-6: color(display-p3 .709 .843 .976);--colors-blue-light-p3-7: color(display-p3 .606 .777 .947);--colors-blue-light-p3-8: color(display-p3 .451 .688 .917);--colors-blue-light-p3-9: color(display-p3 .247 .556 .969);--colors-blue-light-p3-10: color(display-p3 .234 .523 .912);--colors-blue-light-p3-11: color(display-p3 .15 .44 .84);--colors-blue-light-p3-12: color(display-p3 .102 .193 .379);--colors-blue-light-p3-a-1: color(display-p3 .024 .514 1 / .016);--colors-blue-light-p3-a-2: color(display-p3 .024 .514 .906 / .04);--colors-blue-light-p3-a-3: color(display-p3 .012 .506 .914 / .087);--colors-blue-light-p3-a-4: color(display-p3 .008 .545 1 / .146);--colors-blue-light-p3-a-5: color(display-p3 .004 .502 .984 / .212);--colors-blue-light-p3-a-6: color(display-p3 .004 .463 .922 / .291);--colors-blue-light-p3-a-7: color(display-p3 .004 .431 .863 / .393);--colors-blue-light-p3-a-8: color(display-p3 0 .427 .851 / .55);--colors-blue-light-p3-a-9: color(display-p3 0 .412 .961 / .753);--colors-blue-light-p3-a-10: color(display-p3 0 .376 .886 / .765);--colors-blue-light-p3-a-11: color(display-p3 .15 .44 .84);--colors-blue-light-p3-a-12: color(display-p3 .102 .193 .379);--colors-blue-dark-1: #0d1520;--colors-blue-dark-2: #111927;--colors-blue-dark-3: #0d2847;--colors-blue-dark-4: #003362;--colors-blue-dark-5: #004074;--colors-blue-dark-6: #104d87;--colors-blue-dark-7: #205d9e;--colors-blue-dark-8: #2870bd;--colors-blue-dark-9: #0090ff;--colors-blue-dark-10: #3b9eff;--colors-blue-dark-11: #70b8ff;--colors-blue-dark-12: #c2e6ff;--colors-blue-dark-a-1: #004df211;--colors-blue-dark-a-2: #1166fb18;--colors-blue-dark-a-3: #0077ff3a;--colors-blue-dark-a-4: #0075ff57;--colors-blue-dark-a-5: #0081fd6b;--colors-blue-dark-a-6: #0f89fd7f;--colors-blue-dark-a-7: #2a91fe98;--colors-blue-dark-a-8: #3094feb9;--colors-blue-dark-a-9: #0090ff;--colors-blue-dark-a-10: #3b9eff;--colors-blue-dark-a-11: #70b8ff;--colors-blue-dark-a-12: #c2e6ff;--colors-blue-dark-p3-1: color(display-p3 .057 .081 .122);--colors-blue-dark-p3-2: color(display-p3 .072 .098 .147);--colors-blue-dark-p3-3: color(display-p3 .078 .154 .27);--colors-blue-dark-p3-4: color(display-p3 .033 .197 .37);--colors-blue-dark-p3-5: color(display-p3 .08 .245 .441);--colors-blue-dark-p3-6: color(display-p3 .14 .298 .511);--colors-blue-dark-p3-7: color(display-p3 .195 .361 .6);--colors-blue-dark-p3-8: color(display-p3 .239 .434 .72);--colors-blue-dark-p3-9: color(display-p3 .247 .556 .969);--colors-blue-dark-p3-10: color(display-p3 .344 .612 .973);--colors-blue-dark-p3-11: color(display-p3 .49 .72 1);--colors-blue-dark-p3-12: color(display-p3 .788 .898 .99);--colors-blue-dark-p3-a-1: color(display-p3 0 .333 1 / .059);--colors-blue-dark-p3-a-2: color(display-p3 .114 .435 .988 / .085);--colors-blue-dark-p3-a-3: color(display-p3 .122 .463 1 / .219);--colors-blue-dark-p3-a-4: color(display-p3 0 .467 1 / .324);--colors-blue-dark-p3-a-5: color(display-p3 .098 .51 1 / .4);--colors-blue-dark-p3-a-6: color(display-p3 .224 .557 1 / .475);--colors-blue-dark-p3-a-7: color(display-p3 .294 .584 1 / .572);--colors-blue-dark-p3-a-8: color(display-p3 .314 .592 1 / .702);--colors-blue-dark-p3-a-9: color(display-p3 .251 .573 .996 / .967);--colors-blue-dark-p3-a-10: color(display-p3 .357 .631 1 / .971);--colors-blue-dark-p3-a-11: color(display-p3 .49 .72 1);--colors-blue-dark-p3-a-12: color(display-p3 .788 .898 .99);--colors-blue-a-1: var(--colors-blue-light-a-1);--colors-blue-a-2: var(--colors-blue-light-a-2);--colors-blue-a-3: var(--colors-blue-light-a-3);--colors-blue-a-4: var(--colors-blue-light-a-4);--colors-blue-a-5: var(--colors-blue-light-a-5);--colors-blue-a-6: var(--colors-blue-light-a-6);--colors-blue-a-7: var(--colors-blue-light-a-7);--colors-blue-a-8: var(--colors-blue-light-a-8);--colors-blue-a-9: var(--colors-blue-light-a-9);--colors-blue-a-10: var(--colors-blue-light-a-10);--colors-blue-a-11: var(--colors-blue-light-a-11);--colors-blue-a-12: var(--colors-blue-light-a-12);--colors-blue-p3-1: var(--colors-blue-light-p3-1);--colors-blue-p3-2: var(--colors-blue-light-p3-2);--colors-blue-p3-3: var(--colors-blue-light-p3-3);--colors-blue-p3-4: var(--colors-blue-light-p3-4);--colors-blue-p3-5: var(--colors-blue-light-p3-5);--colors-blue-p3-6: var(--colors-blue-light-p3-6);--colors-blue-p3-7: var(--colors-blue-light-p3-7);--colors-blue-p3-8: var(--colors-blue-light-p3-8);--colors-blue-p3-9: var(--colors-blue-light-p3-9);--colors-blue-p3-10: var(--colors-blue-light-p3-10);--colors-blue-p3-11: var(--colors-blue-light-p3-11);--colors-blue-p3-12: var(--colors-blue-light-p3-12);--colors-blue-p3-a-1: var(--colors-blue-light-p3-a-1);--colors-blue-p3-a-2: var(--colors-blue-light-p3-a-2);--colors-blue-p3-a-3: var(--colors-blue-light-p3-a-3);--colors-blue-p3-a-4: var(--colors-blue-light-p3-a-4);--colors-blue-p3-a-5: var(--colors-blue-light-p3-a-5);--colors-blue-p3-a-6: var(--colors-blue-light-p3-a-6);--colors-blue-p3-a-7: var(--colors-blue-light-p3-a-7);--colors-blue-p3-a-8: var(--colors-blue-light-p3-a-8);--colors-blue-p3-a-9: var(--colors-blue-light-p3-a-9);--colors-blue-p3-a-10: var(--colors-blue-light-p3-a-10);--colors-blue-p3-a-11: var(--colors-blue-light-p3-a-11);--colors-blue-p3-a-12: var(--colors-blue-light-p3-a-12);--colors-crimson-1: var(--colors-crimson-light-1);--colors-crimson-2: var(--colors-crimson-light-2);--colors-crimson-3: var(--colors-crimson-light-3);--colors-crimson-4: var(--colors-crimson-light-4);--colors-crimson-5: var(--colors-crimson-light-5);--colors-crimson-6: var(--colors-crimson-light-6);--colors-crimson-7: var(--colors-crimson-light-7);--colors-crimson-8: var(--colors-crimson-light-8);--colors-crimson-9: var(--colors-crimson-light-9);--colors-crimson-10: var(--colors-crimson-light-10);--colors-crimson-11: var(--colors-crimson-light-11);--colors-crimson-12: var(--colors-crimson-light-12);--colors-crimson-light-1: #fffcfd;--colors-crimson-light-2: #fef7f9;--colors-crimson-light-3: #ffe9f0;--colors-crimson-light-4: #fedce7;--colors-crimson-light-5: #facedd;--colors-crimson-light-6: #f3bed1;--colors-crimson-light-7: #eaacc3;--colors-crimson-light-8: #e093b2;--colors-crimson-light-9: #e93d82;--colors-crimson-light-10: #df3478;--colors-crimson-light-11: #cb1d63;--colors-crimson-light-12: #621639;--colors-crimson-light-a-1: #ff005503;--colors-crimson-light-a-2: #e0004008;--colors-crimson-light-a-3: #ff005216;--colors-crimson-light-a-4: #f8005123;--colors-crimson-light-a-5: #e5004f31;--colors-crimson-light-a-6: #d0004b41;--colors-crimson-light-a-7: #bf004753;--colors-crimson-light-a-8: #b6004a6c;--colors-crimson-light-a-9: #e2005bc2;--colors-crimson-light-a-10: #d70056cb;--colors-crimson-light-a-11: #c4004fe2;--colors-crimson-light-a-12: #530026e9;--colors-crimson-light-p3-1: color(display-p3 .998 .989 .992);--colors-crimson-light-p3-2: color(display-p3 .991 .969 .976);--colors-crimson-light-p3-3: color(display-p3 .987 .917 .941);--colors-crimson-light-p3-4: color(display-p3 .975 .866 .904);--colors-crimson-light-p3-5: color(display-p3 .953 .813 .864);--colors-crimson-light-p3-6: color(display-p3 .921 .755 .817);--colors-crimson-light-p3-7: color(display-p3 .88 .683 .761);--colors-crimson-light-p3-8: color(display-p3 .834 .592 .694);--colors-crimson-light-p3-9: color(display-p3 .843 .298 .507);--colors-crimson-light-p3-10: color(display-p3 .807 .266 .468);--colors-crimson-light-p3-11: color(display-p3 .731 .195 .388);--colors-crimson-light-p3-12: color(display-p3 .352 .111 .221);--colors-crimson-light-p3-a-1: color(display-p3 .675 .024 .349 / .012);--colors-crimson-light-p3-a-2: color(display-p3 .757 .02 .267 / .032);--colors-crimson-light-p3-a-3: color(display-p3 .859 .008 .294 / .083);--colors-crimson-light-p3-a-4: color(display-p3 .827 .008 .298 / .134);--colors-crimson-light-p3-a-5: color(display-p3 .753 .008 .275 / .189);--colors-crimson-light-p3-a-6: color(display-p3 .682 .004 .247 / .244);--colors-crimson-light-p3-a-7: color(display-p3 .62 .004 .251 / .318);--colors-crimson-light-p3-a-8: color(display-p3 .6 .004 .251 / .408);--colors-crimson-light-p3-a-9: color(display-p3 .776 0 .298 / .702);--colors-crimson-light-p3-a-10: color(display-p3 .737 0 .275 / .734);--colors-crimson-light-p3-a-11: color(display-p3 .731 .195 .388);--colors-crimson-light-p3-a-12: color(display-p3 .352 .111 .221);--colors-crimson-dark-1: #191114;--colors-crimson-dark-2: #201318;--colors-crimson-dark-3: #381525;--colors-crimson-dark-4: #4d122f;--colors-crimson-dark-5: #5c1839;--colors-crimson-dark-6: #6d2545;--colors-crimson-dark-7: #873356;--colors-crimson-dark-8: #b0436e;--colors-crimson-dark-9: #e93d82;--colors-crimson-dark-10: #ee518a;--colors-crimson-dark-11: #ff92ad;--colors-crimson-dark-12: #fdd3e8;--colors-crimson-dark-a-1: #f4126709;--colors-crimson-dark-a-2: #f22f7a11;--colors-crimson-dark-a-3: #fe2a8b2a;--colors-crimson-dark-a-4: #fd158741;--colors-crimson-dark-a-5: #fd278f51;--colors-crimson-dark-a-6: #fe459763;--colors-crimson-dark-a-7: #fd559b7f;--colors-crimson-dark-a-8: #fe5b9bab;--colors-crimson-dark-a-9: #fe418de8;--colors-crimson-dark-a-10: #ff5693ed;--colors-crimson-dark-a-11: #ff92ad;--colors-crimson-dark-a-12: #ffd5eafd;--colors-crimson-dark-p3-1: color(display-p3 .093 .068 .078);--colors-crimson-dark-p3-2: color(display-p3 .117 .078 .095);--colors-crimson-dark-p3-3: color(display-p3 .203 .091 .143);--colors-crimson-dark-p3-4: color(display-p3 .277 .087 .182);--colors-crimson-dark-p3-5: color(display-p3 .332 .115 .22);--colors-crimson-dark-p3-6: color(display-p3 .394 .162 .268);--colors-crimson-dark-p3-7: color(display-p3 .489 .222 .336);--colors-crimson-dark-p3-8: color(display-p3 .638 .289 .429);--colors-crimson-dark-p3-9: color(display-p3 .843 .298 .507);--colors-crimson-dark-p3-10: color(display-p3 .864 .364 .539);--colors-crimson-dark-p3-11: color(display-p3 1 .56 .66);--colors-crimson-dark-p3-12: color(display-p3 .966 .834 .906);--colors-crimson-dark-p3-a-1: color(display-p3 .984 .071 .463 / .03);--colors-crimson-dark-p3-a-2: color(display-p3 .996 .282 .569 / .055);--colors-crimson-dark-p3-a-3: color(display-p3 .996 .227 .573 / .148);--colors-crimson-dark-p3-a-4: color(display-p3 1 .157 .569 / .227);--colors-crimson-dark-p3-a-5: color(display-p3 1 .231 .604 / .286);--colors-crimson-dark-p3-a-6: color(display-p3 1 .337 .643 / .349);--colors-crimson-dark-p3-a-7: color(display-p3 1 .416 .663 / .454);--colors-crimson-dark-p3-a-8: color(display-p3 .996 .427 .651 / .614);--colors-crimson-dark-p3-a-9: color(display-p3 1 .345 .596 / .832);--colors-crimson-dark-p3-a-10: color(display-p3 1 .42 .62 / .853);--colors-crimson-dark-p3-a-11: color(display-p3 1 .56 .66);--colors-crimson-dark-p3-a-12: color(display-p3 .966 .834 .906);--colors-crimson-a-1: var(--colors-crimson-light-a-1);--colors-crimson-a-2: var(--colors-crimson-light-a-2);--colors-crimson-a-3: var(--colors-crimson-light-a-3);--colors-crimson-a-4: var(--colors-crimson-light-a-4);--colors-crimson-a-5: var(--colors-crimson-light-a-5);--colors-crimson-a-6: var(--colors-crimson-light-a-6);--colors-crimson-a-7: var(--colors-crimson-light-a-7);--colors-crimson-a-8: var(--colors-crimson-light-a-8);--colors-crimson-a-9: var(--colors-crimson-light-a-9);--colors-crimson-a-10: var(--colors-crimson-light-a-10);--colors-crimson-a-11: var(--colors-crimson-light-a-11);--colors-crimson-a-12: var(--colors-crimson-light-a-12);--colors-crimson-p3-1: var(--colors-crimson-light-p3-1);--colors-crimson-p3-2: var(--colors-crimson-light-p3-2);--colors-crimson-p3-3: var(--colors-crimson-light-p3-3);--colors-crimson-p3-4: var(--colors-crimson-light-p3-4);--colors-crimson-p3-5: var(--colors-crimson-light-p3-5);--colors-crimson-p3-6: var(--colors-crimson-light-p3-6);--colors-crimson-p3-7: var(--colors-crimson-light-p3-7);--colors-crimson-p3-8: var(--colors-crimson-light-p3-8);--colors-crimson-p3-9: var(--colors-crimson-light-p3-9);--colors-crimson-p3-10: var(--colors-crimson-light-p3-10);--colors-crimson-p3-11: var(--colors-crimson-light-p3-11);--colors-crimson-p3-12: var(--colors-crimson-light-p3-12);--colors-crimson-p3-a-1: var(--colors-crimson-light-p3-a-1);--colors-crimson-p3-a-2: var(--colors-crimson-light-p3-a-2);--colors-crimson-p3-a-3: var(--colors-crimson-light-p3-a-3);--colors-crimson-p3-a-4: var(--colors-crimson-light-p3-a-4);--colors-crimson-p3-a-5: var(--colors-crimson-light-p3-a-5);--colors-crimson-p3-a-6: var(--colors-crimson-light-p3-a-6);--colors-crimson-p3-a-7: var(--colors-crimson-light-p3-a-7);--colors-crimson-p3-a-8: var(--colors-crimson-light-p3-a-8);--colors-crimson-p3-a-9: var(--colors-crimson-light-p3-a-9);--colors-crimson-p3-a-10: var(--colors-crimson-light-p3-a-10);--colors-crimson-p3-a-11: var(--colors-crimson-light-p3-a-11);--colors-crimson-p3-a-12: var(--colors-crimson-light-p3-a-12);--colors-grass-1: var(--colors-grass-light-1);--colors-grass-2: var(--colors-grass-light-2);--colors-grass-3: var(--colors-grass-light-3);--colors-grass-4: var(--colors-grass-light-4);--colors-grass-5: var(--colors-grass-light-5);--colors-grass-6: var(--colors-grass-light-6);--colors-grass-7: var(--colors-grass-light-7);--colors-grass-8: var(--colors-grass-light-8);--colors-grass-9: var(--colors-grass-light-9);--colors-grass-10: var(--colors-grass-light-10);--colors-grass-11: var(--colors-grass-light-11);--colors-grass-12: var(--colors-grass-light-12);--colors-grass-light-1: #fbfefb;--colors-grass-light-2: #f5fbf5;--colors-grass-light-3: #e9f6e9;--colors-grass-light-4: #daf1db;--colors-grass-light-5: #c9e8ca;--colors-grass-light-6: #b2ddb5;--colors-grass-light-7: #94ce9a;--colors-grass-light-8: #65ba74;--colors-grass-light-9: #46a758;--colors-grass-light-10: #3e9b4f;--colors-grass-light-11: #2a7e3b;--colors-grass-light-12: #203c25;--colors-grass-light-a-1: #00c00004;--colors-grass-light-a-2: #0099000a;--colors-grass-light-a-3: #00970016;--colors-grass-light-a-4: #009f0725;--colors-grass-light-a-5: #00930536;--colors-grass-light-a-6: #008f0a4d;--colors-grass-light-a-7: #018b0f6b;--colors-grass-light-a-8: #008d199a;--colors-grass-light-a-9: #008619b9;--colors-grass-light-a-10: #007b17c1;--colors-grass-light-a-11: #006514d5;--colors-grass-light-a-12: #002006df;--colors-grass-light-p3-1: color(display-p3 .986 .996 .985);--colors-grass-light-p3-2: color(display-p3 .966 .983 .964);--colors-grass-light-p3-3: color(display-p3 .923 .965 .917);--colors-grass-light-p3-4: color(display-p3 .872 .94 .865);--colors-grass-light-p3-5: color(display-p3 .811 .908 .802);--colors-grass-light-p3-6: color(display-p3 .733 .864 .724);--colors-grass-light-p3-7: color(display-p3 .628 .803 .622);--colors-grass-light-p3-8: color(display-p3 .477 .72 .482);--colors-grass-light-p3-9: color(display-p3 .38 .647 .378);--colors-grass-light-p3-10: color(display-p3 .344 .598 .342);--colors-grass-light-p3-11: color(display-p3 .263 .488 .261);--colors-grass-light-p3-12: color(display-p3 .151 .233 .153);--colors-grass-light-p3-a-1: color(display-p3 .024 .757 .024 / .016);--colors-grass-light-p3-a-2: color(display-p3 .024 .565 .024 / .036);--colors-grass-light-p3-a-3: color(display-p3 .059 .576 .008 / .083);--colors-grass-light-p3-a-4: color(display-p3 .035 .565 .008 / .134);--colors-grass-light-p3-a-5: color(display-p3 .047 .545 .008 / .197);--colors-grass-light-p3-a-6: color(display-p3 .031 .502 .004 / .275);--colors-grass-light-p3-a-7: color(display-p3 .012 .482 .004 / .377);--colors-grass-light-p3-a-8: color(display-p3 0 .467 .008 / .522);--colors-grass-light-p3-a-9: color(display-p3 .008 .435 0 / .624);--colors-grass-light-p3-a-10: color(display-p3 .008 .388 0 / .659);--colors-grass-light-p3-a-11: color(display-p3 .263 .488 .261);--colors-grass-light-p3-a-12: color(display-p3 .151 .233 .153);--colors-grass-dark-1: #0e1511;--colors-grass-dark-2: #141a15;--colors-grass-dark-3: #1b2a1e;--colors-grass-dark-4: #1d3a24;--colors-grass-dark-5: #25482d;--colors-grass-dark-6: #2d5736;--colors-grass-dark-7: #366740;--colors-grass-dark-8: #3e7949;--colors-grass-dark-9: #46a758;--colors-grass-dark-10: #53b365;--colors-grass-dark-11: #71d083;--colors-grass-dark-12: #c2f0c2;--colors-grass-dark-a-1: #00de1205;--colors-grass-dark-a-2: #5ef7780a;--colors-grass-dark-a-3: #70fe8c1b;--colors-grass-dark-a-4: #57ff802c;--colors-grass-dark-a-5: #68ff8b3b;--colors-grass-dark-a-6: #71ff8f4b;--colors-grass-dark-a-7: #77fd925d;--colors-grass-dark-a-8: #77fd9070;--colors-grass-dark-a-9: #65ff82a1;--colors-grass-dark-a-10: #72ff8dae;--colors-grass-dark-a-11: #89ff9fcd;--colors-grass-dark-a-12: #ceffceef;--colors-grass-dark-p3-1: color(display-p3 .062 .083 .067);--colors-grass-dark-p3-2: color(display-p3 .083 .103 .085);--colors-grass-dark-p3-3: color(display-p3 .118 .163 .122);--colors-grass-dark-p3-4: color(display-p3 .142 .225 .15);--colors-grass-dark-p3-5: color(display-p3 .178 .279 .186);--colors-grass-dark-p3-6: color(display-p3 .217 .337 .224);--colors-grass-dark-p3-7: color(display-p3 .258 .4 .264);--colors-grass-dark-p3-8: color(display-p3 .302 .47 .305);--colors-grass-dark-p3-9: color(display-p3 .38 .647 .378);--colors-grass-dark-p3-10: color(display-p3 .426 .694 .426);--colors-grass-dark-p3-11: color(display-p3 .535 .807 .542);--colors-grass-dark-p3-12: color(display-p3 .797 .936 .776);--colors-grass-dark-p3-a-1: color(display-p3 0 .992 .071 / .017);--colors-grass-dark-p3-a-2: color(display-p3 .482 .996 .584 / .038);--colors-grass-dark-p3-a-3: color(display-p3 .549 .992 .588 / .106);--colors-grass-dark-p3-a-4: color(display-p3 .51 .996 .557 / .169);--colors-grass-dark-p3-a-5: color(display-p3 .553 1 .588 / .227);--colors-grass-dark-p3-a-6: color(display-p3 .584 1 .608 / .29);--colors-grass-dark-p3-a-7: color(display-p3 .604 1 .616 / .358);--colors-grass-dark-p3-a-8: color(display-p3 .608 1 .62 / .433);--colors-grass-dark-p3-a-9: color(display-p3 .573 1 .569 / .622);--colors-grass-dark-p3-a-10: color(display-p3 .6 .996 .6 / .673);--colors-grass-dark-p3-a-11: color(display-p3 .535 .807 .542);--colors-grass-dark-p3-a-12: color(display-p3 .797 .936 .776);--colors-grass-a-1: var(--colors-grass-light-a-1);--colors-grass-a-2: var(--colors-grass-light-a-2);--colors-grass-a-3: var(--colors-grass-light-a-3);--colors-grass-a-4: var(--colors-grass-light-a-4);--colors-grass-a-5: var(--colors-grass-light-a-5);--colors-grass-a-6: var(--colors-grass-light-a-6);--colors-grass-a-7: var(--colors-grass-light-a-7);--colors-grass-a-8: var(--colors-grass-light-a-8);--colors-grass-a-9: var(--colors-grass-light-a-9);--colors-grass-a-10: var(--colors-grass-light-a-10);--colors-grass-a-11: var(--colors-grass-light-a-11);--colors-grass-a-12: var(--colors-grass-light-a-12);--colors-grass-p3-1: var(--colors-grass-light-p3-1);--colors-grass-p3-2: var(--colors-grass-light-p3-2);--colors-grass-p3-3: var(--colors-grass-light-p3-3);--colors-grass-p3-4: var(--colors-grass-light-p3-4);--colors-grass-p3-5: var(--colors-grass-light-p3-5);--colors-grass-p3-6: var(--colors-grass-light-p3-6);--colors-grass-p3-7: var(--colors-grass-light-p3-7);--colors-grass-p3-8: var(--colors-grass-light-p3-8);--colors-grass-p3-9: var(--colors-grass-light-p3-9);--colors-grass-p3-10: var(--colors-grass-light-p3-10);--colors-grass-p3-11: var(--colors-grass-light-p3-11);--colors-grass-p3-12: var(--colors-grass-light-p3-12);--colors-grass-p3-a-1: var(--colors-grass-light-p3-a-1);--colors-grass-p3-a-2: var(--colors-grass-light-p3-a-2);--colors-grass-p3-a-3: var(--colors-grass-light-p3-a-3);--colors-grass-p3-a-4: var(--colors-grass-light-p3-a-4);--colors-grass-p3-a-5: var(--colors-grass-light-p3-a-5);--colors-grass-p3-a-6: var(--colors-grass-light-p3-a-6);--colors-grass-p3-a-7: var(--colors-grass-light-p3-a-7);--colors-grass-p3-a-8: var(--colors-grass-light-p3-a-8);--colors-grass-p3-a-9: var(--colors-grass-light-p3-a-9);--colors-grass-p3-a-10: var(--colors-grass-light-p3-a-10);--colors-grass-p3-a-11: var(--colors-grass-light-p3-a-11);--colors-grass-p3-a-12: var(--colors-grass-light-p3-a-12);--colors-indigo-1: var(--colors-indigo-light-1);--colors-indigo-2: var(--colors-indigo-light-2);--colors-indigo-3: var(--colors-indigo-light-3);--colors-indigo-4: var(--colors-indigo-light-4);--colors-indigo-5: var(--colors-indigo-light-5);--colors-indigo-6: var(--colors-indigo-light-6);--colors-indigo-7: var(--colors-indigo-light-7);--colors-indigo-8: var(--colors-indigo-light-8);--colors-indigo-9: var(--colors-indigo-light-9);--colors-indigo-10: var(--colors-indigo-light-10);--colors-indigo-11: var(--colors-indigo-light-11);--colors-indigo-12: var(--colors-indigo-light-12);--colors-indigo-light-1: #fdfdfe;--colors-indigo-light-2: #f7f9ff;--colors-indigo-light-3: #edf2fe;--colors-indigo-light-4: #e1e9ff;--colors-indigo-light-5: #d2deff;--colors-indigo-light-6: #c1d0ff;--colors-indigo-light-7: #abbdf9;--colors-indigo-light-8: #8da4ef;--colors-indigo-light-9: #3e63dd;--colors-indigo-light-10: #3358d4;--colors-indigo-light-11: #3a5bc7;--colors-indigo-light-12: #1f2d5c;--colors-indigo-light-a-1: #00008002;--colors-indigo-light-a-2: #0040ff08;--colors-indigo-light-a-3: #0047f112;--colors-indigo-light-a-4: #0044ff1e;--colors-indigo-light-a-5: #0044ff2d;--colors-indigo-light-a-6: #003eff3e;--colors-indigo-light-a-7: #0037ed54;--colors-indigo-light-a-8: #0034dc72;--colors-indigo-light-a-9: #0031d2c1;--colors-indigo-light-a-10: #002ec9cc;--colors-indigo-light-a-11: #002bb7c5;--colors-indigo-light-a-12: #001046e0;--colors-indigo-light-p3-1: color(display-p3 .992 .992 .996);--colors-indigo-light-p3-2: color(display-p3 .971 .977 .998);--colors-indigo-light-p3-3: color(display-p3 .933 .948 .992);--colors-indigo-light-p3-4: color(display-p3 .885 .914 1);--colors-indigo-light-p3-5: color(display-p3 .831 .87 1);--colors-indigo-light-p3-6: color(display-p3 .767 .814 .995);--colors-indigo-light-p3-7: color(display-p3 .685 .74 .957);--colors-indigo-light-p3-8: color(display-p3 .569 .639 .916);--colors-indigo-light-p3-9: color(display-p3 .276 .384 .837);--colors-indigo-light-p3-10: color(display-p3 .234 .343 .801);--colors-indigo-light-p3-11: color(display-p3 .256 .354 .755);--colors-indigo-light-p3-12: color(display-p3 .133 .175 .348);--colors-indigo-light-p3-a-1: color(display-p3 .02 .02 .51 / .008);--colors-indigo-light-p3-a-2: color(display-p3 .024 .161 .863 / .028);--colors-indigo-light-p3-a-3: color(display-p3 .008 .239 .886 / .067);--colors-indigo-light-p3-a-4: color(display-p3 .004 .247 1 / .114);--colors-indigo-light-p3-a-5: color(display-p3 .004 .235 1 / .169);--colors-indigo-light-p3-a-6: color(display-p3 .004 .208 .984 / .232);--colors-indigo-light-p3-a-7: color(display-p3 .004 .176 .863 / .314);--colors-indigo-light-p3-a-8: color(display-p3 .004 .165 .812 / .432);--colors-indigo-light-p3-a-9: color(display-p3 0 .153 .773 / .726);--colors-indigo-light-p3-a-10: color(display-p3 0 .137 .737 / .765);--colors-indigo-light-p3-a-11: color(display-p3 .256 .354 .755);--colors-indigo-light-p3-a-12: color(display-p3 .133 .175 .348);--colors-indigo-dark-1: #11131f;--colors-indigo-dark-2: #141726;--colors-indigo-dark-3: #182449;--colors-indigo-dark-4: #1d2e62;--colors-indigo-dark-5: #253974;--colors-indigo-dark-6: #304384;--colors-indigo-dark-7: #3a4f97;--colors-indigo-dark-8: #435db1;--colors-indigo-dark-9: #3e63dd;--colors-indigo-dark-10: #5472e4;--colors-indigo-dark-11: #9eb1ff;--colors-indigo-dark-12: #d6e1ff;--colors-indigo-dark-a-1: #1133ff0f;--colors-indigo-dark-a-2: #3354fa17;--colors-indigo-dark-a-3: #2f62ff3c;--colors-indigo-dark-a-4: #3566ff57;--colors-indigo-dark-a-5: #4171fd6b;--colors-indigo-dark-a-6: #5178fd7c;--colors-indigo-dark-a-7: #5a7fff90;--colors-indigo-dark-a-8: #5b81feac;--colors-indigo-dark-a-9: #4671ffdb;--colors-indigo-dark-a-10: #5c7efee3;--colors-indigo-dark-a-11: #9eb1ff;--colors-indigo-dark-a-12: #d6e1ff;--colors-indigo-dark-p3-1: color(display-p3 .068 .074 .118);--colors-indigo-dark-p3-2: color(display-p3 .081 .089 .144);--colors-indigo-dark-p3-3: color(display-p3 .105 .141 .275);--colors-indigo-dark-p3-4: color(display-p3 .129 .18 .369);--colors-indigo-dark-p3-5: color(display-p3 .163 .22 .439);--colors-indigo-dark-p3-6: color(display-p3 .203 .262 .5);--colors-indigo-dark-p3-7: color(display-p3 .245 .309 .575);--colors-indigo-dark-p3-8: color(display-p3 .285 .362 .674);--colors-indigo-dark-p3-9: color(display-p3 .276 .384 .837);--colors-indigo-dark-p3-10: color(display-p3 .354 .445 .866);--colors-indigo-dark-p3-11: color(display-p3 .63 .69 1);--colors-indigo-dark-p3-12: color(display-p3 .848 .881 .99);--colors-indigo-dark-p3-a-1: color(display-p3 .071 .212 .996 / .055);--colors-indigo-dark-p3-a-2: color(display-p3 .251 .345 .988 / .085);--colors-indigo-dark-p3-a-3: color(display-p3 .243 .404 1 / .223);--colors-indigo-dark-p3-a-4: color(display-p3 .263 .42 1 / .324);--colors-indigo-dark-p3-a-5: color(display-p3 .314 .451 1 / .4);--colors-indigo-dark-p3-a-6: color(display-p3 .361 .49 1 / .467);--colors-indigo-dark-p3-a-7: color(display-p3 .388 .51 1 / .547);--colors-indigo-dark-p3-a-8: color(display-p3 .404 .518 1 / .652);--colors-indigo-dark-p3-a-9: color(display-p3 .318 .451 1 / .824);--colors-indigo-dark-p3-a-10: color(display-p3 .404 .506 1 / .858);--colors-indigo-dark-p3-a-11: color(display-p3 .63 .69 1);--colors-indigo-dark-p3-a-12: color(display-p3 .848 .881 .99);--colors-indigo-a-1: var(--colors-indigo-light-a-1);--colors-indigo-a-2: var(--colors-indigo-light-a-2);--colors-indigo-a-3: var(--colors-indigo-light-a-3);--colors-indigo-a-4: var(--colors-indigo-light-a-4);--colors-indigo-a-5: var(--colors-indigo-light-a-5);--colors-indigo-a-6: var(--colors-indigo-light-a-6);--colors-indigo-a-7: var(--colors-indigo-light-a-7);--colors-indigo-a-8: var(--colors-indigo-light-a-8);--colors-indigo-a-9: var(--colors-indigo-light-a-9);--colors-indigo-a-10: var(--colors-indigo-light-a-10);--colors-indigo-a-11: var(--colors-indigo-light-a-11);--colors-indigo-a-12: var(--colors-indigo-light-a-12);--colors-indigo-p3-1: var(--colors-indigo-light-p3-1);--colors-indigo-p3-2: var(--colors-indigo-light-p3-2);--colors-indigo-p3-3: var(--colors-indigo-light-p3-3);--colors-indigo-p3-4: var(--colors-indigo-light-p3-4);--colors-indigo-p3-5: var(--colors-indigo-light-p3-5);--colors-indigo-p3-6: var(--colors-indigo-light-p3-6);--colors-indigo-p3-7: var(--colors-indigo-light-p3-7);--colors-indigo-p3-8: var(--colors-indigo-light-p3-8);--colors-indigo-p3-9: var(--colors-indigo-light-p3-9);--colors-indigo-p3-10: var(--colors-indigo-light-p3-10);--colors-indigo-p3-11: var(--colors-indigo-light-p3-11);--colors-indigo-p3-12: var(--colors-indigo-light-p3-12);--colors-indigo-p3-a-1: var(--colors-indigo-light-p3-a-1);--colors-indigo-p3-a-2: var(--colors-indigo-light-p3-a-2);--colors-indigo-p3-a-3: var(--colors-indigo-light-p3-a-3);--colors-indigo-p3-a-4: var(--colors-indigo-light-p3-a-4);--colors-indigo-p3-a-5: var(--colors-indigo-light-p3-a-5);--colors-indigo-p3-a-6: var(--colors-indigo-light-p3-a-6);--colors-indigo-p3-a-7: var(--colors-indigo-light-p3-a-7);--colors-indigo-p3-a-8: var(--colors-indigo-light-p3-a-8);--colors-indigo-p3-a-9: var(--colors-indigo-light-p3-a-9);--colors-indigo-p3-a-10: var(--colors-indigo-light-p3-a-10);--colors-indigo-p3-a-11: var(--colors-indigo-light-p3-a-11);--colors-indigo-p3-a-12: var(--colors-indigo-light-p3-a-12);--colors-lime-1: var(--colors-lime-light-1);--colors-lime-2: var(--colors-lime-light-2);--colors-lime-3: var(--colors-lime-light-3);--colors-lime-4: var(--colors-lime-light-4);--colors-lime-5: var(--colors-lime-light-5);--colors-lime-6: var(--colors-lime-light-6);--colors-lime-7: var(--colors-lime-light-7);--colors-lime-8: var(--colors-lime-light-8);--colors-lime-9: var(--colors-lime-light-9);--colors-lime-10: var(--colors-lime-light-10);--colors-lime-11: var(--colors-lime-light-11);--colors-lime-12: var(--colors-lime-light-12);--colors-lime-light-1: #fcfdfa;--colors-lime-light-2: #f8faf3;--colors-lime-light-3: #eef6d6;--colors-lime-light-4: #e2f0bd;--colors-lime-light-5: #d3e7a6;--colors-lime-light-6: #c2da91;--colors-lime-light-7: #abc978;--colors-lime-light-8: #8db654;--colors-lime-light-9: #bdee63;--colors-lime-light-10: #b0e64c;--colors-lime-light-11: #5c7c2f;--colors-lime-light-12: #37401c;--colors-lime-light-a-1: #66990005;--colors-lime-light-a-2: #6b95000c;--colors-lime-light-a-3: #96c80029;--colors-lime-light-a-4: #8fc60042;--colors-lime-light-a-5: #81bb0059;--colors-lime-light-a-6: #72aa006e;--colors-lime-light-a-7: #61990087;--colors-lime-light-a-8: #559200ab;--colors-lime-light-a-9: #93e4009c;--colors-lime-light-a-10: #8fdc00b3;--colors-lime-light-a-11: #375f00d0;--colors-lime-light-a-12: #1e2900e3;--colors-lime-light-p3-1: color(display-p3 .989 .992 .981);--colors-lime-light-p3-2: color(display-p3 .975 .98 .954);--colors-lime-light-p3-3: color(display-p3 .939 .965 .851);--colors-lime-light-p3-4: color(display-p3 .896 .94 .76);--colors-lime-light-p3-5: color(display-p3 .843 .903 .678);--colors-lime-light-p3-6: color(display-p3 .778 .852 .599);--colors-lime-light-p3-7: color(display-p3 .694 .784 .508);--colors-lime-light-p3-8: color(display-p3 .585 .707 .378);--colors-lime-light-p3-9: color(display-p3 .78 .928 .466);--colors-lime-light-p3-10: color(display-p3 .734 .896 .397);--colors-lime-light-p3-11: color(display-p3 .386 .482 .227);--colors-lime-light-p3-12: color(display-p3 .222 .25 .128);--colors-lime-light-p3-a-1: color(display-p3 .412 .608 .02 / .02);--colors-lime-light-p3-a-2: color(display-p3 .514 .592 .024 / .048);--colors-lime-light-p3-a-3: color(display-p3 .584 .765 .008 / .15);--colors-lime-light-p3-a-4: color(display-p3 .561 .757 .004 / .24);--colors-lime-light-p3-a-5: color(display-p3 .514 .698 .004 / .322);--colors-lime-light-p3-a-6: color(display-p3 .443 .627 0 / .4);--colors-lime-light-p3-a-7: color(display-p3 .376 .561 .004 / .491);--colors-lime-light-p3-a-8: color(display-p3 .333 .529 0 / .624);--colors-lime-light-p3-a-9: color(display-p3 .588 .867 0 / .534);--colors-lime-light-p3-a-10: color(display-p3 .561 .827 0 / .604);--colors-lime-light-p3-a-11: color(display-p3 .386 .482 .227);--colors-lime-light-p3-a-12: color(display-p3 .222 .25 .128);--colors-lime-dark-1: #11130c;--colors-lime-dark-2: #151a10;--colors-lime-dark-3: #1f2917;--colors-lime-dark-4: #29371d;--colors-lime-dark-5: #334423;--colors-lime-dark-6: #3d522a;--colors-lime-dark-7: #496231;--colors-lime-dark-8: #577538;--colors-lime-dark-9: #bdee63;--colors-lime-dark-10: #d4ff70;--colors-lime-dark-11: #bde56c;--colors-lime-dark-12: #e3f7ba;--colors-lime-dark-a-1: #11bb0003;--colors-lime-dark-a-2: #78f7000a;--colors-lime-dark-a-3: #9bfd4c1a;--colors-lime-dark-a-4: #a7fe5c29;--colors-lime-dark-a-5: #affe6537;--colors-lime-dark-a-6: #b2fe6d46;--colors-lime-dark-a-7: #b6ff6f57;--colors-lime-dark-a-8: #b6fd6d6c;--colors-lime-dark-a-9: #caff69ed;--colors-lime-dark-a-10: #d4ff70;--colors-lime-dark-a-11: #d1fe77e4;--colors-lime-dark-a-12: #e9febff7;--colors-lime-dark-p3-1: color(display-p3 .067 .073 .048);--colors-lime-dark-p3-2: color(display-p3 .086 .1 .067);--colors-lime-dark-p3-3: color(display-p3 .13 .16 .099);--colors-lime-dark-p3-4: color(display-p3 .172 .214 .126);--colors-lime-dark-p3-5: color(display-p3 .213 .266 .153);--colors-lime-dark-p3-6: color(display-p3 .257 .321 .182);--colors-lime-dark-p3-7: color(display-p3 .307 .383 .215);--colors-lime-dark-p3-8: color(display-p3 .365 .456 .25);--colors-lime-dark-p3-9: color(display-p3 .78 .928 .466);--colors-lime-dark-p3-10: color(display-p3 .865 .995 .519);--colors-lime-dark-p3-11: color(display-p3 .771 .893 .485);--colors-lime-dark-p3-12: color(display-p3 .905 .966 .753);--colors-lime-dark-p3-a-1: color(display-p3 .067 .941 0 / .009);--colors-lime-dark-p3-a-2: color(display-p3 .584 .996 .071 / .038);--colors-lime-dark-p3-a-3: color(display-p3 .69 1 .38 / .101);--colors-lime-dark-p3-a-4: color(display-p3 .729 1 .435 / .16);--colors-lime-dark-p3-a-5: color(display-p3 .745 1 .471 / .215);--colors-lime-dark-p3-a-6: color(display-p3 .769 1 .482 / .274);--colors-lime-dark-p3-a-7: color(display-p3 .769 1 .506 / .341);--colors-lime-dark-p3-a-8: color(display-p3 .784 1 .51 / .416);--colors-lime-dark-p3-a-9: color(display-p3 .839 1 .502 / .925);--colors-lime-dark-p3-a-10: color(display-p3 .871 1 .522 / .996);--colors-lime-dark-p3-a-11: color(display-p3 .771 .893 .485);--colors-lime-dark-p3-a-12: color(display-p3 .905 .966 .753);--colors-lime-a-1: var(--colors-lime-light-a-1);--colors-lime-a-2: var(--colors-lime-light-a-2);--colors-lime-a-3: var(--colors-lime-light-a-3);--colors-lime-a-4: var(--colors-lime-light-a-4);--colors-lime-a-5: var(--colors-lime-light-a-5);--colors-lime-a-6: var(--colors-lime-light-a-6);--colors-lime-a-7: var(--colors-lime-light-a-7);--colors-lime-a-8: var(--colors-lime-light-a-8);--colors-lime-a-9: var(--colors-lime-light-a-9);--colors-lime-a-10: var(--colors-lime-light-a-10);--colors-lime-a-11: var(--colors-lime-light-a-11);--colors-lime-a-12: var(--colors-lime-light-a-12);--colors-lime-p3-1: var(--colors-lime-light-p3-1);--colors-lime-p3-2: var(--colors-lime-light-p3-2);--colors-lime-p3-3: var(--colors-lime-light-p3-3);--colors-lime-p3-4: var(--colors-lime-light-p3-4);--colors-lime-p3-5: var(--colors-lime-light-p3-5);--colors-lime-p3-6: var(--colors-lime-light-p3-6);--colors-lime-p3-7: var(--colors-lime-light-p3-7);--colors-lime-p3-8: var(--colors-lime-light-p3-8);--colors-lime-p3-9: var(--colors-lime-light-p3-9);--colors-lime-p3-10: var(--colors-lime-light-p3-10);--colors-lime-p3-11: var(--colors-lime-light-p3-11);--colors-lime-p3-12: var(--colors-lime-light-p3-12);--colors-lime-p3-a-1: var(--colors-lime-light-p3-a-1);--colors-lime-p3-a-2: var(--colors-lime-light-p3-a-2);--colors-lime-p3-a-3: var(--colors-lime-light-p3-a-3);--colors-lime-p3-a-4: var(--colors-lime-light-p3-a-4);--colors-lime-p3-a-5: var(--colors-lime-light-p3-a-5);--colors-lime-p3-a-6: var(--colors-lime-light-p3-a-6);--colors-lime-p3-a-7: var(--colors-lime-light-p3-a-7);--colors-lime-p3-a-8: var(--colors-lime-light-p3-a-8);--colors-lime-p3-a-9: var(--colors-lime-light-p3-a-9);--colors-lime-p3-a-10: var(--colors-lime-light-p3-a-10);--colors-lime-p3-a-11: var(--colors-lime-light-p3-a-11);--colors-lime-p3-a-12: var(--colors-lime-light-p3-a-12);--colors-orange-1: var(--colors-orange-light-1);--colors-orange-2: var(--colors-orange-light-2);--colors-orange-3: var(--colors-orange-light-3);--colors-orange-4: var(--colors-orange-light-4);--colors-orange-5: var(--colors-orange-light-5);--colors-orange-6: var(--colors-orange-light-6);--colors-orange-7: var(--colors-orange-light-7);--colors-orange-8: var(--colors-orange-light-8);--colors-orange-9: var(--colors-orange-light-9);--colors-orange-10: var(--colors-orange-light-10);--colors-orange-11: var(--colors-orange-light-11);--colors-orange-12: var(--colors-orange-light-12);--colors-orange-light-1: #fefcfb;--colors-orange-light-2: #fff7ed;--colors-orange-light-3: #ffefd6;--colors-orange-light-4: #ffdfb5;--colors-orange-light-5: #ffd19a;--colors-orange-light-6: #ffc182;--colors-orange-light-7: #f5ae73;--colors-orange-light-8: #ec9455;--colors-orange-light-9: #f76b15;--colors-orange-light-10: #ef5f00;--colors-orange-light-11: #cc4e00;--colors-orange-light-12: #582d1d;--colors-orange-light-a-1: #c0400004;--colors-orange-light-a-2: #ff8e0012;--colors-orange-light-a-3: #ff9c0029;--colors-orange-light-a-4: #ff91014a;--colors-orange-light-a-5: #ff8b0065;--colors-orange-light-a-6: #ff81007d;--colors-orange-light-a-7: #ed6c008c;--colors-orange-light-a-8: #e35f00aa;--colors-orange-light-a-9: #f65e00ea;--colors-orange-light-a-10: #ef5f00;--colors-orange-light-a-11: #cc4e00;--colors-orange-light-a-12: #431200e2;--colors-orange-light-p3-1: color(display-p3 .995 .988 .985);--colors-orange-light-p3-2: color(display-p3 .994 .968 .934);--colors-orange-light-p3-3: color(display-p3 .989 .938 .85);--colors-orange-light-p3-4: color(display-p3 1 .874 .687);--colors-orange-light-p3-5: color(display-p3 1 .821 .583);--colors-orange-light-p3-6: color(display-p3 .975 .767 .545);--colors-orange-light-p3-7: color(display-p3 .919 .693 .486);--colors-orange-light-p3-8: color(display-p3 .877 .597 .379);--colors-orange-light-p3-9: color(display-p3 .9 .45 .2);--colors-orange-light-p3-10: color(display-p3 .87 .409 .164);--colors-orange-light-p3-11: color(display-p3 .76 .34 0);--colors-orange-light-p3-12: color(display-p3 .323 .185 .127);--colors-orange-light-p3-a-1: color(display-p3 .757 .267 .024 / .016);--colors-orange-light-p3-a-2: color(display-p3 .886 .533 .008 / .067);--colors-orange-light-p3-a-3: color(display-p3 .922 .584 .008 / .15);--colors-orange-light-p3-a-4: color(display-p3 1 .604 .004 / .314);--colors-orange-light-p3-a-5: color(display-p3 1 .569 .004 / .416);--colors-orange-light-p3-a-6: color(display-p3 .949 .494 .004 / .455);--colors-orange-light-p3-a-7: color(display-p3 .839 .408 0 / .514);--colors-orange-light-p3-a-8: color(display-p3 .804 .349 0 / .62);--colors-orange-light-p3-a-9: color(display-p3 .878 .314 0 / .8);--colors-orange-light-p3-a-10: color(display-p3 .843 .29 0 / .836);--colors-orange-light-p3-a-11: color(display-p3 .76 .34 0);--colors-orange-light-p3-a-12: color(display-p3 .323 .185 .127);--colors-orange-dark-1: #17120e;--colors-orange-dark-2: #1e160f;--colors-orange-dark-3: #331e0b;--colors-orange-dark-4: #462100;--colors-orange-dark-5: #562800;--colors-orange-dark-6: #66350c;--colors-orange-dark-7: #7e451d;--colors-orange-dark-8: #a35829;--colors-orange-dark-9: #f76b15;--colors-orange-dark-10: #ff801f;--colors-orange-dark-11: #ffa057;--colors-orange-dark-12: #ffe0c2;--colors-orange-dark-a-1: #ec360007;--colors-orange-dark-a-2: #fe6d000e;--colors-orange-dark-a-3: #fb6a0025;--colors-orange-dark-a-4: #ff590039;--colors-orange-dark-a-5: #ff61004a;--colors-orange-dark-a-6: #fd75045c;--colors-orange-dark-a-7: #ff832c75;--colors-orange-dark-a-8: #fe84389d;--colors-orange-dark-a-9: #fe6d15f7;--colors-orange-dark-a-10: #ff801f;--colors-orange-dark-a-11: #ffa057;--colors-orange-dark-a-12: #ffe0c2;--colors-orange-dark-p3-1: color(display-p3 .088 .07 .057);--colors-orange-dark-p3-2: color(display-p3 .113 .089 .061);--colors-orange-dark-p3-3: color(display-p3 .189 .12 .056);--colors-orange-dark-p3-4: color(display-p3 .262 .132 0);--colors-orange-dark-p3-5: color(display-p3 .315 .168 .016);--colors-orange-dark-p3-6: color(display-p3 .376 .219 .088);--colors-orange-dark-p3-7: color(display-p3 .465 .283 .147);--colors-orange-dark-p3-8: color(display-p3 .601 .359 .201);--colors-orange-dark-p3-9: color(display-p3 .9 .45 .2);--colors-orange-dark-p3-10: color(display-p3 .98 .51 .23);--colors-orange-dark-p3-11: color(display-p3 1 .63 .38);--colors-orange-dark-p3-12: color(display-p3 .98 .883 .775);--colors-orange-dark-p3-a-1: color(display-p3 .961 .247 0 / .022);--colors-orange-dark-p3-a-2: color(display-p3 .992 .529 0 / .051);--colors-orange-dark-p3-a-3: color(display-p3 .996 .486 0 / .131);--colors-orange-dark-p3-a-4: color(display-p3 .996 .384 0 / .211);--colors-orange-dark-p3-a-5: color(display-p3 1 .455 0 / .265);--colors-orange-dark-p3-a-6: color(display-p3 1 .529 .129 / .332);--colors-orange-dark-p3-a-7: color(display-p3 1 .569 .251 / .429);--colors-orange-dark-p3-a-8: color(display-p3 1 .584 .302 / .572);--colors-orange-dark-p3-a-9: color(display-p3 1 .494 .216 / .895);--colors-orange-dark-p3-a-10: color(display-p3 1 .522 .235 / .979);--colors-orange-dark-p3-a-11: color(display-p3 1 .63 .38);--colors-orange-dark-p3-a-12: color(display-p3 .98 .883 .775);--colors-orange-a-1: var(--colors-orange-light-a-1);--colors-orange-a-2: var(--colors-orange-light-a-2);--colors-orange-a-3: var(--colors-orange-light-a-3);--colors-orange-a-4: var(--colors-orange-light-a-4);--colors-orange-a-5: var(--colors-orange-light-a-5);--colors-orange-a-6: var(--colors-orange-light-a-6);--colors-orange-a-7: var(--colors-orange-light-a-7);--colors-orange-a-8: var(--colors-orange-light-a-8);--colors-orange-a-9: var(--colors-orange-light-a-9);--colors-orange-a-10: var(--colors-orange-light-a-10);--colors-orange-a-11: var(--colors-orange-light-a-11);--colors-orange-a-12: var(--colors-orange-light-a-12);--colors-orange-p3-1: var(--colors-orange-light-p3-1);--colors-orange-p3-2: var(--colors-orange-light-p3-2);--colors-orange-p3-3: var(--colors-orange-light-p3-3);--colors-orange-p3-4: var(--colors-orange-light-p3-4);--colors-orange-p3-5: var(--colors-orange-light-p3-5);--colors-orange-p3-6: var(--colors-orange-light-p3-6);--colors-orange-p3-7: var(--colors-orange-light-p3-7);--colors-orange-p3-8: var(--colors-orange-light-p3-8);--colors-orange-p3-9: var(--colors-orange-light-p3-9);--colors-orange-p3-10: var(--colors-orange-light-p3-10);--colors-orange-p3-11: var(--colors-orange-light-p3-11);--colors-orange-p3-12: var(--colors-orange-light-p3-12);--colors-orange-p3-a-1: var(--colors-orange-light-p3-a-1);--colors-orange-p3-a-2: var(--colors-orange-light-p3-a-2);--colors-orange-p3-a-3: var(--colors-orange-light-p3-a-3);--colors-orange-p3-a-4: var(--colors-orange-light-p3-a-4);--colors-orange-p3-a-5: var(--colors-orange-light-p3-a-5);--colors-orange-p3-a-6: var(--colors-orange-light-p3-a-6);--colors-orange-p3-a-7: var(--colors-orange-light-p3-a-7);--colors-orange-p3-a-8: var(--colors-orange-light-p3-a-8);--colors-orange-p3-a-9: var(--colors-orange-light-p3-a-9);--colors-orange-p3-a-10: var(--colors-orange-light-p3-a-10);--colors-orange-p3-a-11: var(--colors-orange-light-p3-a-11);--colors-orange-p3-a-12: var(--colors-orange-light-p3-a-12);--colors-pink-1: var(--colors-pink-light-1);--colors-pink-2: var(--colors-pink-light-2);--colors-pink-3: var(--colors-pink-light-3);--colors-pink-4: var(--colors-pink-light-4);--colors-pink-5: var(--colors-pink-light-5);--colors-pink-6: var(--colors-pink-light-6);--colors-pink-7: var(--colors-pink-light-7);--colors-pink-8: var(--colors-pink-light-8);--colors-pink-9: var(--colors-pink-light-9);--colors-pink-10: var(--colors-pink-light-10);--colors-pink-11: var(--colors-pink-light-11);--colors-pink-12: var(--colors-pink-light-12);--colors-pink-light-1: #fffcfe;--colors-pink-light-2: #fef7fb;--colors-pink-light-3: #fee9f5;--colors-pink-light-4: #fbdcef;--colors-pink-light-5: #f6cee7;--colors-pink-light-6: #efbfdd;--colors-pink-light-7: #e7acd0;--colors-pink-light-8: #dd93c2;--colors-pink-light-9: #d6409f;--colors-pink-light-10: #cf3897;--colors-pink-light-11: #c2298a;--colors-pink-light-12: #651249;--colors-pink-light-a-1: #ff00aa03;--colors-pink-light-a-2: #e0008008;--colors-pink-light-a-3: #f4008c16;--colors-pink-light-a-4: #e2008b23;--colors-pink-light-a-5: #d1008331;--colors-pink-light-a-6: #c0007840;--colors-pink-light-a-7: #b6006f53;--colors-pink-light-a-8: #af006f6c;--colors-pink-light-a-9: #c8007fbf;--colors-pink-light-a-10: #c2007ac7;--colors-pink-light-a-11: #b60074d6;--colors-pink-light-a-12: #59003bed;--colors-pink-light-p3-1: color(display-p3 .998 .989 .996);--colors-pink-light-p3-2: color(display-p3 .992 .97 .985);--colors-pink-light-p3-3: color(display-p3 .981 .917 .96);--colors-pink-light-p3-4: color(display-p3 .963 .867 .932);--colors-pink-light-p3-5: color(display-p3 .939 .815 .899);--colors-pink-light-p3-6: color(display-p3 .907 .756 .859);--colors-pink-light-p3-7: color(display-p3 .869 .683 .81);--colors-pink-light-p3-8: color(display-p3 .825 .59 .751);--colors-pink-light-p3-9: color(display-p3 .775 .297 .61);--colors-pink-light-p3-10: color(display-p3 .748 .27 .581);--colors-pink-light-p3-11: color(display-p3 .698 .219 .528);--colors-pink-light-p3-12: color(display-p3 .363 .101 .279);--colors-pink-light-p3-a-1: color(display-p3 .675 .024 .675 / .012);--colors-pink-light-p3-a-2: color(display-p3 .757 .02 .51 / .032);--colors-pink-light-p3-a-3: color(display-p3 .765 .008 .529 / .083);--colors-pink-light-p3-a-4: color(display-p3 .737 .008 .506 / .134);--colors-pink-light-p3-a-5: color(display-p3 .663 .004 .451 / .185);--colors-pink-light-p3-a-6: color(display-p3 .616 .004 .424 / .244);--colors-pink-light-p3-a-7: color(display-p3 .596 .004 .412 / .318);--colors-pink-light-p3-a-8: color(display-p3 .573 .004 .404 / .412);--colors-pink-light-p3-a-9: color(display-p3 .682 0 .447 / .702);--colors-pink-light-p3-a-10: color(display-p3 .655 0 .424 / .73);--colors-pink-light-p3-a-11: color(display-p3 .698 .219 .528);--colors-pink-light-p3-a-12: color(display-p3 .363 .101 .279);--colors-pink-dark-1: #191117;--colors-pink-dark-2: #21121d;--colors-pink-dark-3: #37172f;--colors-pink-dark-4: #4b143d;--colors-pink-dark-5: #591c47;--colors-pink-dark-6: #692955;--colors-pink-dark-7: #833869;--colors-pink-dark-8: #a84885;--colors-pink-dark-9: #d6409f;--colors-pink-dark-10: #de51a8;--colors-pink-dark-11: #ff8dcc;--colors-pink-dark-12: #fdd1ea;--colors-pink-dark-a-1: #f412bc09;--colors-pink-dark-a-2: #f420bb12;--colors-pink-dark-a-3: #fe37cc29;--colors-pink-dark-a-4: #fc1ec43f;--colors-pink-dark-a-5: #fd35c24e;--colors-pink-dark-a-6: #fd51c75f;--colors-pink-dark-a-7: #fd62c87b;--colors-pink-dark-a-8: #ff68c8a2;--colors-pink-dark-a-9: #fe49bcd4;--colors-pink-dark-a-10: #ff5cc0dc;--colors-pink-dark-a-11: #ff8dcc;--colors-pink-dark-a-12: #ffd3ecfd;--colors-pink-dark-p3-1: color(display-p3 .093 .068 .089);--colors-pink-dark-p3-2: color(display-p3 .121 .073 .11);--colors-pink-dark-p3-3: color(display-p3 .198 .098 .179);--colors-pink-dark-p3-4: color(display-p3 .271 .095 .231);--colors-pink-dark-p3-5: color(display-p3 .32 .127 .273);--colors-pink-dark-p3-6: color(display-p3 .382 .177 .326);--colors-pink-dark-p3-7: color(display-p3 .477 .238 .405);--colors-pink-dark-p3-8: color(display-p3 .612 .304 .51);--colors-pink-dark-p3-9: color(display-p3 .775 .297 .61);--colors-pink-dark-p3-10: color(display-p3 .808 .356 .645);--colors-pink-dark-p3-11: color(display-p3 1 .535 .78);--colors-pink-dark-p3-12: color(display-p3 .964 .826 .912);--colors-pink-dark-p3-a-1: color(display-p3 .984 .071 .855 / .03);--colors-pink-dark-p3-a-2: color(display-p3 1 .2 .8 / .059);--colors-pink-dark-p3-a-3: color(display-p3 1 .294 .886 / .139);--colors-pink-dark-p3-a-4: color(display-p3 1 .192 .82 / .219);--colors-pink-dark-p3-a-5: color(display-p3 1 .282 .827 / .274);--colors-pink-dark-p3-a-6: color(display-p3 1 .396 .835 / .337);--colors-pink-dark-p3-a-7: color(display-p3 1 .459 .831 / .442);--colors-pink-dark-p3-a-8: color(display-p3 1 .478 .827 / .585);--colors-pink-dark-p3-a-9: color(display-p3 1 .373 .784 / .761);--colors-pink-dark-p3-a-10: color(display-p3 1 .435 .792 / .795);--colors-pink-dark-p3-a-11: color(display-p3 1 .535 .78);--colors-pink-dark-p3-a-12: color(display-p3 .964 .826 .912);--colors-pink-a-1: var(--colors-pink-light-a-1);--colors-pink-a-2: var(--colors-pink-light-a-2);--colors-pink-a-3: var(--colors-pink-light-a-3);--colors-pink-a-4: var(--colors-pink-light-a-4);--colors-pink-a-5: var(--colors-pink-light-a-5);--colors-pink-a-6: var(--colors-pink-light-a-6);--colors-pink-a-7: var(--colors-pink-light-a-7);--colors-pink-a-8: var(--colors-pink-light-a-8);--colors-pink-a-9: var(--colors-pink-light-a-9);--colors-pink-a-10: var(--colors-pink-light-a-10);--colors-pink-a-11: var(--colors-pink-light-a-11);--colors-pink-a-12: var(--colors-pink-light-a-12);--colors-pink-p3-1: var(--colors-pink-light-p3-1);--colors-pink-p3-2: var(--colors-pink-light-p3-2);--colors-pink-p3-3: var(--colors-pink-light-p3-3);--colors-pink-p3-4: var(--colors-pink-light-p3-4);--colors-pink-p3-5: var(--colors-pink-light-p3-5);--colors-pink-p3-6: var(--colors-pink-light-p3-6);--colors-pink-p3-7: var(--colors-pink-light-p3-7);--colors-pink-p3-8: var(--colors-pink-light-p3-8);--colors-pink-p3-9: var(--colors-pink-light-p3-9);--colors-pink-p3-10: var(--colors-pink-light-p3-10);--colors-pink-p3-11: var(--colors-pink-light-p3-11);--colors-pink-p3-12: var(--colors-pink-light-p3-12);--colors-pink-p3-a-1: var(--colors-pink-light-p3-a-1);--colors-pink-p3-a-2: var(--colors-pink-light-p3-a-2);--colors-pink-p3-a-3: var(--colors-pink-light-p3-a-3);--colors-pink-p3-a-4: var(--colors-pink-light-p3-a-4);--colors-pink-p3-a-5: var(--colors-pink-light-p3-a-5);--colors-pink-p3-a-6: var(--colors-pink-light-p3-a-6);--colors-pink-p3-a-7: var(--colors-pink-light-p3-a-7);--colors-pink-p3-a-8: var(--colors-pink-light-p3-a-8);--colors-pink-p3-a-9: var(--colors-pink-light-p3-a-9);--colors-pink-p3-a-10: var(--colors-pink-light-p3-a-10);--colors-pink-p3-a-11: var(--colors-pink-light-p3-a-11);--colors-pink-p3-a-12: var(--colors-pink-light-p3-a-12);--colors-purple-1: var(--colors-purple-light-1);--colors-purple-2: var(--colors-purple-light-2);--colors-purple-3: var(--colors-purple-light-3);--colors-purple-4: var(--colors-purple-light-4);--colors-purple-5: var(--colors-purple-light-5);--colors-purple-6: var(--colors-purple-light-6);--colors-purple-7: var(--colors-purple-light-7);--colors-purple-8: var(--colors-purple-light-8);--colors-purple-9: var(--colors-purple-light-9);--colors-purple-10: var(--colors-purple-light-10);--colors-purple-11: var(--colors-purple-light-11);--colors-purple-12: var(--colors-purple-light-12);--colors-purple-light-1: #fefcfe;--colors-purple-light-2: #fbf7fe;--colors-purple-light-3: #f7edfe;--colors-purple-light-4: #f2e2fc;--colors-purple-light-5: #ead5f9;--colors-purple-light-6: #e0c4f4;--colors-purple-light-7: #d1afec;--colors-purple-light-8: #be93e4;--colors-purple-light-9: #8e4ec6;--colors-purple-light-10: #8347b9;--colors-purple-light-11: #8145b5;--colors-purple-light-12: #402060;--colors-purple-light-a-1: #aa00aa03;--colors-purple-light-a-2: #8000e008;--colors-purple-light-a-3: #8e00f112;--colors-purple-light-a-4: #8d00e51d;--colors-purple-light-a-5: #8000db2a;--colors-purple-light-a-6: #7a01d03b;--colors-purple-light-a-7: #6d00c350;--colors-purple-light-a-8: #6600c06c;--colors-purple-light-a-9: #5c00adb1;--colors-purple-light-a-10: #53009eb8;--colors-purple-light-a-11: #52009aba;--colors-purple-light-a-12: #250049df;--colors-purple-light-p3-1: color(display-p3 .995 .988 .996);--colors-purple-light-p3-2: color(display-p3 .983 .971 .993);--colors-purple-light-p3-3: color(display-p3 .963 .931 .989);--colors-purple-light-p3-4: color(display-p3 .937 .888 .981);--colors-purple-light-p3-5: color(display-p3 .904 .837 .966);--colors-purple-light-p3-6: color(display-p3 .86 .774 .942);--colors-purple-light-p3-7: color(display-p3 .799 .69 .91);--colors-purple-light-p3-8: color(display-p3 .719 .583 .874);--colors-purple-light-p3-9: color(display-p3 .523 .318 .751);--colors-purple-light-p3-10: color(display-p3 .483 .289 .7);--colors-purple-light-p3-11: color(display-p3 .473 .281 .687);--colors-purple-light-p3-12: color(display-p3 .234 .132 .363);--colors-purple-light-p3-a-1: color(display-p3 .675 .024 .675 / .012);--colors-purple-light-p3-a-2: color(display-p3 .443 .024 .722 / .028);--colors-purple-light-p3-a-3: color(display-p3 .506 .008 .835 / .071);--colors-purple-light-p3-a-4: color(display-p3 .451 .004 .831 / .114);--colors-purple-light-p3-a-5: color(display-p3 .431 .004 .788 / .165);--colors-purple-light-p3-a-6: color(display-p3 .384 .004 .745 / .228);--colors-purple-light-p3-a-7: color(display-p3 .357 .004 .71 / .31);--colors-purple-light-p3-a-8: color(display-p3 .322 .004 .702 / .416);--colors-purple-light-p3-a-9: color(display-p3 .298 0 .639 / .683);--colors-purple-light-p3-a-10: color(display-p3 .271 0 .58 / .71);--colors-purple-light-p3-a-11: color(display-p3 .473 .281 .687);--colors-purple-light-p3-a-12: color(display-p3 .234 .132 .363);--colors-purple-dark-1: #18111b;--colors-purple-dark-2: #1e1523;--colors-purple-dark-3: #301c3b;--colors-purple-dark-4: #3d224e;--colors-purple-dark-5: #48295c;--colors-purple-dark-6: #54346b;--colors-purple-dark-7: #664282;--colors-purple-dark-8: #8457aa;--colors-purple-dark-9: #8e4ec6;--colors-purple-dark-10: #9a5cd0;--colors-purple-dark-11: #d19dff;--colors-purple-dark-12: #ecd9fa;--colors-purple-dark-a-1: #b412f90b;--colors-purple-dark-a-2: #b744f714;--colors-purple-dark-a-3: #c150ff2d;--colors-purple-dark-a-4: #bb53fd42;--colors-purple-dark-a-5: #be5cfd51;--colors-purple-dark-a-6: #c16dfd61;--colors-purple-dark-a-7: #c378fd7a;--colors-purple-dark-a-8: #c47effa4;--colors-purple-dark-a-9: #b661ffc2;--colors-purple-dark-a-10: #bc6fffcd;--colors-purple-dark-a-11: #d19dff;--colors-purple-dark-a-12: #f1ddfffa;--colors-purple-dark-p3-1: color(display-p3 .09 .068 .103);--colors-purple-dark-p3-2: color(display-p3 .113 .082 .134);--colors-purple-dark-p3-3: color(display-p3 .175 .112 .224);--colors-purple-dark-p3-4: color(display-p3 .224 .137 .297);--colors-purple-dark-p3-5: color(display-p3 .264 .167 .349);--colors-purple-dark-p3-6: color(display-p3 .311 .208 .406);--colors-purple-dark-p3-7: color(display-p3 .381 .266 .496);--colors-purple-dark-p3-8: color(display-p3 .49 .349 .649);--colors-purple-dark-p3-9: color(display-p3 .523 .318 .751);--colors-purple-dark-p3-10: color(display-p3 .57 .373 .791);--colors-purple-dark-p3-11: color(display-p3 .8 .62 1);--colors-purple-dark-p3-12: color(display-p3 .913 .854 .971);--colors-purple-dark-p3-a-1: color(display-p3 .686 .071 .996 / .038);--colors-purple-dark-p3-a-2: color(display-p3 .722 .286 .996 / .072);--colors-purple-dark-p3-a-3: color(display-p3 .718 .349 .996 / .169);--colors-purple-dark-p3-a-4: color(display-p3 .702 .353 1 / .248);--colors-purple-dark-p3-a-5: color(display-p3 .718 .404 1 / .303);--colors-purple-dark-p3-a-6: color(display-p3 .733 .455 1 / .366);--colors-purple-dark-p3-a-7: color(display-p3 .753 .506 1 / .458);--colors-purple-dark-p3-a-8: color(display-p3 .749 .522 1 / .622);--colors-purple-dark-p3-a-9: color(display-p3 .686 .408 1 / .736);--colors-purple-dark-p3-a-10: color(display-p3 .71 .459 1 / .778);--colors-purple-dark-p3-a-11: color(display-p3 .8 .62 1);--colors-purple-dark-p3-a-12: color(display-p3 .913 .854 .971);--colors-purple-a-1: var(--colors-purple-light-a-1);--colors-purple-a-2: var(--colors-purple-light-a-2);--colors-purple-a-3: var(--colors-purple-light-a-3);--colors-purple-a-4: var(--colors-purple-light-a-4);--colors-purple-a-5: var(--colors-purple-light-a-5);--colors-purple-a-6: var(--colors-purple-light-a-6);--colors-purple-a-7: var(--colors-purple-light-a-7);--colors-purple-a-8: var(--colors-purple-light-a-8);--colors-purple-a-9: var(--colors-purple-light-a-9);--colors-purple-a-10: var(--colors-purple-light-a-10);--colors-purple-a-11: var(--colors-purple-light-a-11);--colors-purple-a-12: var(--colors-purple-light-a-12);--colors-purple-p3-1: var(--colors-purple-light-p3-1);--colors-purple-p3-2: var(--colors-purple-light-p3-2);--colors-purple-p3-3: var(--colors-purple-light-p3-3);--colors-purple-p3-4: var(--colors-purple-light-p3-4);--colors-purple-p3-5: var(--colors-purple-light-p3-5);--colors-purple-p3-6: var(--colors-purple-light-p3-6);--colors-purple-p3-7: var(--colors-purple-light-p3-7);--colors-purple-p3-8: var(--colors-purple-light-p3-8);--colors-purple-p3-9: var(--colors-purple-light-p3-9);--colors-purple-p3-10: var(--colors-purple-light-p3-10);--colors-purple-p3-11: var(--colors-purple-light-p3-11);--colors-purple-p3-12: var(--colors-purple-light-p3-12);--colors-purple-p3-a-1: var(--colors-purple-light-p3-a-1);--colors-purple-p3-a-2: var(--colors-purple-light-p3-a-2);--colors-purple-p3-a-3: var(--colors-purple-light-p3-a-3);--colors-purple-p3-a-4: var(--colors-purple-light-p3-a-4);--colors-purple-p3-a-5: var(--colors-purple-light-p3-a-5);--colors-purple-p3-a-6: var(--colors-purple-light-p3-a-6);--colors-purple-p3-a-7: var(--colors-purple-light-p3-a-7);--colors-purple-p3-a-8: var(--colors-purple-light-p3-a-8);--colors-purple-p3-a-9: var(--colors-purple-light-p3-a-9);--colors-purple-p3-a-10: var(--colors-purple-light-p3-a-10);--colors-purple-p3-a-11: var(--colors-purple-light-p3-a-11);--colors-purple-p3-a-12: var(--colors-purple-light-p3-a-12);--colors-red-1: var(--colors-red-light-1);--colors-red-2: var(--colors-red-light-2);--colors-red-3: var(--colors-red-light-3);--colors-red-4: var(--colors-red-light-4);--colors-red-5: var(--colors-red-light-5);--colors-red-6: var(--colors-red-light-6);--colors-red-7: var(--colors-red-light-7);--colors-red-8: var(--colors-red-light-8);--colors-red-9: var(--colors-red-light-9);--colors-red-10: var(--colors-red-light-10);--colors-red-11: var(--colors-red-light-11);--colors-red-12: var(--colors-red-light-12);--colors-red-light-1: #fffcfc;--colors-red-light-2: #fff7f7;--colors-red-light-3: #feebec;--colors-red-light-4: #ffdbdc;--colors-red-light-5: #ffcdce;--colors-red-light-6: #fdbdbe;--colors-red-light-7: #f4a9aa;--colors-red-light-8: #eb8e90;--colors-red-light-9: #e5484d;--colors-red-light-10: #dc3e42;--colors-red-light-11: #ce2c31;--colors-red-light-12: #641723;--colors-red-light-a-1: #ff000003;--colors-red-light-a-2: #ff000008;--colors-red-light-a-3: #f3000d14;--colors-red-light-a-4: #ff000824;--colors-red-light-a-5: #ff000632;--colors-red-light-a-6: #f8000442;--colors-red-light-a-7: #df000356;--colors-red-light-a-8: #d2000571;--colors-red-light-a-9: #db0007b7;--colors-red-light-a-10: #d10005c1;--colors-red-light-a-11: #c40006d3;--colors-red-light-a-12: #55000de8;--colors-red-light-p3-1: color(display-p3 .998 .989 .988);--colors-red-light-p3-2: color(display-p3 .995 .971 .971);--colors-red-light-p3-3: color(display-p3 .985 .925 .925);--colors-red-light-p3-4: color(display-p3 .999 .866 .866);--colors-red-light-p3-5: color(display-p3 .984 .812 .811);--colors-red-light-p3-6: color(display-p3 .955 .751 .749);--colors-red-light-p3-7: color(display-p3 .915 .675 .672);--colors-red-light-p3-8: color(display-p3 .872 .575 .572);--colors-red-light-p3-9: color(display-p3 .83 .329 .324);--colors-red-light-p3-10: color(display-p3 .798 .294 .285);--colors-red-light-p3-11: color(display-p3 .744 .234 .222);--colors-red-light-p3-12: color(display-p3 .36 .115 .143);--colors-red-light-p3-a-1: color(display-p3 .675 .024 .024 / .012);--colors-red-light-p3-a-2: color(display-p3 .863 .024 .024 / .028);--colors-red-light-p3-a-3: color(display-p3 .792 .008 .008 / .075);--colors-red-light-p3-a-4: color(display-p3 1 .008 .008 / .134);--colors-red-light-p3-a-5: color(display-p3 .918 .008 .008 / .189);--colors-red-light-p3-a-6: color(display-p3 .831 .02 .004 / .251);--colors-red-light-p3-a-7: color(display-p3 .741 .016 .004 / .33);--colors-red-light-p3-a-8: color(display-p3 .698 .012 .004 / .428);--colors-red-light-p3-a-9: color(display-p3 .749 .008 0 / .675);--colors-red-light-p3-a-10: color(display-p3 .714 .012 0 / .714);--colors-red-light-p3-a-11: color(display-p3 .744 .234 .222);--colors-red-light-p3-a-12: color(display-p3 .36 .115 .143);--colors-red-dark-1: #191111;--colors-red-dark-2: #201314;--colors-red-dark-3: #3b1219;--colors-red-dark-4: #500f1c;--colors-red-dark-5: #611623;--colors-red-dark-6: #72232d;--colors-red-dark-7: #8c333a;--colors-red-dark-8: #b54548;--colors-red-dark-9: #e5484d;--colors-red-dark-10: #ec5d5e;--colors-red-dark-11: #ff9592;--colors-red-dark-12: #ffd1d9;--colors-red-dark-a-1: #f4121209;--colors-red-dark-a-2: #f22f3e11;--colors-red-dark-a-3: #ff173f2d;--colors-red-dark-a-4: #fe0a3b44;--colors-red-dark-a-5: #ff204756;--colors-red-dark-a-6: #ff3e5668;--colors-red-dark-a-7: #ff536184;--colors-red-dark-a-8: #ff5d61b0;--colors-red-dark-a-9: #fe4e54e4;--colors-red-dark-a-10: #ff6465eb;--colors-red-dark-a-11: #ff9592;--colors-red-dark-a-12: #ffd1d9;--colors-red-dark-p3-1: color(display-p3 .093 .068 .067);--colors-red-dark-p3-2: color(display-p3 .118 .077 .079);--colors-red-dark-p3-3: color(display-p3 .211 .081 .099);--colors-red-dark-p3-4: color(display-p3 .287 .079 .113);--colors-red-dark-p3-5: color(display-p3 .348 .11 .142);--colors-red-dark-p3-6: color(display-p3 .414 .16 .183);--colors-red-dark-p3-7: color(display-p3 .508 .224 .236);--colors-red-dark-p3-8: color(display-p3 .659 .298 .297);--colors-red-dark-p3-9: color(display-p3 .83 .329 .324);--colors-red-dark-p3-10: color(display-p3 .861 .403 .387);--colors-red-dark-p3-11: color(display-p3 1 .57 .55);--colors-red-dark-p3-12: color(display-p3 .971 .826 .852);--colors-red-dark-p3-a-1: color(display-p3 .984 .071 .071 / .03);--colors-red-dark-p3-a-2: color(display-p3 .996 .282 .282 / .055);--colors-red-dark-p3-a-3: color(display-p3 1 .169 .271 / .156);--colors-red-dark-p3-a-4: color(display-p3 1 .118 .267 / .236);--colors-red-dark-p3-a-5: color(display-p3 1 .212 .314 / .303);--colors-red-dark-p3-a-6: color(display-p3 1 .318 .38 / .374);--colors-red-dark-p3-a-7: color(display-p3 1 .4 .424 / .475);--colors-red-dark-p3-a-8: color(display-p3 1 .431 .431 / .635);--colors-red-dark-p3-a-9: color(display-p3 1 .388 .384 / .82);--colors-red-dark-p3-a-10: color(display-p3 1 .463 .447 / .853);--colors-red-dark-p3-a-11: color(display-p3 1 .57 .55);--colors-red-dark-p3-a-12: color(display-p3 .971 .826 .852);--colors-red-a-1: var(--colors-red-light-a-1);--colors-red-a-2: var(--colors-red-light-a-2);--colors-red-a-3: var(--colors-red-light-a-3);--colors-red-a-4: var(--colors-red-light-a-4);--colors-red-a-5: var(--colors-red-light-a-5);--colors-red-a-6: var(--colors-red-light-a-6);--colors-red-a-7: var(--colors-red-light-a-7);--colors-red-a-8: var(--colors-red-light-a-8);--colors-red-a-9: var(--colors-red-light-a-9);--colors-red-a-10: var(--colors-red-light-a-10);--colors-red-a-11: var(--colors-red-light-a-11);--colors-red-a-12: var(--colors-red-light-a-12);--colors-red-p3-1: var(--colors-red-light-p3-1);--colors-red-p3-2: var(--colors-red-light-p3-2);--colors-red-p3-3: var(--colors-red-light-p3-3);--colors-red-p3-4: var(--colors-red-light-p3-4);--colors-red-p3-5: var(--colors-red-light-p3-5);--colors-red-p3-6: var(--colors-red-light-p3-6);--colors-red-p3-7: var(--colors-red-light-p3-7);--colors-red-p3-8: var(--colors-red-light-p3-8);--colors-red-p3-9: var(--colors-red-light-p3-9);--colors-red-p3-10: var(--colors-red-light-p3-10);--colors-red-p3-11: var(--colors-red-light-p3-11);--colors-red-p3-12: var(--colors-red-light-p3-12);--colors-red-p3-a-1: var(--colors-red-light-p3-a-1);--colors-red-p3-a-2: var(--colors-red-light-p3-a-2);--colors-red-p3-a-3: var(--colors-red-light-p3-a-3);--colors-red-p3-a-4: var(--colors-red-light-p3-a-4);--colors-red-p3-a-5: var(--colors-red-light-p3-a-5);--colors-red-p3-a-6: var(--colors-red-light-p3-a-6);--colors-red-p3-a-7: var(--colors-red-light-p3-a-7);--colors-red-p3-a-8: var(--colors-red-light-p3-a-8);--colors-red-p3-a-9: var(--colors-red-light-p3-a-9);--colors-red-p3-a-10: var(--colors-red-light-p3-a-10);--colors-red-p3-a-11: var(--colors-red-light-p3-a-11);--colors-red-p3-a-12: var(--colors-red-light-p3-a-12);--colors-ruby-1: var(--colors-ruby-light-1);--colors-ruby-2: var(--colors-ruby-light-2);--colors-ruby-3: var(--colors-ruby-light-3);--colors-ruby-4: var(--colors-ruby-light-4);--colors-ruby-5: var(--colors-ruby-light-5);--colors-ruby-6: var(--colors-ruby-light-6);--colors-ruby-7: var(--colors-ruby-light-7);--colors-ruby-8: var(--colors-ruby-light-8);--colors-ruby-9: var(--colors-ruby-light-9);--colors-ruby-10: var(--colors-ruby-light-10);--colors-ruby-11: var(--colors-ruby-light-11);--colors-ruby-12: var(--colors-ruby-light-12);--colors-ruby-light-1: #fffcfd;--colors-ruby-light-2: #fff7f8;--colors-ruby-light-3: #feeaed;--colors-ruby-light-4: #ffdce1;--colors-ruby-light-5: #ffced6;--colors-ruby-light-6: #f8bfc8;--colors-ruby-light-7: #efacb8;--colors-ruby-light-8: #e592a3;--colors-ruby-light-9: #e54666;--colors-ruby-light-10: #dc3b5d;--colors-ruby-light-11: #ca244d;--colors-ruby-light-12: #64172b;--colors-ruby-light-a-1: #ff005503;--colors-ruby-light-a-2: #ff002008;--colors-ruby-light-a-3: #f3002515;--colors-ruby-light-a-4: #ff002523;--colors-ruby-light-a-5: #ff002a31;--colors-ruby-light-a-6: #e4002440;--colors-ruby-light-a-7: #ce002553;--colors-ruby-light-a-8: #c300286d;--colors-ruby-light-a-9: #db002cb9;--colors-ruby-light-a-10: #d2002cc4;--colors-ruby-light-a-11: #c10030db;--colors-ruby-light-a-12: #550016e8;--colors-ruby-light-p3-1: color(display-p3 .998 .989 .992);--colors-ruby-light-p3-2: color(display-p3 .995 .971 .974);--colors-ruby-light-p3-3: color(display-p3 .983 .92 .928);--colors-ruby-light-p3-4: color(display-p3 .987 .869 .885);--colors-ruby-light-p3-5: color(display-p3 .968 .817 .839);--colors-ruby-light-p3-6: color(display-p3 .937 .758 .786);--colors-ruby-light-p3-7: color(display-p3 .897 .685 .721);--colors-ruby-light-p3-8: color(display-p3 .851 .588 .639);--colors-ruby-light-p3-9: color(display-p3 .83 .323 .408);--colors-ruby-light-p3-10: color(display-p3 .795 .286 .375);--colors-ruby-light-p3-11: color(display-p3 .728 .211 .311);--colors-ruby-light-p3-12: color(display-p3 .36 .115 .171);--colors-ruby-light-p3-a-1: color(display-p3 .675 .024 .349 / .012);--colors-ruby-light-p3-a-2: color(display-p3 .863 .024 .024 / .028);--colors-ruby-light-p3-a-3: color(display-p3 .804 .008 .11 / .079);--colors-ruby-light-p3-a-4: color(display-p3 .91 .008 .125 / .13);--colors-ruby-light-p3-a-5: color(display-p3 .831 .004 .133 / .185);--colors-ruby-light-p3-a-6: color(display-p3 .745 .004 .118 / .244);--colors-ruby-light-p3-a-7: color(display-p3 .678 .004 .114 / .314);--colors-ruby-light-p3-a-8: color(display-p3 .639 .004 .125 / .412);--colors-ruby-light-p3-a-9: color(display-p3 .753 0 .129 / .679);--colors-ruby-light-p3-a-10: color(display-p3 .714 0 .125 / .714);--colors-ruby-light-p3-a-11: color(display-p3 .728 .211 .311);--colors-ruby-light-p3-a-12: color(display-p3 .36 .115 .171);--colors-ruby-dark-1: #191113;--colors-ruby-dark-2: #1e1517;--colors-ruby-dark-3: #3a141e;--colors-ruby-dark-4: #4e1325;--colors-ruby-dark-5: #5e1a2e;--colors-ruby-dark-6: #6f2539;--colors-ruby-dark-7: #883447;--colors-ruby-dark-8: #b3445a;--colors-ruby-dark-9: #e54666;--colors-ruby-dark-10: #ec5a72;--colors-ruby-dark-11: #ff949d;--colors-ruby-dark-12: #fed2e1;--colors-ruby-dark-a-1: #f4124a09;--colors-ruby-dark-a-2: #fe5a7f0e;--colors-ruby-dark-a-3: #ff235d2c;--colors-ruby-dark-a-4: #fd195e42;--colors-ruby-dark-a-5: #fe2d6b53;--colors-ruby-dark-a-6: #ff447665;--colors-ruby-dark-a-7: #ff577d80;--colors-ruby-dark-a-8: #ff5c7cae;--colors-ruby-dark-a-9: #fe4c70e4;--colors-ruby-dark-a-10: #ff617beb;--colors-ruby-dark-a-11: #ff949d;--colors-ruby-dark-a-12: #ffd3e2fe;--colors-ruby-dark-p3-1: color(display-p3 .093 .068 .074);--colors-ruby-dark-p3-2: color(display-p3 .113 .083 .089);--colors-ruby-dark-p3-3: color(display-p3 .208 .088 .117);--colors-ruby-dark-p3-4: color(display-p3 .279 .092 .147);--colors-ruby-dark-p3-5: color(display-p3 .337 .12 .18);--colors-ruby-dark-p3-6: color(display-p3 .401 .166 .223);--colors-ruby-dark-p3-7: color(display-p3 .495 .224 .281);--colors-ruby-dark-p3-8: color(display-p3 .652 .295 .359);--colors-ruby-dark-p3-9: color(display-p3 .83 .323 .408);--colors-ruby-dark-p3-10: color(display-p3 .857 .392 .455);--colors-ruby-dark-p3-11: color(display-p3 1 .57 .59);--colors-ruby-dark-p3-12: color(display-p3 .968 .83 .88);--colors-ruby-dark-p3-a-1: color(display-p3 .984 .071 .329 / .03);--colors-ruby-dark-p3-a-2: color(display-p3 .992 .376 .529 / .051);--colors-ruby-dark-p3-a-3: color(display-p3 .996 .196 .404 / .152);--colors-ruby-dark-p3-a-4: color(display-p3 1 .173 .416 / .227);--colors-ruby-dark-p3-a-5: color(display-p3 1 .259 .459 / .29);--colors-ruby-dark-p3-a-6: color(display-p3 1 .341 .506 / .358);--colors-ruby-dark-p3-a-7: color(display-p3 1 .412 .541 / .458);--colors-ruby-dark-p3-a-8: color(display-p3 1 .431 .537 / .627);--colors-ruby-dark-p3-a-9: color(display-p3 1 .376 .482 / .82);--colors-ruby-dark-p3-a-10: color(display-p3 1 .447 .522 / .849);--colors-ruby-dark-p3-a-11: color(display-p3 1 .57 .59);--colors-ruby-dark-p3-a-12: color(display-p3 .968 .83 .88);--colors-ruby-a-1: var(--colors-ruby-light-a-1);--colors-ruby-a-2: var(--colors-ruby-light-a-2);--colors-ruby-a-3: var(--colors-ruby-light-a-3);--colors-ruby-a-4: var(--colors-ruby-light-a-4);--colors-ruby-a-5: var(--colors-ruby-light-a-5);--colors-ruby-a-6: var(--colors-ruby-light-a-6);--colors-ruby-a-7: var(--colors-ruby-light-a-7);--colors-ruby-a-8: var(--colors-ruby-light-a-8);--colors-ruby-a-9: var(--colors-ruby-light-a-9);--colors-ruby-a-10: var(--colors-ruby-light-a-10);--colors-ruby-a-11: var(--colors-ruby-light-a-11);--colors-ruby-a-12: var(--colors-ruby-light-a-12);--colors-ruby-p3-1: var(--colors-ruby-light-p3-1);--colors-ruby-p3-2: var(--colors-ruby-light-p3-2);--colors-ruby-p3-3: var(--colors-ruby-light-p3-3);--colors-ruby-p3-4: var(--colors-ruby-light-p3-4);--colors-ruby-p3-5: var(--colors-ruby-light-p3-5);--colors-ruby-p3-6: var(--colors-ruby-light-p3-6);--colors-ruby-p3-7: var(--colors-ruby-light-p3-7);--colors-ruby-p3-8: var(--colors-ruby-light-p3-8);--colors-ruby-p3-9: var(--colors-ruby-light-p3-9);--colors-ruby-p3-10: var(--colors-ruby-light-p3-10);--colors-ruby-p3-11: var(--colors-ruby-light-p3-11);--colors-ruby-p3-12: var(--colors-ruby-light-p3-12);--colors-ruby-p3-a-1: var(--colors-ruby-light-p3-a-1);--colors-ruby-p3-a-2: var(--colors-ruby-light-p3-a-2);--colors-ruby-p3-a-3: var(--colors-ruby-light-p3-a-3);--colors-ruby-p3-a-4: var(--colors-ruby-light-p3-a-4);--colors-ruby-p3-a-5: var(--colors-ruby-light-p3-a-5);--colors-ruby-p3-a-6: var(--colors-ruby-light-p3-a-6);--colors-ruby-p3-a-7: var(--colors-ruby-light-p3-a-7);--colors-ruby-p3-a-8: var(--colors-ruby-light-p3-a-8);--colors-ruby-p3-a-9: var(--colors-ruby-light-p3-a-9);--colors-ruby-p3-a-10: var(--colors-ruby-light-p3-a-10);--colors-ruby-p3-a-11: var(--colors-ruby-light-p3-a-11);--colors-ruby-p3-a-12: var(--colors-ruby-light-p3-a-12);--colors-teal-1: var(--colors-teal-light-1);--colors-teal-2: var(--colors-teal-light-2);--colors-teal-3: var(--colors-teal-light-3);--colors-teal-4: var(--colors-teal-light-4);--colors-teal-5: var(--colors-teal-light-5);--colors-teal-6: var(--colors-teal-light-6);--colors-teal-7: var(--colors-teal-light-7);--colors-teal-8: var(--colors-teal-light-8);--colors-teal-9: var(--colors-teal-light-9);--colors-teal-10: var(--colors-teal-light-10);--colors-teal-11: var(--colors-teal-light-11);--colors-teal-12: var(--colors-teal-light-12);--colors-teal-light-1: #fafefd;--colors-teal-light-2: #f3fbf9;--colors-teal-light-3: #e0f8f3;--colors-teal-light-4: #ccf3ea;--colors-teal-light-5: #b8eae0;--colors-teal-light-6: #a1ded2;--colors-teal-light-7: #83cdc1;--colors-teal-light-8: #53b9ab;--colors-teal-light-9: #12a594;--colors-teal-light-10: #0d9b8a;--colors-teal-light-11: #008573;--colors-teal-light-12: #0d3d38;--colors-teal-light-a-1: #00cc9905;--colors-teal-light-a-2: #00aa800c;--colors-teal-light-a-3: #00c69d1f;--colors-teal-light-a-4: #00c39633;--colors-teal-light-a-5: #00b49047;--colors-teal-light-a-6: #00a6855e;--colors-teal-light-a-7: #0099807c;--colors-teal-light-a-8: #009783ac;--colors-teal-light-a-9: #009e8ced;--colors-teal-light-a-10: #009684f2;--colors-teal-light-a-11: #008573;--colors-teal-light-a-12: #00332df2;--colors-teal-light-p3-1: color(display-p3 .983 .996 .992);--colors-teal-light-p3-2: color(display-p3 .958 .983 .976);--colors-teal-light-p3-3: color(display-p3 .895 .971 .952);--colors-teal-light-p3-4: color(display-p3 .831 .949 .92);--colors-teal-light-p3-5: color(display-p3 .761 .914 .878);--colors-teal-light-p3-6: color(display-p3 .682 .864 .825);--colors-teal-light-p3-7: color(display-p3 .581 .798 .756);--colors-teal-light-p3-8: color(display-p3 .433 .716 .671);--colors-teal-light-p3-9: color(display-p3 .297 .637 .581);--colors-teal-light-p3-10: color(display-p3 .275 .599 .542);--colors-teal-light-p3-11: color(display-p3 .08 .5 .43);--colors-teal-light-p3-12: color(display-p3 .11 .235 .219);--colors-teal-light-p3-a-1: color(display-p3 .024 .757 .514 / .016);--colors-teal-light-p3-a-2: color(display-p3 .02 .647 .467 / .044);--colors-teal-light-p3-a-3: color(display-p3 .004 .741 .557 / .106);--colors-teal-light-p3-a-4: color(display-p3 .004 .702 .537 / .169);--colors-teal-light-p3-a-5: color(display-p3 .004 .643 .494 / .24);--colors-teal-light-p3-a-6: color(display-p3 .004 .569 .447 / .318);--colors-teal-light-p3-a-7: color(display-p3 .004 .518 .424 / .42);--colors-teal-light-p3-a-8: color(display-p3 0 .506 .424 / .569);--colors-teal-light-p3-a-9: color(display-p3 0 .482 .404 / .702);--colors-teal-light-p3-a-10: color(display-p3 0 .451 .369 / .726);--colors-teal-light-p3-a-11: color(display-p3 .08 .5 .43);--colors-teal-light-p3-a-12: color(display-p3 .11 .235 .219);--colors-teal-dark-1: #0d1514;--colors-teal-dark-2: #111c1b;--colors-teal-dark-3: #0d2d2a;--colors-teal-dark-4: #023b37;--colors-teal-dark-5: #084843;--colors-teal-dark-6: #145750;--colors-teal-dark-7: #1c6961;--colors-teal-dark-8: #207e73;--colors-teal-dark-9: #12a594;--colors-teal-dark-10: #0eb39e;--colors-teal-dark-11: #0bd8b6;--colors-teal-dark-12: #adf0dd;--colors-teal-dark-a-1: #00deab05;--colors-teal-dark-a-2: #12fbe60c;--colors-teal-dark-a-3: #00ffe61e;--colors-teal-dark-a-4: #00ffe92d;--colors-teal-dark-a-5: #00ffea3b;--colors-teal-dark-a-6: #1cffe84b;--colors-teal-dark-a-7: #2efde85f;--colors-teal-dark-a-8: #32ffe775;--colors-teal-dark-a-9: #13ffe49f;--colors-teal-dark-a-10: #0dffe0ae;--colors-teal-dark-a-11: #0afed5d6;--colors-teal-dark-a-12: #b8ffebef;--colors-teal-dark-p3-1: color(display-p3 .059 .083 .079);--colors-teal-dark-p3-2: color(display-p3 .075 .11 .107);--colors-teal-dark-p3-3: color(display-p3 .087 .175 .165);--colors-teal-dark-p3-4: color(display-p3 .087 .227 .214);--colors-teal-dark-p3-5: color(display-p3 .12 .277 .261);--colors-teal-dark-p3-6: color(display-p3 .162 .335 .314);--colors-teal-dark-p3-7: color(display-p3 .205 .406 .379);--colors-teal-dark-p3-8: color(display-p3 .245 .489 .453);--colors-teal-dark-p3-9: color(display-p3 .297 .637 .581);--colors-teal-dark-p3-10: color(display-p3 .319 .69 .62);--colors-teal-dark-p3-11: color(display-p3 .388 .835 .719);--colors-teal-dark-p3-12: color(display-p3 .734 .934 .87);--colors-teal-dark-p3-a-1: color(display-p3 0 .992 .761 / .017);--colors-teal-dark-p3-a-2: color(display-p3 .235 .988 .902 / .047);--colors-teal-dark-p3-a-3: color(display-p3 .235 1 .898 / .118);--colors-teal-dark-p3-a-4: color(display-p3 .18 .996 .929 / .173);--colors-teal-dark-p3-a-5: color(display-p3 .31 1 .933 / .227);--colors-teal-dark-p3-a-6: color(display-p3 .396 1 .933 / .286);--colors-teal-dark-p3-a-7: color(display-p3 .443 1 .925 / .366);--colors-teal-dark-p3-a-8: color(display-p3 .459 1 .925 / .454);--colors-teal-dark-p3-a-9: color(display-p3 .443 .996 .906 / .61);--colors-teal-dark-p3-a-10: color(display-p3 .439 .996 .89 / .669);--colors-teal-dark-p3-a-11: color(display-p3 .388 .835 .719);--colors-teal-dark-p3-a-12: color(display-p3 .734 .934 .87);--colors-teal-a-1: var(--colors-teal-light-a-1);--colors-teal-a-2: var(--colors-teal-light-a-2);--colors-teal-a-3: var(--colors-teal-light-a-3);--colors-teal-a-4: var(--colors-teal-light-a-4);--colors-teal-a-5: var(--colors-teal-light-a-5);--colors-teal-a-6: var(--colors-teal-light-a-6);--colors-teal-a-7: var(--colors-teal-light-a-7);--colors-teal-a-8: var(--colors-teal-light-a-8);--colors-teal-a-9: var(--colors-teal-light-a-9);--colors-teal-a-10: var(--colors-teal-light-a-10);--colors-teal-a-11: var(--colors-teal-light-a-11);--colors-teal-a-12: var(--colors-teal-light-a-12);--colors-teal-p3-1: var(--colors-teal-light-p3-1);--colors-teal-p3-2: var(--colors-teal-light-p3-2);--colors-teal-p3-3: var(--colors-teal-light-p3-3);--colors-teal-p3-4: var(--colors-teal-light-p3-4);--colors-teal-p3-5: var(--colors-teal-light-p3-5);--colors-teal-p3-6: var(--colors-teal-light-p3-6);--colors-teal-p3-7: var(--colors-teal-light-p3-7);--colors-teal-p3-8: var(--colors-teal-light-p3-8);--colors-teal-p3-9: var(--colors-teal-light-p3-9);--colors-teal-p3-10: var(--colors-teal-light-p3-10);--colors-teal-p3-11: var(--colors-teal-light-p3-11);--colors-teal-p3-12: var(--colors-teal-light-p3-12);--colors-teal-p3-a-1: var(--colors-teal-light-p3-a-1);--colors-teal-p3-a-2: var(--colors-teal-light-p3-a-2);--colors-teal-p3-a-3: var(--colors-teal-light-p3-a-3);--colors-teal-p3-a-4: var(--colors-teal-light-p3-a-4);--colors-teal-p3-a-5: var(--colors-teal-light-p3-a-5);--colors-teal-p3-a-6: var(--colors-teal-light-p3-a-6);--colors-teal-p3-a-7: var(--colors-teal-light-p3-a-7);--colors-teal-p3-a-8: var(--colors-teal-light-p3-a-8);--colors-teal-p3-a-9: var(--colors-teal-light-p3-a-9);--colors-teal-p3-a-10: var(--colors-teal-light-p3-a-10);--colors-teal-p3-a-11: var(--colors-teal-light-p3-a-11);--colors-teal-p3-a-12: var(--colors-teal-light-p3-a-12);--colors-tomato-1: var(--colors-tomato-light-1);--colors-tomato-2: var(--colors-tomato-light-2);--colors-tomato-3: var(--colors-tomato-light-3);--colors-tomato-4: var(--colors-tomato-light-4);--colors-tomato-5: var(--colors-tomato-light-5);--colors-tomato-6: var(--colors-tomato-light-6);--colors-tomato-7: var(--colors-tomato-light-7);--colors-tomato-8: var(--colors-tomato-light-8);--colors-tomato-9: var(--colors-tomato-light-9);--colors-tomato-10: var(--colors-tomato-light-10);--colors-tomato-11: var(--colors-tomato-light-11);--colors-tomato-12: var(--colors-tomato-light-12);--colors-tomato-light-1: #fffcfc;--colors-tomato-light-2: #fff8f7;--colors-tomato-light-3: #feebe7;--colors-tomato-light-4: #ffdcd3;--colors-tomato-light-5: #ffcdc2;--colors-tomato-light-6: #fdbdaf;--colors-tomato-light-7: #f5a898;--colors-tomato-light-8: #ec8e7b;--colors-tomato-light-9: #e54d2e;--colors-tomato-light-10: #dd4425;--colors-tomato-light-11: #d13415;--colors-tomato-light-12: #5c271f;--colors-tomato-light-a-1: #ff000003;--colors-tomato-light-a-2: #ff200008;--colors-tomato-light-a-3: #f52b0018;--colors-tomato-light-a-4: #ff35002c;--colors-tomato-light-a-5: #ff2e003d;--colors-tomato-light-a-6: #f92d0050;--colors-tomato-light-a-7: #e7280067;--colors-tomato-light-a-8: #db250084;--colors-tomato-light-a-9: #df2600d1;--colors-tomato-light-a-10: #d72400da;--colors-tomato-light-a-11: #cd2200ea;--colors-tomato-light-a-12: #460900e0;--colors-tomato-light-p3-1: color(display-p3 .998 .989 .988);--colors-tomato-light-p3-2: color(display-p3 .994 .974 .969);--colors-tomato-light-p3-3: color(display-p3 .985 .924 .909);--colors-tomato-light-p3-4: color(display-p3 .996 .868 .835);--colors-tomato-light-p3-5: color(display-p3 .98 .812 .77);--colors-tomato-light-p3-6: color(display-p3 .953 .75 .698);--colors-tomato-light-p3-7: color(display-p3 .917 .673 .611);--colors-tomato-light-p3-8: color(display-p3 .875 .575 .502);--colors-tomato-light-p3-9: color(display-p3 .831 .345 .231);--colors-tomato-light-p3-10: color(display-p3 .802 .313 .2);--colors-tomato-light-p3-11: color(display-p3 .755 .259 .152);--colors-tomato-light-p3-12: color(display-p3 .335 .165 .132);--colors-tomato-light-p3-a-1: color(display-p3 .675 .024 .024 / .012);--colors-tomato-light-p3-a-2: color(display-p3 .757 .145 .02 / .032);--colors-tomato-light-p3-a-3: color(display-p3 .831 .184 .012 / .091);--colors-tomato-light-p3-a-4: color(display-p3 .976 .192 .004 / .165);--colors-tomato-light-p3-a-5: color(display-p3 .918 .192 .004 / .232);--colors-tomato-light-p3-a-6: color(display-p3 .847 .173 .004 / .302);--colors-tomato-light-p3-a-7: color(display-p3 .788 .165 .004 / .389);--colors-tomato-light-p3-a-8: color(display-p3 .749 .153 .004 / .499);--colors-tomato-light-p3-a-9: color(display-p3 .78 .149 0 / .769);--colors-tomato-light-p3-a-10: color(display-p3 .757 .141 0 / .8);--colors-tomato-light-p3-a-11: color(display-p3 .755 .259 .152);--colors-tomato-light-p3-a-12: color(display-p3 .335 .165 .132);--colors-tomato-dark-1: #181111;--colors-tomato-dark-2: #1f1513;--colors-tomato-dark-3: #391714;--colors-tomato-dark-4: #4e1511;--colors-tomato-dark-5: #5e1c16;--colors-tomato-dark-6: #6e2920;--colors-tomato-dark-7: #853a2d;--colors-tomato-dark-8: #ac4d39;--colors-tomato-dark-9: #e54d2e;--colors-tomato-dark-10: #ec6142;--colors-tomato-dark-11: #ff977d;--colors-tomato-dark-12: #fbd3cb;--colors-tomato-dark-a-1: #f1121208;--colors-tomato-dark-a-2: #ff55330f;--colors-tomato-dark-a-3: #ff35232b;--colors-tomato-dark-a-4: #fd201142;--colors-tomato-dark-a-5: #fe332153;--colors-tomato-dark-a-6: #ff4f3864;--colors-tomato-dark-a-7: #fd644a7d;--colors-tomato-dark-a-8: #fe6d4ea7;--colors-tomato-dark-a-9: #fe5431e4;--colors-tomato-dark-a-10: #ff6847eb;--colors-tomato-dark-a-11: #ff977d;--colors-tomato-dark-a-12: #ffd6cefb;--colors-tomato-dark-p3-1: color(display-p3 .09 .068 .067);--colors-tomato-dark-p3-2: color(display-p3 .115 .084 .076);--colors-tomato-dark-p3-3: color(display-p3 .205 .097 .083);--colors-tomato-dark-p3-4: color(display-p3 .282 .099 .077);--colors-tomato-dark-p3-5: color(display-p3 .339 .129 .101);--colors-tomato-dark-p3-6: color(display-p3 .398 .179 .141);--colors-tomato-dark-p3-7: color(display-p3 .487 .245 .194);--colors-tomato-dark-p3-8: color(display-p3 .629 .322 .248);--colors-tomato-dark-p3-9: color(display-p3 .831 .345 .231);--colors-tomato-dark-p3-10: color(display-p3 .862 .415 .298);--colors-tomato-dark-p3-11: color(display-p3 1 .585 .455);--colors-tomato-dark-p3-12: color(display-p3 .959 .833 .802);--colors-tomato-dark-p3-a-1: color(display-p3 .973 .071 .071 / .026);--colors-tomato-dark-p3-a-2: color(display-p3 .992 .376 .224 / .051);--colors-tomato-dark-p3-a-3: color(display-p3 .996 .282 .176 / .148);--colors-tomato-dark-p3-a-4: color(display-p3 1 .204 .118 / .232);--colors-tomato-dark-p3-a-5: color(display-p3 1 .286 .192 / .29);--colors-tomato-dark-p3-a-6: color(display-p3 1 .392 .278 / .353);--colors-tomato-dark-p3-a-7: color(display-p3 1 .459 .349 / .45);--colors-tomato-dark-p3-a-8: color(display-p3 1 .49 .369 / .601);--colors-tomato-dark-p3-a-9: color(display-p3 1 .408 .267 / .82);--colors-tomato-dark-p3-a-10: color(display-p3 1 .478 .341 / .853);--colors-tomato-dark-p3-a-11: color(display-p3 1 .585 .455);--colors-tomato-dark-p3-a-12: color(display-p3 .959 .833 .802);--colors-tomato-a-1: var(--colors-tomato-light-a-1);--colors-tomato-a-2: var(--colors-tomato-light-a-2);--colors-tomato-a-3: var(--colors-tomato-light-a-3);--colors-tomato-a-4: var(--colors-tomato-light-a-4);--colors-tomato-a-5: var(--colors-tomato-light-a-5);--colors-tomato-a-6: var(--colors-tomato-light-a-6);--colors-tomato-a-7: var(--colors-tomato-light-a-7);--colors-tomato-a-8: var(--colors-tomato-light-a-8);--colors-tomato-a-9: var(--colors-tomato-light-a-9);--colors-tomato-a-10: var(--colors-tomato-light-a-10);--colors-tomato-a-11: var(--colors-tomato-light-a-11);--colors-tomato-a-12: var(--colors-tomato-light-a-12);--colors-tomato-p3-1: var(--colors-tomato-light-p3-1);--colors-tomato-p3-2: var(--colors-tomato-light-p3-2);--colors-tomato-p3-3: var(--colors-tomato-light-p3-3);--colors-tomato-p3-4: var(--colors-tomato-light-p3-4);--colors-tomato-p3-5: var(--colors-tomato-light-p3-5);--colors-tomato-p3-6: var(--colors-tomato-light-p3-6);--colors-tomato-p3-7: var(--colors-tomato-light-p3-7);--colors-tomato-p3-8: var(--colors-tomato-light-p3-8);--colors-tomato-p3-9: var(--colors-tomato-light-p3-9);--colors-tomato-p3-10: var(--colors-tomato-light-p3-10);--colors-tomato-p3-11: var(--colors-tomato-light-p3-11);--colors-tomato-p3-12: var(--colors-tomato-light-p3-12);--colors-tomato-p3-a-1: var(--colors-tomato-light-p3-a-1);--colors-tomato-p3-a-2: var(--colors-tomato-light-p3-a-2);--colors-tomato-p3-a-3: var(--colors-tomato-light-p3-a-3);--colors-tomato-p3-a-4: var(--colors-tomato-light-p3-a-4);--colors-tomato-p3-a-5: var(--colors-tomato-light-p3-a-5);--colors-tomato-p3-a-6: var(--colors-tomato-light-p3-a-6);--colors-tomato-p3-a-7: var(--colors-tomato-light-p3-a-7);--colors-tomato-p3-a-8: var(--colors-tomato-light-p3-a-8);--colors-tomato-p3-a-9: var(--colors-tomato-light-p3-a-9);--colors-tomato-p3-a-10: var(--colors-tomato-light-p3-a-10);--colors-tomato-p3-a-11: var(--colors-tomato-light-p3-a-11);--colors-tomato-p3-a-12: var(--colors-tomato-light-p3-a-12);--colors-violet-1: var(--colors-violet-light-1);--colors-violet-2: var(--colors-violet-light-2);--colors-violet-3: var(--colors-violet-light-3);--colors-violet-4: var(--colors-violet-light-4);--colors-violet-5: var(--colors-violet-light-5);--colors-violet-6: var(--colors-violet-light-6);--colors-violet-7: var(--colors-violet-light-7);--colors-violet-8: var(--colors-violet-light-8);--colors-violet-9: var(--colors-violet-light-9);--colors-violet-10: var(--colors-violet-light-10);--colors-violet-11: var(--colors-violet-light-11);--colors-violet-12: var(--colors-violet-light-12);--colors-violet-light-1: #fdfcfe;--colors-violet-light-2: #faf8ff;--colors-violet-light-3: #f4f0fe;--colors-violet-light-4: #ebe4ff;--colors-violet-light-5: #e1d9ff;--colors-violet-light-6: #d4cafe;--colors-violet-light-7: #c2b5f5;--colors-violet-light-8: #aa99ec;--colors-violet-light-9: #6e56cf;--colors-violet-light-10: #654dc4;--colors-violet-light-11: #6550b9;--colors-violet-light-12: #2f265f;--colors-violet-light-a-1: #5500aa03;--colors-violet-light-a-2: #4900ff07;--colors-violet-light-a-3: #4400ee0f;--colors-violet-light-a-4: #4300ff1b;--colors-violet-light-a-5: #3600ff26;--colors-violet-light-a-6: #3100fb35;--colors-violet-light-a-7: #2d01dd4a;--colors-violet-light-a-8: #2b00d066;--colors-violet-light-a-9: #2400b7a9;--colors-violet-light-a-10: #2300abb2;--colors-violet-light-a-11: #1f0099af;--colors-violet-light-a-12: #0b0043d9;--colors-violet-light-p3-1: color(display-p3 .991 .988 .995);--colors-violet-light-p3-2: color(display-p3 .978 .974 .998);--colors-violet-light-p3-3: color(display-p3 .953 .943 .993);--colors-violet-light-p3-4: color(display-p3 .916 .897 1);--colors-violet-light-p3-5: color(display-p3 .876 .851 1);--colors-violet-light-p3-6: color(display-p3 .825 .793 .981);--colors-violet-light-p3-7: color(display-p3 .752 .712 .943);--colors-violet-light-p3-8: color(display-p3 .654 .602 .902);--colors-violet-light-p3-9: color(display-p3 .417 .341 .784);--colors-violet-light-p3-10: color(display-p3 .381 .306 .741);--colors-violet-light-p3-11: color(display-p3 .383 .317 .702);--colors-violet-light-p3-12: color(display-p3 .179 .15 .359);--colors-violet-light-p3-a-1: color(display-p3 .349 .024 .675 / .012);--colors-violet-light-p3-a-2: color(display-p3 .161 .024 .863 / .028);--colors-violet-light-p3-a-3: color(display-p3 .204 .004 .871 / .059);--colors-violet-light-p3-a-4: color(display-p3 .196 .004 1 / .102);--colors-violet-light-p3-a-5: color(display-p3 .165 .008 1 / .15);--colors-violet-light-p3-a-6: color(display-p3 .153 .004 .906 / .208);--colors-violet-light-p3-a-7: color(display-p3 .141 .004 .796 / .287);--colors-violet-light-p3-a-8: color(display-p3 .133 .004 .753 / .397);--colors-violet-light-p3-a-9: color(display-p3 .114 0 .675 / .659);--colors-violet-light-p3-a-10: color(display-p3 .11 0 .627 / .695);--colors-violet-light-p3-a-11: color(display-p3 .383 .317 .702);--colors-violet-light-p3-a-12: color(display-p3 .179 .15 .359);--colors-violet-dark-1: #14121f;--colors-violet-dark-2: #1b1525;--colors-violet-dark-3: #291f43;--colors-violet-dark-4: #33255b;--colors-violet-dark-5: #3c2e69;--colors-violet-dark-6: #473876;--colors-violet-dark-7: #56468b;--colors-violet-dark-8: #6958ad;--colors-violet-dark-9: #6e56cf;--colors-violet-dark-10: #7d66d9;--colors-violet-dark-11: #baa7ff;--colors-violet-dark-12: #e2ddfe;--colors-violet-dark-a-1: #4422ff0f;--colors-violet-dark-a-2: #853ff916;--colors-violet-dark-a-3: #8354fe36;--colors-violet-dark-a-4: #7d51fd50;--colors-violet-dark-a-5: #845ffd5f;--colors-violet-dark-a-6: #8f6cfd6d;--colors-violet-dark-a-7: #9879ff83;--colors-violet-dark-a-8: #977dfea8;--colors-violet-dark-a-9: #8668ffcc;--colors-violet-dark-a-10: #9176fed7;--colors-violet-dark-a-11: #baa7ff;--colors-violet-dark-a-12: #e3defffe;--colors-violet-dark-p3-1: color(display-p3 .077 .071 .118);--colors-violet-dark-p3-2: color(display-p3 .101 .084 .141);--colors-violet-dark-p3-3: color(display-p3 .154 .123 .256);--colors-violet-dark-p3-4: color(display-p3 .191 .148 .345);--colors-violet-dark-p3-5: color(display-p3 .226 .182 .396);--colors-violet-dark-p3-6: color(display-p3 .269 .223 .449);--colors-violet-dark-p3-7: color(display-p3 .326 .277 .53);--colors-violet-dark-p3-8: color(display-p3 .399 .346 .656);--colors-violet-dark-p3-9: color(display-p3 .417 .341 .784);--colors-violet-dark-p3-10: color(display-p3 .477 .402 .823);--colors-violet-dark-p3-11: color(display-p3 .72 .65 1);--colors-violet-dark-p3-12: color(display-p3 .883 .867 .986);--colors-violet-dark-p3-a-1: color(display-p3 .282 .141 .996 / .055);--colors-violet-dark-p3-a-2: color(display-p3 .51 .263 1 / .08);--colors-violet-dark-p3-a-3: color(display-p3 .494 .337 .996 / .202);--colors-violet-dark-p3-a-4: color(display-p3 .49 .345 1 / .299);--colors-violet-dark-p3-a-5: color(display-p3 .525 .392 1 / .353);--colors-violet-dark-p3-a-6: color(display-p3 .569 .455 1 / .408);--colors-violet-dark-p3-a-7: color(display-p3 .588 .494 1 / .496);--colors-violet-dark-p3-a-8: color(display-p3 .596 .51 1 / .631);--colors-violet-dark-p3-a-9: color(display-p3 .522 .424 1 / .769);--colors-violet-dark-p3-a-10: color(display-p3 .576 .482 1 / .811);--colors-violet-dark-p3-a-11: color(display-p3 .72 .65 1);--colors-violet-dark-p3-a-12: color(display-p3 .883 .867 .986);--colors-violet-a-1: var(--colors-violet-light-a-1);--colors-violet-a-2: var(--colors-violet-light-a-2);--colors-violet-a-3: var(--colors-violet-light-a-3);--colors-violet-a-4: var(--colors-violet-light-a-4);--colors-violet-a-5: var(--colors-violet-light-a-5);--colors-violet-a-6: var(--colors-violet-light-a-6);--colors-violet-a-7: var(--colors-violet-light-a-7);--colors-violet-a-8: var(--colors-violet-light-a-8);--colors-violet-a-9: var(--colors-violet-light-a-9);--colors-violet-a-10: var(--colors-violet-light-a-10);--colors-violet-a-11: var(--colors-violet-light-a-11);--colors-violet-a-12: var(--colors-violet-light-a-12);--colors-violet-p3-1: var(--colors-violet-light-p3-1);--colors-violet-p3-2: var(--colors-violet-light-p3-2);--colors-violet-p3-3: var(--colors-violet-light-p3-3);--colors-violet-p3-4: var(--colors-violet-light-p3-4);--colors-violet-p3-5: var(--colors-violet-light-p3-5);--colors-violet-p3-6: var(--colors-violet-light-p3-6);--colors-violet-p3-7: var(--colors-violet-light-p3-7);--colors-violet-p3-8: var(--colors-violet-light-p3-8);--colors-violet-p3-9: var(--colors-violet-light-p3-9);--colors-violet-p3-10: var(--colors-violet-light-p3-10);--colors-violet-p3-11: var(--colors-violet-light-p3-11);--colors-violet-p3-12: var(--colors-violet-light-p3-12);--colors-violet-p3-a-1: var(--colors-violet-light-p3-a-1);--colors-violet-p3-a-2: var(--colors-violet-light-p3-a-2);--colors-violet-p3-a-3: var(--colors-violet-light-p3-a-3);--colors-violet-p3-a-4: var(--colors-violet-light-p3-a-4);--colors-violet-p3-a-5: var(--colors-violet-light-p3-a-5);--colors-violet-p3-a-6: var(--colors-violet-light-p3-a-6);--colors-violet-p3-a-7: var(--colors-violet-light-p3-a-7);--colors-violet-p3-a-8: var(--colors-violet-light-p3-a-8);--colors-violet-p3-a-9: var(--colors-violet-light-p3-a-9);--colors-violet-p3-a-10: var(--colors-violet-light-p3-a-10);--colors-violet-p3-a-11: var(--colors-violet-light-p3-a-11);--colors-violet-p3-a-12: var(--colors-violet-light-p3-a-12);--colors-yellow-1: var(--colors-yellow-light-1);--colors-yellow-2: var(--colors-yellow-light-2);--colors-yellow-3: var(--colors-yellow-light-3);--colors-yellow-4: var(--colors-yellow-light-4);--colors-yellow-5: var(--colors-yellow-light-5);--colors-yellow-6: var(--colors-yellow-light-6);--colors-yellow-7: var(--colors-yellow-light-7);--colors-yellow-8: var(--colors-yellow-light-8);--colors-yellow-9: var(--colors-yellow-light-9);--colors-yellow-10: var(--colors-yellow-light-10);--colors-yellow-11: var(--colors-yellow-light-11);--colors-yellow-12: var(--colors-yellow-light-12);--colors-yellow-light-1: #fdfdf9;--colors-yellow-light-2: #fefce9;--colors-yellow-light-3: #fffab8;--colors-yellow-light-4: #fff394;--colors-yellow-light-5: #ffe770;--colors-yellow-light-6: #f3d768;--colors-yellow-light-7: #e4c767;--colors-yellow-light-8: #d5ae39;--colors-yellow-light-9: #ffe629;--colors-yellow-light-10: #ffdc00;--colors-yellow-light-11: #9e6c00;--colors-yellow-light-12: #473b1f;--colors-yellow-light-a-1: #aaaa0006;--colors-yellow-light-a-2: #f4dd0016;--colors-yellow-light-a-3: #ffee0047;--colors-yellow-light-a-4: #ffe3016b;--colors-yellow-light-a-5: #ffd5008f;--colors-yellow-light-a-6: #ebbc0097;--colors-yellow-light-a-7: #d2a10098;--colors-yellow-light-a-8: #c99700c6;--colors-yellow-light-a-9: #ffe100d6;--colors-yellow-light-a-10: #ffdc00;--colors-yellow-light-a-11: #9e6c00;--colors-yellow-light-a-12: #2e2000e0;--colors-yellow-light-p3-1: color(display-p3 .992 .992 .978);--colors-yellow-light-p3-2: color(display-p3 .995 .99 .922);--colors-yellow-light-p3-3: color(display-p3 .997 .982 .749);--colors-yellow-light-p3-4: color(display-p3 .992 .953 .627);--colors-yellow-light-p3-5: color(display-p3 .984 .91 .51);--colors-yellow-light-p3-6: color(display-p3 .934 .847 .474);--colors-yellow-light-p3-7: color(display-p3 .876 .785 .46);--colors-yellow-light-p3-8: color(display-p3 .811 .689 .313);--colors-yellow-light-p3-9: color(display-p3 1 .92 .22);--colors-yellow-light-p3-10: color(display-p3 .977 .868 .291);--colors-yellow-light-p3-11: color(display-p3 .6 .44 0);--colors-yellow-light-p3-12: color(display-p3 .271 .233 .137);--colors-yellow-light-p3-a-1: color(display-p3 .675 .675 .024 / .024);--colors-yellow-light-p3-a-2: color(display-p3 .953 .855 .008 / .079);--colors-yellow-light-p3-a-3: color(display-p3 .988 .925 .004 / .251);--colors-yellow-light-p3-a-4: color(display-p3 .98 .875 .004 / .373);--colors-yellow-light-p3-a-5: color(display-p3 .969 .816 .004 / .491);--colors-yellow-light-p3-a-6: color(display-p3 .875 .71 0 / .526);--colors-yellow-light-p3-a-7: color(display-p3 .769 .604 0 / .542);--colors-yellow-light-p3-a-8: color(display-p3 .725 .549 0 / .687);--colors-yellow-light-p3-a-9: color(display-p3 1 .898 0 / .781);--colors-yellow-light-p3-a-10: color(display-p3 .969 .812 0 / .71);--colors-yellow-light-p3-a-11: color(display-p3 .6 .44 0);--colors-yellow-light-p3-a-12: color(display-p3 .271 .233 .137);--colors-yellow-dark-1: #14120b;--colors-yellow-dark-2: #1b180f;--colors-yellow-dark-3: #2d2305;--colors-yellow-dark-4: #362b00;--colors-yellow-dark-5: #433500;--colors-yellow-dark-6: #524202;--colors-yellow-dark-7: #665417;--colors-yellow-dark-8: #836a21;--colors-yellow-dark-9: #ffe629;--colors-yellow-dark-10: #ffff57;--colors-yellow-dark-11: #f5e147;--colors-yellow-dark-12: #f6eeb4;--colors-yellow-dark-a-1: #d1510004;--colors-yellow-dark-a-2: #f9b4000b;--colors-yellow-dark-a-3: #ffaa001e;--colors-yellow-dark-a-4: #fdb70028;--colors-yellow-dark-a-5: #febb0036;--colors-yellow-dark-a-6: #fec40046;--colors-yellow-dark-a-7: #fdcb225c;--colors-yellow-dark-a-8: #fdca327b;--colors-yellow-dark-a-9: #ffe629;--colors-yellow-dark-a-10: #ffff57;--colors-yellow-dark-a-11: #fee949f5;--colors-yellow-dark-a-12: #fef6baf6;--colors-yellow-dark-p3-1: color(display-p3 .078 .069 .047);--colors-yellow-dark-p3-2: color(display-p3 .103 .094 .063);--colors-yellow-dark-p3-3: color(display-p3 .168 .137 .039);--colors-yellow-dark-p3-4: color(display-p3 .209 .169 0);--colors-yellow-dark-p3-5: color(display-p3 .255 .209 0);--colors-yellow-dark-p3-6: color(display-p3 .31 .261 .07);--colors-yellow-dark-p3-7: color(display-p3 .389 .331 .135);--colors-yellow-dark-p3-8: color(display-p3 .497 .42 .182);--colors-yellow-dark-p3-9: color(display-p3 1 .92 .22);--colors-yellow-dark-p3-10: color(display-p3 1 1 .456);--colors-yellow-dark-p3-11: color(display-p3 .948 .885 .392);--colors-yellow-dark-p3-12: color(display-p3 .959 .934 .731);--colors-yellow-dark-p3-a-1: color(display-p3 .973 .369 0 / .013);--colors-yellow-dark-p3-a-2: color(display-p3 .996 .792 0 / .038);--colors-yellow-dark-p3-a-3: color(display-p3 .996 .71 0 / .11);--colors-yellow-dark-p3-a-4: color(display-p3 .996 .741 0 / .152);--colors-yellow-dark-p3-a-5: color(display-p3 .996 .765 0 / .202);--colors-yellow-dark-p3-a-6: color(display-p3 .996 .816 .082 / .261);--colors-yellow-dark-p3-a-7: color(display-p3 1 .831 .263 / .345);--colors-yellow-dark-p3-a-8: color(display-p3 1 .831 .314 / .463);--colors-yellow-dark-p3-a-9: color(display-p3 1 .922 .22);--colors-yellow-dark-p3-a-10: color(display-p3 1 1 .455);--colors-yellow-dark-p3-a-11: color(display-p3 .948 .885 .392);--colors-yellow-dark-p3-a-12: color(display-p3 .959 .934 .731);--colors-yellow-a-1: var(--colors-yellow-light-a-1);--colors-yellow-a-2: var(--colors-yellow-light-a-2);--colors-yellow-a-3: var(--colors-yellow-light-a-3);--colors-yellow-a-4: var(--colors-yellow-light-a-4);--colors-yellow-a-5: var(--colors-yellow-light-a-5);--colors-yellow-a-6: var(--colors-yellow-light-a-6);--colors-yellow-a-7: var(--colors-yellow-light-a-7);--colors-yellow-a-8: var(--colors-yellow-light-a-8);--colors-yellow-a-9: var(--colors-yellow-light-a-9);--colors-yellow-a-10: var(--colors-yellow-light-a-10);--colors-yellow-a-11: var(--colors-yellow-light-a-11);--colors-yellow-a-12: var(--colors-yellow-light-a-12);--colors-yellow-p3-1: var(--colors-yellow-light-p3-1);--colors-yellow-p3-2: var(--colors-yellow-light-p3-2);--colors-yellow-p3-3: var(--colors-yellow-light-p3-3);--colors-yellow-p3-4: var(--colors-yellow-light-p3-4);--colors-yellow-p3-5: var(--colors-yellow-light-p3-5);--colors-yellow-p3-6: var(--colors-yellow-light-p3-6);--colors-yellow-p3-7: var(--colors-yellow-light-p3-7);--colors-yellow-p3-8: var(--colors-yellow-light-p3-8);--colors-yellow-p3-9: var(--colors-yellow-light-p3-9);--colors-yellow-p3-10: var(--colors-yellow-light-p3-10);--colors-yellow-p3-11: var(--colors-yellow-light-p3-11);--colors-yellow-p3-12: var(--colors-yellow-light-p3-12);--colors-yellow-p3-a-1: var(--colors-yellow-light-p3-a-1);--colors-yellow-p3-a-2: var(--colors-yellow-light-p3-a-2);--colors-yellow-p3-a-3: var(--colors-yellow-light-p3-a-3);--colors-yellow-p3-a-4: var(--colors-yellow-light-p3-a-4);--colors-yellow-p3-a-5: var(--colors-yellow-light-p3-a-5);--colors-yellow-p3-a-6: var(--colors-yellow-light-p3-a-6);--colors-yellow-p3-a-7: var(--colors-yellow-light-p3-a-7);--colors-yellow-p3-a-8: var(--colors-yellow-light-p3-a-8);--colors-yellow-p3-a-9: var(--colors-yellow-light-p3-a-9);--colors-yellow-p3-a-10: var(--colors-yellow-light-p3-a-10);--colors-yellow-p3-a-11: var(--colors-yellow-light-p3-a-11);--colors-yellow-p3-a-12: var(--colors-yellow-light-p3-a-12);--colors-likec4-background: var(--mantine-color-body);--colors-likec4-tag-bg: var(--colors-tomato-9);--colors-likec4-tag-bg-hover: var(--colors-tomato-10);--colors-likec4-tag-border: var(--colors-tomato-8);--colors-likec4-tag-text: var(--colors-tomato-12);--colors-likec4-panel-bg: var(--mantine-color-body);--colors-likec4-panel-border: transparent;--colors-likec4-panel-text: color-mix(in oklab, var(--mantine-color-text) 85%, transparent 15%);--colors-likec4-panel-text-dimmed: var(--mantine-color-dimmed);--colors-likec4-panel-action: color-mix(in oklab, var(--mantine-color-text) 90%, transparent 10%);--colors-likec4-panel-action-disabled: var(--mantine-color-dimmed);--colors-likec4-panel-action-hover: var(--mantine-color-bright);--colors-likec4-panel-action-bg: var(--mantine-color-gray-1);--colors-likec4-panel-action-bg-hover: var(--mantine-color-gray-2);--colors-likec4-panel-action-warning: var(--mantine-color-orange-6);--colors-likec4-panel-action-warning-hover: var(--mantine-color-orange-7);--colors-likec4-panel-action-warning-bg: color-mix(in oklab, var(--mantine-color-orange-1) 90%, transparent 10%);--colors-likec4-panel-action-warning-bg-hover: color-mix(in oklab, var(--mantine-color-orange-3) 70%, transparent 30%);--colors-likec4-dropdown-bg: #FFF;--colors-likec4-dropdown-border: var(--colors-likec4-panel-border);--colors-likec4-overlay-backdrop: rgb(34 34 34);--colors-likec4-overlay-body: var(--mantine-color-body);--colors-likec4-overlay-border: color-mix(in oklab, var(--mantine-color-default-border) 50%, transparent 50%);--colors-likec4-compare-latest: var(--mantine-color-green-6)}[data-mantine-color-scheme=dark]{--colors-amber-1: var(--colors-amber-dark-1);--colors-amber-2: var(--colors-amber-dark-2);--colors-amber-3: var(--colors-amber-dark-3);--colors-amber-4: var(--colors-amber-dark-4);--colors-amber-5: var(--colors-amber-dark-5);--colors-amber-6: var(--colors-amber-dark-6);--colors-amber-7: var(--colors-amber-dark-7);--colors-amber-8: var(--colors-amber-dark-8);--colors-amber-9: var(--colors-amber-dark-9);--colors-amber-10: var(--colors-amber-dark-10);--colors-amber-11: var(--colors-amber-dark-11);--colors-amber-12: var(--colors-amber-dark-12);--colors-amber-a-1: var(--colors-amber-dark-a-1);--colors-amber-a-2: var(--colors-amber-dark-a-2);--colors-amber-a-3: var(--colors-amber-dark-a-3);--colors-amber-a-4: var(--colors-amber-dark-a-4);--colors-amber-a-5: var(--colors-amber-dark-a-5);--colors-amber-a-6: var(--colors-amber-dark-a-6);--colors-amber-a-7: var(--colors-amber-dark-a-7);--colors-amber-a-8: var(--colors-amber-dark-a-8);--colors-amber-a-9: var(--colors-amber-dark-a-9);--colors-amber-a-10: var(--colors-amber-dark-a-10);--colors-amber-a-11: var(--colors-amber-dark-a-11);--colors-amber-a-12: var(--colors-amber-dark-a-12);--colors-amber-p3-1: var(--colors-amber-dark-p3-1);--colors-amber-p3-2: var(--colors-amber-dark-p3-2);--colors-amber-p3-3: var(--colors-amber-dark-p3-3);--colors-amber-p3-4: var(--colors-amber-dark-p3-4);--colors-amber-p3-5: var(--colors-amber-dark-p3-5);--colors-amber-p3-6: var(--colors-amber-dark-p3-6);--colors-amber-p3-7: var(--colors-amber-dark-p3-7);--colors-amber-p3-8: var(--colors-amber-dark-p3-8);--colors-amber-p3-9: var(--colors-amber-dark-p3-9);--colors-amber-p3-10: var(--colors-amber-dark-p3-10);--colors-amber-p3-11: var(--colors-amber-dark-p3-11);--colors-amber-p3-12: var(--colors-amber-dark-p3-12);--colors-amber-p3-a-1: var(--colors-amber-dark-p3-a-1);--colors-amber-p3-a-2: var(--colors-amber-dark-p3-a-2);--colors-amber-p3-a-3: var(--colors-amber-dark-p3-a-3);--colors-amber-p3-a-4: var(--colors-amber-dark-p3-a-4);--colors-amber-p3-a-5: var(--colors-amber-dark-p3-a-5);--colors-amber-p3-a-6: var(--colors-amber-dark-p3-a-6);--colors-amber-p3-a-7: var(--colors-amber-dark-p3-a-7);--colors-amber-p3-a-8: var(--colors-amber-dark-p3-a-8);--colors-amber-p3-a-9: var(--colors-amber-dark-p3-a-9);--colors-amber-p3-a-10: var(--colors-amber-dark-p3-a-10);--colors-amber-p3-a-11: var(--colors-amber-dark-p3-a-11);--colors-amber-p3-a-12: var(--colors-amber-dark-p3-a-12);--colors-blue-1: var(--colors-blue-dark-1);--colors-blue-2: var(--colors-blue-dark-2);--colors-blue-3: var(--colors-blue-dark-3);--colors-blue-4: var(--colors-blue-dark-4);--colors-blue-5: var(--colors-blue-dark-5);--colors-blue-6: var(--colors-blue-dark-6);--colors-blue-7: var(--colors-blue-dark-7);--colors-blue-8: var(--colors-blue-dark-8);--colors-blue-9: var(--colors-blue-dark-9);--colors-blue-10: var(--colors-blue-dark-10);--colors-blue-11: var(--colors-blue-dark-11);--colors-blue-12: var(--colors-blue-dark-12);--colors-blue-a-1: var(--colors-blue-dark-a-1);--colors-blue-a-2: var(--colors-blue-dark-a-2);--colors-blue-a-3: var(--colors-blue-dark-a-3);--colors-blue-a-4: var(--colors-blue-dark-a-4);--colors-blue-a-5: var(--colors-blue-dark-a-5);--colors-blue-a-6: var(--colors-blue-dark-a-6);--colors-blue-a-7: var(--colors-blue-dark-a-7);--colors-blue-a-8: var(--colors-blue-dark-a-8);--colors-blue-a-9: var(--colors-blue-dark-a-9);--colors-blue-a-10: var(--colors-blue-dark-a-10);--colors-blue-a-11: var(--colors-blue-dark-a-11);--colors-blue-a-12: var(--colors-blue-dark-a-12);--colors-blue-p3-1: var(--colors-blue-dark-p3-1);--colors-blue-p3-2: var(--colors-blue-dark-p3-2);--colors-blue-p3-3: var(--colors-blue-dark-p3-3);--colors-blue-p3-4: var(--colors-blue-dark-p3-4);--colors-blue-p3-5: var(--colors-blue-dark-p3-5);--colors-blue-p3-6: var(--colors-blue-dark-p3-6);--colors-blue-p3-7: var(--colors-blue-dark-p3-7);--colors-blue-p3-8: var(--colors-blue-dark-p3-8);--colors-blue-p3-9: var(--colors-blue-dark-p3-9);--colors-blue-p3-10: var(--colors-blue-dark-p3-10);--colors-blue-p3-11: var(--colors-blue-dark-p3-11);--colors-blue-p3-12: var(--colors-blue-dark-p3-12);--colors-blue-p3-a-1: var(--colors-blue-dark-p3-a-1);--colors-blue-p3-a-2: var(--colors-blue-dark-p3-a-2);--colors-blue-p3-a-3: var(--colors-blue-dark-p3-a-3);--colors-blue-p3-a-4: var(--colors-blue-dark-p3-a-4);--colors-blue-p3-a-5: var(--colors-blue-dark-p3-a-5);--colors-blue-p3-a-6: var(--colors-blue-dark-p3-a-6);--colors-blue-p3-a-7: var(--colors-blue-dark-p3-a-7);--colors-blue-p3-a-8: var(--colors-blue-dark-p3-a-8);--colors-blue-p3-a-9: var(--colors-blue-dark-p3-a-9);--colors-blue-p3-a-10: var(--colors-blue-dark-p3-a-10);--colors-blue-p3-a-11: var(--colors-blue-dark-p3-a-11);--colors-blue-p3-a-12: var(--colors-blue-dark-p3-a-12);--colors-crimson-1: var(--colors-crimson-dark-1);--colors-crimson-2: var(--colors-crimson-dark-2);--colors-crimson-3: var(--colors-crimson-dark-3);--colors-crimson-4: var(--colors-crimson-dark-4);--colors-crimson-5: var(--colors-crimson-dark-5);--colors-crimson-6: var(--colors-crimson-dark-6);--colors-crimson-7: var(--colors-crimson-dark-7);--colors-crimson-8: var(--colors-crimson-dark-8);--colors-crimson-9: var(--colors-crimson-dark-9);--colors-crimson-10: var(--colors-crimson-dark-10);--colors-crimson-11: var(--colors-crimson-dark-11);--colors-crimson-12: var(--colors-crimson-dark-12);--colors-crimson-a-1: var(--colors-crimson-dark-a-1);--colors-crimson-a-2: var(--colors-crimson-dark-a-2);--colors-crimson-a-3: var(--colors-crimson-dark-a-3);--colors-crimson-a-4: var(--colors-crimson-dark-a-4);--colors-crimson-a-5: var(--colors-crimson-dark-a-5);--colors-crimson-a-6: var(--colors-crimson-dark-a-6);--colors-crimson-a-7: var(--colors-crimson-dark-a-7);--colors-crimson-a-8: var(--colors-crimson-dark-a-8);--colors-crimson-a-9: var(--colors-crimson-dark-a-9);--colors-crimson-a-10: var(--colors-crimson-dark-a-10);--colors-crimson-a-11: var(--colors-crimson-dark-a-11);--colors-crimson-a-12: var(--colors-crimson-dark-a-12);--colors-crimson-p3-1: var(--colors-crimson-dark-p3-1);--colors-crimson-p3-2: var(--colors-crimson-dark-p3-2);--colors-crimson-p3-3: var(--colors-crimson-dark-p3-3);--colors-crimson-p3-4: var(--colors-crimson-dark-p3-4);--colors-crimson-p3-5: var(--colors-crimson-dark-p3-5);--colors-crimson-p3-6: var(--colors-crimson-dark-p3-6);--colors-crimson-p3-7: var(--colors-crimson-dark-p3-7);--colors-crimson-p3-8: var(--colors-crimson-dark-p3-8);--colors-crimson-p3-9: var(--colors-crimson-dark-p3-9);--colors-crimson-p3-10: var(--colors-crimson-dark-p3-10);--colors-crimson-p3-11: var(--colors-crimson-dark-p3-11);--colors-crimson-p3-12: var(--colors-crimson-dark-p3-12);--colors-crimson-p3-a-1: var(--colors-crimson-dark-p3-a-1);--colors-crimson-p3-a-2: var(--colors-crimson-dark-p3-a-2);--colors-crimson-p3-a-3: var(--colors-crimson-dark-p3-a-3);--colors-crimson-p3-a-4: var(--colors-crimson-dark-p3-a-4);--colors-crimson-p3-a-5: var(--colors-crimson-dark-p3-a-5);--colors-crimson-p3-a-6: var(--colors-crimson-dark-p3-a-6);--colors-crimson-p3-a-7: var(--colors-crimson-dark-p3-a-7);--colors-crimson-p3-a-8: var(--colors-crimson-dark-p3-a-8);--colors-crimson-p3-a-9: var(--colors-crimson-dark-p3-a-9);--colors-crimson-p3-a-10: var(--colors-crimson-dark-p3-a-10);--colors-crimson-p3-a-11: var(--colors-crimson-dark-p3-a-11);--colors-crimson-p3-a-12: var(--colors-crimson-dark-p3-a-12);--colors-grass-1: var(--colors-grass-dark-1);--colors-grass-2: var(--colors-grass-dark-2);--colors-grass-3: var(--colors-grass-dark-3);--colors-grass-4: var(--colors-grass-dark-4);--colors-grass-5: var(--colors-grass-dark-5);--colors-grass-6: var(--colors-grass-dark-6);--colors-grass-7: var(--colors-grass-dark-7);--colors-grass-8: var(--colors-grass-dark-8);--colors-grass-9: var(--colors-grass-dark-9);--colors-grass-10: var(--colors-grass-dark-10);--colors-grass-11: var(--colors-grass-dark-11);--colors-grass-12: var(--colors-grass-dark-12);--colors-grass-a-1: var(--colors-grass-dark-a-1);--colors-grass-a-2: var(--colors-grass-dark-a-2);--colors-grass-a-3: var(--colors-grass-dark-a-3);--colors-grass-a-4: var(--colors-grass-dark-a-4);--colors-grass-a-5: var(--colors-grass-dark-a-5);--colors-grass-a-6: var(--colors-grass-dark-a-6);--colors-grass-a-7: var(--colors-grass-dark-a-7);--colors-grass-a-8: var(--colors-grass-dark-a-8);--colors-grass-a-9: var(--colors-grass-dark-a-9);--colors-grass-a-10: var(--colors-grass-dark-a-10);--colors-grass-a-11: var(--colors-grass-dark-a-11);--colors-grass-a-12: var(--colors-grass-dark-a-12);--colors-grass-p3-1: var(--colors-grass-dark-p3-1);--colors-grass-p3-2: var(--colors-grass-dark-p3-2);--colors-grass-p3-3: var(--colors-grass-dark-p3-3);--colors-grass-p3-4: var(--colors-grass-dark-p3-4);--colors-grass-p3-5: var(--colors-grass-dark-p3-5);--colors-grass-p3-6: var(--colors-grass-dark-p3-6);--colors-grass-p3-7: var(--colors-grass-dark-p3-7);--colors-grass-p3-8: var(--colors-grass-dark-p3-8);--colors-grass-p3-9: var(--colors-grass-dark-p3-9);--colors-grass-p3-10: var(--colors-grass-dark-p3-10);--colors-grass-p3-11: var(--colors-grass-dark-p3-11);--colors-grass-p3-12: var(--colors-grass-dark-p3-12);--colors-grass-p3-a-1: var(--colors-grass-dark-p3-a-1);--colors-grass-p3-a-2: var(--colors-grass-dark-p3-a-2);--colors-grass-p3-a-3: var(--colors-grass-dark-p3-a-3);--colors-grass-p3-a-4: var(--colors-grass-dark-p3-a-4);--colors-grass-p3-a-5: var(--colors-grass-dark-p3-a-5);--colors-grass-p3-a-6: var(--colors-grass-dark-p3-a-6);--colors-grass-p3-a-7: var(--colors-grass-dark-p3-a-7);--colors-grass-p3-a-8: var(--colors-grass-dark-p3-a-8);--colors-grass-p3-a-9: var(--colors-grass-dark-p3-a-9);--colors-grass-p3-a-10: var(--colors-grass-dark-p3-a-10);--colors-grass-p3-a-11: var(--colors-grass-dark-p3-a-11);--colors-grass-p3-a-12: var(--colors-grass-dark-p3-a-12);--colors-indigo-1: var(--colors-indigo-dark-1);--colors-indigo-2: var(--colors-indigo-dark-2);--colors-indigo-3: var(--colors-indigo-dark-3);--colors-indigo-4: var(--colors-indigo-dark-4);--colors-indigo-5: var(--colors-indigo-dark-5);--colors-indigo-6: var(--colors-indigo-dark-6);--colors-indigo-7: var(--colors-indigo-dark-7);--colors-indigo-8: var(--colors-indigo-dark-8);--colors-indigo-9: var(--colors-indigo-dark-9);--colors-indigo-10: var(--colors-indigo-dark-10);--colors-indigo-11: var(--colors-indigo-dark-11);--colors-indigo-12: var(--colors-indigo-dark-12);--colors-indigo-a-1: var(--colors-indigo-dark-a-1);--colors-indigo-a-2: var(--colors-indigo-dark-a-2);--colors-indigo-a-3: var(--colors-indigo-dark-a-3);--colors-indigo-a-4: var(--colors-indigo-dark-a-4);--colors-indigo-a-5: var(--colors-indigo-dark-a-5);--colors-indigo-a-6: var(--colors-indigo-dark-a-6);--colors-indigo-a-7: var(--colors-indigo-dark-a-7);--colors-indigo-a-8: var(--colors-indigo-dark-a-8);--colors-indigo-a-9: var(--colors-indigo-dark-a-9);--colors-indigo-a-10: var(--colors-indigo-dark-a-10);--colors-indigo-a-11: var(--colors-indigo-dark-a-11);--colors-indigo-a-12: var(--colors-indigo-dark-a-12);--colors-indigo-p3-1: var(--colors-indigo-dark-p3-1);--colors-indigo-p3-2: var(--colors-indigo-dark-p3-2);--colors-indigo-p3-3: var(--colors-indigo-dark-p3-3);--colors-indigo-p3-4: var(--colors-indigo-dark-p3-4);--colors-indigo-p3-5: var(--colors-indigo-dark-p3-5);--colors-indigo-p3-6: var(--colors-indigo-dark-p3-6);--colors-indigo-p3-7: var(--colors-indigo-dark-p3-7);--colors-indigo-p3-8: var(--colors-indigo-dark-p3-8);--colors-indigo-p3-9: var(--colors-indigo-dark-p3-9);--colors-indigo-p3-10: var(--colors-indigo-dark-p3-10);--colors-indigo-p3-11: var(--colors-indigo-dark-p3-11);--colors-indigo-p3-12: var(--colors-indigo-dark-p3-12);--colors-indigo-p3-a-1: var(--colors-indigo-dark-p3-a-1);--colors-indigo-p3-a-2: var(--colors-indigo-dark-p3-a-2);--colors-indigo-p3-a-3: var(--colors-indigo-dark-p3-a-3);--colors-indigo-p3-a-4: var(--colors-indigo-dark-p3-a-4);--colors-indigo-p3-a-5: var(--colors-indigo-dark-p3-a-5);--colors-indigo-p3-a-6: var(--colors-indigo-dark-p3-a-6);--colors-indigo-p3-a-7: var(--colors-indigo-dark-p3-a-7);--colors-indigo-p3-a-8: var(--colors-indigo-dark-p3-a-8);--colors-indigo-p3-a-9: var(--colors-indigo-dark-p3-a-9);--colors-indigo-p3-a-10: var(--colors-indigo-dark-p3-a-10);--colors-indigo-p3-a-11: var(--colors-indigo-dark-p3-a-11);--colors-indigo-p3-a-12: var(--colors-indigo-dark-p3-a-12);--colors-lime-1: var(--colors-lime-dark-1);--colors-lime-2: var(--colors-lime-dark-2);--colors-lime-3: var(--colors-lime-dark-3);--colors-lime-4: var(--colors-lime-dark-4);--colors-lime-5: var(--colors-lime-dark-5);--colors-lime-6: var(--colors-lime-dark-6);--colors-lime-7: var(--colors-lime-dark-7);--colors-lime-8: var(--colors-lime-dark-8);--colors-lime-9: var(--colors-lime-dark-9);--colors-lime-10: var(--colors-lime-dark-10);--colors-lime-11: var(--colors-lime-dark-11);--colors-lime-12: var(--colors-lime-dark-12);--colors-lime-a-1: var(--colors-lime-dark-a-1);--colors-lime-a-2: var(--colors-lime-dark-a-2);--colors-lime-a-3: var(--colors-lime-dark-a-3);--colors-lime-a-4: var(--colors-lime-dark-a-4);--colors-lime-a-5: var(--colors-lime-dark-a-5);--colors-lime-a-6: var(--colors-lime-dark-a-6);--colors-lime-a-7: var(--colors-lime-dark-a-7);--colors-lime-a-8: var(--colors-lime-dark-a-8);--colors-lime-a-9: var(--colors-lime-dark-a-9);--colors-lime-a-10: var(--colors-lime-dark-a-10);--colors-lime-a-11: var(--colors-lime-dark-a-11);--colors-lime-a-12: var(--colors-lime-dark-a-12);--colors-lime-p3-1: var(--colors-lime-dark-p3-1);--colors-lime-p3-2: var(--colors-lime-dark-p3-2);--colors-lime-p3-3: var(--colors-lime-dark-p3-3);--colors-lime-p3-4: var(--colors-lime-dark-p3-4);--colors-lime-p3-5: var(--colors-lime-dark-p3-5);--colors-lime-p3-6: var(--colors-lime-dark-p3-6);--colors-lime-p3-7: var(--colors-lime-dark-p3-7);--colors-lime-p3-8: var(--colors-lime-dark-p3-8);--colors-lime-p3-9: var(--colors-lime-dark-p3-9);--colors-lime-p3-10: var(--colors-lime-dark-p3-10);--colors-lime-p3-11: var(--colors-lime-dark-p3-11);--colors-lime-p3-12: var(--colors-lime-dark-p3-12);--colors-lime-p3-a-1: var(--colors-lime-dark-p3-a-1);--colors-lime-p3-a-2: var(--colors-lime-dark-p3-a-2);--colors-lime-p3-a-3: var(--colors-lime-dark-p3-a-3);--colors-lime-p3-a-4: var(--colors-lime-dark-p3-a-4);--colors-lime-p3-a-5: var(--colors-lime-dark-p3-a-5);--colors-lime-p3-a-6: var(--colors-lime-dark-p3-a-6);--colors-lime-p3-a-7: var(--colors-lime-dark-p3-a-7);--colors-lime-p3-a-8: var(--colors-lime-dark-p3-a-8);--colors-lime-p3-a-9: var(--colors-lime-dark-p3-a-9);--colors-lime-p3-a-10: var(--colors-lime-dark-p3-a-10);--colors-lime-p3-a-11: var(--colors-lime-dark-p3-a-11);--colors-lime-p3-a-12: var(--colors-lime-dark-p3-a-12);--colors-orange-1: var(--colors-orange-dark-1);--colors-orange-2: var(--colors-orange-dark-2);--colors-orange-3: var(--colors-orange-dark-3);--colors-orange-4: var(--colors-orange-dark-4);--colors-orange-5: var(--colors-orange-dark-5);--colors-orange-6: var(--colors-orange-dark-6);--colors-orange-7: var(--colors-orange-dark-7);--colors-orange-8: var(--colors-orange-dark-8);--colors-orange-9: var(--colors-orange-dark-9);--colors-orange-10: var(--colors-orange-dark-10);--colors-orange-11: var(--colors-orange-dark-11);--colors-orange-12: var(--colors-orange-dark-12);--colors-orange-a-1: var(--colors-orange-dark-a-1);--colors-orange-a-2: var(--colors-orange-dark-a-2);--colors-orange-a-3: var(--colors-orange-dark-a-3);--colors-orange-a-4: var(--colors-orange-dark-a-4);--colors-orange-a-5: var(--colors-orange-dark-a-5);--colors-orange-a-6: var(--colors-orange-dark-a-6);--colors-orange-a-7: var(--colors-orange-dark-a-7);--colors-orange-a-8: var(--colors-orange-dark-a-8);--colors-orange-a-9: var(--colors-orange-dark-a-9);--colors-orange-a-10: var(--colors-orange-dark-a-10);--colors-orange-a-11: var(--colors-orange-dark-a-11);--colors-orange-a-12: var(--colors-orange-dark-a-12);--colors-orange-p3-1: var(--colors-orange-dark-p3-1);--colors-orange-p3-2: var(--colors-orange-dark-p3-2);--colors-orange-p3-3: var(--colors-orange-dark-p3-3);--colors-orange-p3-4: var(--colors-orange-dark-p3-4);--colors-orange-p3-5: var(--colors-orange-dark-p3-5);--colors-orange-p3-6: var(--colors-orange-dark-p3-6);--colors-orange-p3-7: var(--colors-orange-dark-p3-7);--colors-orange-p3-8: var(--colors-orange-dark-p3-8);--colors-orange-p3-9: var(--colors-orange-dark-p3-9);--colors-orange-p3-10: var(--colors-orange-dark-p3-10);--colors-orange-p3-11: var(--colors-orange-dark-p3-11);--colors-orange-p3-12: var(--colors-orange-dark-p3-12);--colors-orange-p3-a-1: var(--colors-orange-dark-p3-a-1);--colors-orange-p3-a-2: var(--colors-orange-dark-p3-a-2);--colors-orange-p3-a-3: var(--colors-orange-dark-p3-a-3);--colors-orange-p3-a-4: var(--colors-orange-dark-p3-a-4);--colors-orange-p3-a-5: var(--colors-orange-dark-p3-a-5);--colors-orange-p3-a-6: var(--colors-orange-dark-p3-a-6);--colors-orange-p3-a-7: var(--colors-orange-dark-p3-a-7);--colors-orange-p3-a-8: var(--colors-orange-dark-p3-a-8);--colors-orange-p3-a-9: var(--colors-orange-dark-p3-a-9);--colors-orange-p3-a-10: var(--colors-orange-dark-p3-a-10);--colors-orange-p3-a-11: var(--colors-orange-dark-p3-a-11);--colors-orange-p3-a-12: var(--colors-orange-dark-p3-a-12);--colors-pink-1: var(--colors-pink-dark-1);--colors-pink-2: var(--colors-pink-dark-2);--colors-pink-3: var(--colors-pink-dark-3);--colors-pink-4: var(--colors-pink-dark-4);--colors-pink-5: var(--colors-pink-dark-5);--colors-pink-6: var(--colors-pink-dark-6);--colors-pink-7: var(--colors-pink-dark-7);--colors-pink-8: var(--colors-pink-dark-8);--colors-pink-9: var(--colors-pink-dark-9);--colors-pink-10: var(--colors-pink-dark-10);--colors-pink-11: var(--colors-pink-dark-11);--colors-pink-12: var(--colors-pink-dark-12);--colors-pink-a-1: var(--colors-pink-dark-a-1);--colors-pink-a-2: var(--colors-pink-dark-a-2);--colors-pink-a-3: var(--colors-pink-dark-a-3);--colors-pink-a-4: var(--colors-pink-dark-a-4);--colors-pink-a-5: var(--colors-pink-dark-a-5);--colors-pink-a-6: var(--colors-pink-dark-a-6);--colors-pink-a-7: var(--colors-pink-dark-a-7);--colors-pink-a-8: var(--colors-pink-dark-a-8);--colors-pink-a-9: var(--colors-pink-dark-a-9);--colors-pink-a-10: var(--colors-pink-dark-a-10);--colors-pink-a-11: var(--colors-pink-dark-a-11);--colors-pink-a-12: var(--colors-pink-dark-a-12);--colors-pink-p3-1: var(--colors-pink-dark-p3-1);--colors-pink-p3-2: var(--colors-pink-dark-p3-2);--colors-pink-p3-3: var(--colors-pink-dark-p3-3);--colors-pink-p3-4: var(--colors-pink-dark-p3-4);--colors-pink-p3-5: var(--colors-pink-dark-p3-5);--colors-pink-p3-6: var(--colors-pink-dark-p3-6);--colors-pink-p3-7: var(--colors-pink-dark-p3-7);--colors-pink-p3-8: var(--colors-pink-dark-p3-8);--colors-pink-p3-9: var(--colors-pink-dark-p3-9);--colors-pink-p3-10: var(--colors-pink-dark-p3-10);--colors-pink-p3-11: var(--colors-pink-dark-p3-11);--colors-pink-p3-12: var(--colors-pink-dark-p3-12);--colors-pink-p3-a-1: var(--colors-pink-dark-p3-a-1);--colors-pink-p3-a-2: var(--colors-pink-dark-p3-a-2);--colors-pink-p3-a-3: var(--colors-pink-dark-p3-a-3);--colors-pink-p3-a-4: var(--colors-pink-dark-p3-a-4);--colors-pink-p3-a-5: var(--colors-pink-dark-p3-a-5);--colors-pink-p3-a-6: var(--colors-pink-dark-p3-a-6);--colors-pink-p3-a-7: var(--colors-pink-dark-p3-a-7);--colors-pink-p3-a-8: var(--colors-pink-dark-p3-a-8);--colors-pink-p3-a-9: var(--colors-pink-dark-p3-a-9);--colors-pink-p3-a-10: var(--colors-pink-dark-p3-a-10);--colors-pink-p3-a-11: var(--colors-pink-dark-p3-a-11);--colors-pink-p3-a-12: var(--colors-pink-dark-p3-a-12);--colors-purple-1: var(--colors-purple-dark-1);--colors-purple-2: var(--colors-purple-dark-2);--colors-purple-3: var(--colors-purple-dark-3);--colors-purple-4: var(--colors-purple-dark-4);--colors-purple-5: var(--colors-purple-dark-5);--colors-purple-6: var(--colors-purple-dark-6);--colors-purple-7: var(--colors-purple-dark-7);--colors-purple-8: var(--colors-purple-dark-8);--colors-purple-9: var(--colors-purple-dark-9);--colors-purple-10: var(--colors-purple-dark-10);--colors-purple-11: var(--colors-purple-dark-11);--colors-purple-12: var(--colors-purple-dark-12);--colors-purple-a-1: var(--colors-purple-dark-a-1);--colors-purple-a-2: var(--colors-purple-dark-a-2);--colors-purple-a-3: var(--colors-purple-dark-a-3);--colors-purple-a-4: var(--colors-purple-dark-a-4);--colors-purple-a-5: var(--colors-purple-dark-a-5);--colors-purple-a-6: var(--colors-purple-dark-a-6);--colors-purple-a-7: var(--colors-purple-dark-a-7);--colors-purple-a-8: var(--colors-purple-dark-a-8);--colors-purple-a-9: var(--colors-purple-dark-a-9);--colors-purple-a-10: var(--colors-purple-dark-a-10);--colors-purple-a-11: var(--colors-purple-dark-a-11);--colors-purple-a-12: var(--colors-purple-dark-a-12);--colors-purple-p3-1: var(--colors-purple-dark-p3-1);--colors-purple-p3-2: var(--colors-purple-dark-p3-2);--colors-purple-p3-3: var(--colors-purple-dark-p3-3);--colors-purple-p3-4: var(--colors-purple-dark-p3-4);--colors-purple-p3-5: var(--colors-purple-dark-p3-5);--colors-purple-p3-6: var(--colors-purple-dark-p3-6);--colors-purple-p3-7: var(--colors-purple-dark-p3-7);--colors-purple-p3-8: var(--colors-purple-dark-p3-8);--colors-purple-p3-9: var(--colors-purple-dark-p3-9);--colors-purple-p3-10: var(--colors-purple-dark-p3-10);--colors-purple-p3-11: var(--colors-purple-dark-p3-11);--colors-purple-p3-12: var(--colors-purple-dark-p3-12);--colors-purple-p3-a-1: var(--colors-purple-dark-p3-a-1);--colors-purple-p3-a-2: var(--colors-purple-dark-p3-a-2);--colors-purple-p3-a-3: var(--colors-purple-dark-p3-a-3);--colors-purple-p3-a-4: var(--colors-purple-dark-p3-a-4);--colors-purple-p3-a-5: var(--colors-purple-dark-p3-a-5);--colors-purple-p3-a-6: var(--colors-purple-dark-p3-a-6);--colors-purple-p3-a-7: var(--colors-purple-dark-p3-a-7);--colors-purple-p3-a-8: var(--colors-purple-dark-p3-a-8);--colors-purple-p3-a-9: var(--colors-purple-dark-p3-a-9);--colors-purple-p3-a-10: var(--colors-purple-dark-p3-a-10);--colors-purple-p3-a-11: var(--colors-purple-dark-p3-a-11);--colors-purple-p3-a-12: var(--colors-purple-dark-p3-a-12);--colors-red-1: var(--colors-red-dark-1);--colors-red-2: var(--colors-red-dark-2);--colors-red-3: var(--colors-red-dark-3);--colors-red-4: var(--colors-red-dark-4);--colors-red-5: var(--colors-red-dark-5);--colors-red-6: var(--colors-red-dark-6);--colors-red-7: var(--colors-red-dark-7);--colors-red-8: var(--colors-red-dark-8);--colors-red-9: var(--colors-red-dark-9);--colors-red-10: var(--colors-red-dark-10);--colors-red-11: var(--colors-red-dark-11);--colors-red-12: var(--colors-red-dark-12);--colors-red-a-1: var(--colors-red-dark-a-1);--colors-red-a-2: var(--colors-red-dark-a-2);--colors-red-a-3: var(--colors-red-dark-a-3);--colors-red-a-4: var(--colors-red-dark-a-4);--colors-red-a-5: var(--colors-red-dark-a-5);--colors-red-a-6: var(--colors-red-dark-a-6);--colors-red-a-7: var(--colors-red-dark-a-7);--colors-red-a-8: var(--colors-red-dark-a-8);--colors-red-a-9: var(--colors-red-dark-a-9);--colors-red-a-10: var(--colors-red-dark-a-10);--colors-red-a-11: var(--colors-red-dark-a-11);--colors-red-a-12: var(--colors-red-dark-a-12);--colors-red-p3-1: var(--colors-red-dark-p3-1);--colors-red-p3-2: var(--colors-red-dark-p3-2);--colors-red-p3-3: var(--colors-red-dark-p3-3);--colors-red-p3-4: var(--colors-red-dark-p3-4);--colors-red-p3-5: var(--colors-red-dark-p3-5);--colors-red-p3-6: var(--colors-red-dark-p3-6);--colors-red-p3-7: var(--colors-red-dark-p3-7);--colors-red-p3-8: var(--colors-red-dark-p3-8);--colors-red-p3-9: var(--colors-red-dark-p3-9);--colors-red-p3-10: var(--colors-red-dark-p3-10);--colors-red-p3-11: var(--colors-red-dark-p3-11);--colors-red-p3-12: var(--colors-red-dark-p3-12);--colors-red-p3-a-1: var(--colors-red-dark-p3-a-1);--colors-red-p3-a-2: var(--colors-red-dark-p3-a-2);--colors-red-p3-a-3: var(--colors-red-dark-p3-a-3);--colors-red-p3-a-4: var(--colors-red-dark-p3-a-4);--colors-red-p3-a-5: var(--colors-red-dark-p3-a-5);--colors-red-p3-a-6: var(--colors-red-dark-p3-a-6);--colors-red-p3-a-7: var(--colors-red-dark-p3-a-7);--colors-red-p3-a-8: var(--colors-red-dark-p3-a-8);--colors-red-p3-a-9: var(--colors-red-dark-p3-a-9);--colors-red-p3-a-10: var(--colors-red-dark-p3-a-10);--colors-red-p3-a-11: var(--colors-red-dark-p3-a-11);--colors-red-p3-a-12: var(--colors-red-dark-p3-a-12);--colors-ruby-1: var(--colors-ruby-dark-1);--colors-ruby-2: var(--colors-ruby-dark-2);--colors-ruby-3: var(--colors-ruby-dark-3);--colors-ruby-4: var(--colors-ruby-dark-4);--colors-ruby-5: var(--colors-ruby-dark-5);--colors-ruby-6: var(--colors-ruby-dark-6);--colors-ruby-7: var(--colors-ruby-dark-7);--colors-ruby-8: var(--colors-ruby-dark-8);--colors-ruby-9: var(--colors-ruby-dark-9);--colors-ruby-10: var(--colors-ruby-dark-10);--colors-ruby-11: var(--colors-ruby-dark-11);--colors-ruby-12: var(--colors-ruby-dark-12);--colors-ruby-a-1: var(--colors-ruby-dark-a-1);--colors-ruby-a-2: var(--colors-ruby-dark-a-2);--colors-ruby-a-3: var(--colors-ruby-dark-a-3);--colors-ruby-a-4: var(--colors-ruby-dark-a-4);--colors-ruby-a-5: var(--colors-ruby-dark-a-5);--colors-ruby-a-6: var(--colors-ruby-dark-a-6);--colors-ruby-a-7: var(--colors-ruby-dark-a-7);--colors-ruby-a-8: var(--colors-ruby-dark-a-8);--colors-ruby-a-9: var(--colors-ruby-dark-a-9);--colors-ruby-a-10: var(--colors-ruby-dark-a-10);--colors-ruby-a-11: var(--colors-ruby-dark-a-11);--colors-ruby-a-12: var(--colors-ruby-dark-a-12);--colors-ruby-p3-1: var(--colors-ruby-dark-p3-1);--colors-ruby-p3-2: var(--colors-ruby-dark-p3-2);--colors-ruby-p3-3: var(--colors-ruby-dark-p3-3);--colors-ruby-p3-4: var(--colors-ruby-dark-p3-4);--colors-ruby-p3-5: var(--colors-ruby-dark-p3-5);--colors-ruby-p3-6: var(--colors-ruby-dark-p3-6);--colors-ruby-p3-7: var(--colors-ruby-dark-p3-7);--colors-ruby-p3-8: var(--colors-ruby-dark-p3-8);--colors-ruby-p3-9: var(--colors-ruby-dark-p3-9);--colors-ruby-p3-10: var(--colors-ruby-dark-p3-10);--colors-ruby-p3-11: var(--colors-ruby-dark-p3-11);--colors-ruby-p3-12: var(--colors-ruby-dark-p3-12);--colors-ruby-p3-a-1: var(--colors-ruby-dark-p3-a-1);--colors-ruby-p3-a-2: var(--colors-ruby-dark-p3-a-2);--colors-ruby-p3-a-3: var(--colors-ruby-dark-p3-a-3);--colors-ruby-p3-a-4: var(--colors-ruby-dark-p3-a-4);--colors-ruby-p3-a-5: var(--colors-ruby-dark-p3-a-5);--colors-ruby-p3-a-6: var(--colors-ruby-dark-p3-a-6);--colors-ruby-p3-a-7: var(--colors-ruby-dark-p3-a-7);--colors-ruby-p3-a-8: var(--colors-ruby-dark-p3-a-8);--colors-ruby-p3-a-9: var(--colors-ruby-dark-p3-a-9);--colors-ruby-p3-a-10: var(--colors-ruby-dark-p3-a-10);--colors-ruby-p3-a-11: var(--colors-ruby-dark-p3-a-11);--colors-ruby-p3-a-12: var(--colors-ruby-dark-p3-a-12);--colors-teal-1: var(--colors-teal-dark-1);--colors-teal-2: var(--colors-teal-dark-2);--colors-teal-3: var(--colors-teal-dark-3);--colors-teal-4: var(--colors-teal-dark-4);--colors-teal-5: var(--colors-teal-dark-5);--colors-teal-6: var(--colors-teal-dark-6);--colors-teal-7: var(--colors-teal-dark-7);--colors-teal-8: var(--colors-teal-dark-8);--colors-teal-9: var(--colors-teal-dark-9);--colors-teal-10: var(--colors-teal-dark-10);--colors-teal-11: var(--colors-teal-dark-11);--colors-teal-12: var(--colors-teal-dark-12);--colors-teal-a-1: var(--colors-teal-dark-a-1);--colors-teal-a-2: var(--colors-teal-dark-a-2);--colors-teal-a-3: var(--colors-teal-dark-a-3);--colors-teal-a-4: var(--colors-teal-dark-a-4);--colors-teal-a-5: var(--colors-teal-dark-a-5);--colors-teal-a-6: var(--colors-teal-dark-a-6);--colors-teal-a-7: var(--colors-teal-dark-a-7);--colors-teal-a-8: var(--colors-teal-dark-a-8);--colors-teal-a-9: var(--colors-teal-dark-a-9);--colors-teal-a-10: var(--colors-teal-dark-a-10);--colors-teal-a-11: var(--colors-teal-dark-a-11);--colors-teal-a-12: var(--colors-teal-dark-a-12);--colors-teal-p3-1: var(--colors-teal-dark-p3-1);--colors-teal-p3-2: var(--colors-teal-dark-p3-2);--colors-teal-p3-3: var(--colors-teal-dark-p3-3);--colors-teal-p3-4: var(--colors-teal-dark-p3-4);--colors-teal-p3-5: var(--colors-teal-dark-p3-5);--colors-teal-p3-6: var(--colors-teal-dark-p3-6);--colors-teal-p3-7: var(--colors-teal-dark-p3-7);--colors-teal-p3-8: var(--colors-teal-dark-p3-8);--colors-teal-p3-9: var(--colors-teal-dark-p3-9);--colors-teal-p3-10: var(--colors-teal-dark-p3-10);--colors-teal-p3-11: var(--colors-teal-dark-p3-11);--colors-teal-p3-12: var(--colors-teal-dark-p3-12);--colors-teal-p3-a-1: var(--colors-teal-dark-p3-a-1);--colors-teal-p3-a-2: var(--colors-teal-dark-p3-a-2);--colors-teal-p3-a-3: var(--colors-teal-dark-p3-a-3);--colors-teal-p3-a-4: var(--colors-teal-dark-p3-a-4);--colors-teal-p3-a-5: var(--colors-teal-dark-p3-a-5);--colors-teal-p3-a-6: var(--colors-teal-dark-p3-a-6);--colors-teal-p3-a-7: var(--colors-teal-dark-p3-a-7);--colors-teal-p3-a-8: var(--colors-teal-dark-p3-a-8);--colors-teal-p3-a-9: var(--colors-teal-dark-p3-a-9);--colors-teal-p3-a-10: var(--colors-teal-dark-p3-a-10);--colors-teal-p3-a-11: var(--colors-teal-dark-p3-a-11);--colors-teal-p3-a-12: var(--colors-teal-dark-p3-a-12);--colors-tomato-1: var(--colors-tomato-dark-1);--colors-tomato-2: var(--colors-tomato-dark-2);--colors-tomato-3: var(--colors-tomato-dark-3);--colors-tomato-4: var(--colors-tomato-dark-4);--colors-tomato-5: var(--colors-tomato-dark-5);--colors-tomato-6: var(--colors-tomato-dark-6);--colors-tomato-7: var(--colors-tomato-dark-7);--colors-tomato-8: var(--colors-tomato-dark-8);--colors-tomato-9: var(--colors-tomato-dark-9);--colors-tomato-10: var(--colors-tomato-dark-10);--colors-tomato-11: var(--colors-tomato-dark-11);--colors-tomato-12: var(--colors-tomato-dark-12);--colors-tomato-a-1: var(--colors-tomato-dark-a-1);--colors-tomato-a-2: var(--colors-tomato-dark-a-2);--colors-tomato-a-3: var(--colors-tomato-dark-a-3);--colors-tomato-a-4: var(--colors-tomato-dark-a-4);--colors-tomato-a-5: var(--colors-tomato-dark-a-5);--colors-tomato-a-6: var(--colors-tomato-dark-a-6);--colors-tomato-a-7: var(--colors-tomato-dark-a-7);--colors-tomato-a-8: var(--colors-tomato-dark-a-8);--colors-tomato-a-9: var(--colors-tomato-dark-a-9);--colors-tomato-a-10: var(--colors-tomato-dark-a-10);--colors-tomato-a-11: var(--colors-tomato-dark-a-11);--colors-tomato-a-12: var(--colors-tomato-dark-a-12);--colors-tomato-p3-1: var(--colors-tomato-dark-p3-1);--colors-tomato-p3-2: var(--colors-tomato-dark-p3-2);--colors-tomato-p3-3: var(--colors-tomato-dark-p3-3);--colors-tomato-p3-4: var(--colors-tomato-dark-p3-4);--colors-tomato-p3-5: var(--colors-tomato-dark-p3-5);--colors-tomato-p3-6: var(--colors-tomato-dark-p3-6);--colors-tomato-p3-7: var(--colors-tomato-dark-p3-7);--colors-tomato-p3-8: var(--colors-tomato-dark-p3-8);--colors-tomato-p3-9: var(--colors-tomato-dark-p3-9);--colors-tomato-p3-10: var(--colors-tomato-dark-p3-10);--colors-tomato-p3-11: var(--colors-tomato-dark-p3-11);--colors-tomato-p3-12: var(--colors-tomato-dark-p3-12);--colors-tomato-p3-a-1: var(--colors-tomato-dark-p3-a-1);--colors-tomato-p3-a-2: var(--colors-tomato-dark-p3-a-2);--colors-tomato-p3-a-3: var(--colors-tomato-dark-p3-a-3);--colors-tomato-p3-a-4: var(--colors-tomato-dark-p3-a-4);--colors-tomato-p3-a-5: var(--colors-tomato-dark-p3-a-5);--colors-tomato-p3-a-6: var(--colors-tomato-dark-p3-a-6);--colors-tomato-p3-a-7: var(--colors-tomato-dark-p3-a-7);--colors-tomato-p3-a-8: var(--colors-tomato-dark-p3-a-8);--colors-tomato-p3-a-9: var(--colors-tomato-dark-p3-a-9);--colors-tomato-p3-a-10: var(--colors-tomato-dark-p3-a-10);--colors-tomato-p3-a-11: var(--colors-tomato-dark-p3-a-11);--colors-tomato-p3-a-12: var(--colors-tomato-dark-p3-a-12);--colors-violet-1: var(--colors-violet-dark-1);--colors-violet-2: var(--colors-violet-dark-2);--colors-violet-3: var(--colors-violet-dark-3);--colors-violet-4: var(--colors-violet-dark-4);--colors-violet-5: var(--colors-violet-dark-5);--colors-violet-6: var(--colors-violet-dark-6);--colors-violet-7: var(--colors-violet-dark-7);--colors-violet-8: var(--colors-violet-dark-8);--colors-violet-9: var(--colors-violet-dark-9);--colors-violet-10: var(--colors-violet-dark-10);--colors-violet-11: var(--colors-violet-dark-11);--colors-violet-12: var(--colors-violet-dark-12);--colors-violet-a-1: var(--colors-violet-dark-a-1);--colors-violet-a-2: var(--colors-violet-dark-a-2);--colors-violet-a-3: var(--colors-violet-dark-a-3);--colors-violet-a-4: var(--colors-violet-dark-a-4);--colors-violet-a-5: var(--colors-violet-dark-a-5);--colors-violet-a-6: var(--colors-violet-dark-a-6);--colors-violet-a-7: var(--colors-violet-dark-a-7);--colors-violet-a-8: var(--colors-violet-dark-a-8);--colors-violet-a-9: var(--colors-violet-dark-a-9);--colors-violet-a-10: var(--colors-violet-dark-a-10);--colors-violet-a-11: var(--colors-violet-dark-a-11);--colors-violet-a-12: var(--colors-violet-dark-a-12);--colors-violet-p3-1: var(--colors-violet-dark-p3-1);--colors-violet-p3-2: var(--colors-violet-dark-p3-2);--colors-violet-p3-3: var(--colors-violet-dark-p3-3);--colors-violet-p3-4: var(--colors-violet-dark-p3-4);--colors-violet-p3-5: var(--colors-violet-dark-p3-5);--colors-violet-p3-6: var(--colors-violet-dark-p3-6);--colors-violet-p3-7: var(--colors-violet-dark-p3-7);--colors-violet-p3-8: var(--colors-violet-dark-p3-8);--colors-violet-p3-9: var(--colors-violet-dark-p3-9);--colors-violet-p3-10: var(--colors-violet-dark-p3-10);--colors-violet-p3-11: var(--colors-violet-dark-p3-11);--colors-violet-p3-12: var(--colors-violet-dark-p3-12);--colors-violet-p3-a-1: var(--colors-violet-dark-p3-a-1);--colors-violet-p3-a-2: var(--colors-violet-dark-p3-a-2);--colors-violet-p3-a-3: var(--colors-violet-dark-p3-a-3);--colors-violet-p3-a-4: var(--colors-violet-dark-p3-a-4);--colors-violet-p3-a-5: var(--colors-violet-dark-p3-a-5);--colors-violet-p3-a-6: var(--colors-violet-dark-p3-a-6);--colors-violet-p3-a-7: var(--colors-violet-dark-p3-a-7);--colors-violet-p3-a-8: var(--colors-violet-dark-p3-a-8);--colors-violet-p3-a-9: var(--colors-violet-dark-p3-a-9);--colors-violet-p3-a-10: var(--colors-violet-dark-p3-a-10);--colors-violet-p3-a-11: var(--colors-violet-dark-p3-a-11);--colors-violet-p3-a-12: var(--colors-violet-dark-p3-a-12);--colors-yellow-1: var(--colors-yellow-dark-1);--colors-yellow-2: var(--colors-yellow-dark-2);--colors-yellow-3: var(--colors-yellow-dark-3);--colors-yellow-4: var(--colors-yellow-dark-4);--colors-yellow-5: var(--colors-yellow-dark-5);--colors-yellow-6: var(--colors-yellow-dark-6);--colors-yellow-7: var(--colors-yellow-dark-7);--colors-yellow-8: var(--colors-yellow-dark-8);--colors-yellow-9: var(--colors-yellow-dark-9);--colors-yellow-10: var(--colors-yellow-dark-10);--colors-yellow-11: var(--colors-yellow-dark-11);--colors-yellow-12: var(--colors-yellow-dark-12);--colors-yellow-a-1: var(--colors-yellow-dark-a-1);--colors-yellow-a-2: var(--colors-yellow-dark-a-2);--colors-yellow-a-3: var(--colors-yellow-dark-a-3);--colors-yellow-a-4: var(--colors-yellow-dark-a-4);--colors-yellow-a-5: var(--colors-yellow-dark-a-5);--colors-yellow-a-6: var(--colors-yellow-dark-a-6);--colors-yellow-a-7: var(--colors-yellow-dark-a-7);--colors-yellow-a-8: var(--colors-yellow-dark-a-8);--colors-yellow-a-9: var(--colors-yellow-dark-a-9);--colors-yellow-a-10: var(--colors-yellow-dark-a-10);--colors-yellow-a-11: var(--colors-yellow-dark-a-11);--colors-yellow-a-12: var(--colors-yellow-dark-a-12);--colors-yellow-p3-1: var(--colors-yellow-dark-p3-1);--colors-yellow-p3-2: var(--colors-yellow-dark-p3-2);--colors-yellow-p3-3: var(--colors-yellow-dark-p3-3);--colors-yellow-p3-4: var(--colors-yellow-dark-p3-4);--colors-yellow-p3-5: var(--colors-yellow-dark-p3-5);--colors-yellow-p3-6: var(--colors-yellow-dark-p3-6);--colors-yellow-p3-7: var(--colors-yellow-dark-p3-7);--colors-yellow-p3-8: var(--colors-yellow-dark-p3-8);--colors-yellow-p3-9: var(--colors-yellow-dark-p3-9);--colors-yellow-p3-10: var(--colors-yellow-dark-p3-10);--colors-yellow-p3-11: var(--colors-yellow-dark-p3-11);--colors-yellow-p3-12: var(--colors-yellow-dark-p3-12);--colors-yellow-p3-a-1: var(--colors-yellow-dark-p3-a-1);--colors-yellow-p3-a-2: var(--colors-yellow-dark-p3-a-2);--colors-yellow-p3-a-3: var(--colors-yellow-dark-p3-a-3);--colors-yellow-p3-a-4: var(--colors-yellow-dark-p3-a-4);--colors-yellow-p3-a-5: var(--colors-yellow-dark-p3-a-5);--colors-yellow-p3-a-6: var(--colors-yellow-dark-p3-a-6);--colors-yellow-p3-a-7: var(--colors-yellow-dark-p3-a-7);--colors-yellow-p3-a-8: var(--colors-yellow-dark-p3-a-8);--colors-yellow-p3-a-9: var(--colors-yellow-dark-p3-a-9);--colors-yellow-p3-a-10: var(--colors-yellow-dark-p3-a-10);--colors-yellow-p3-a-11: var(--colors-yellow-dark-p3-a-11);--colors-yellow-p3-a-12: var(--colors-yellow-dark-p3-a-12);--colors-likec4-background-pattern: color-mix(in oklab, var(--mantine-color-dark-4) 70%, transparent 30%);--colors-likec4-mix-color: white;--colors-likec4-panel-bg: var(--mantine-color-dark-6);--colors-likec4-panel-action-bg: color-mix(in oklab, var(--mantine-color-dark-7) 70%, transparent 30%);--colors-likec4-panel-action-bg-hover: var(--mantine-color-dark-8);--colors-likec4-panel-action-warning-hover: var(--mantine-color-orange-5);--colors-likec4-panel-action-warning-bg: color-mix(in oklab, var(--mantine-color-orange-9) 10%, transparent 90%);--colors-likec4-panel-action-warning-bg-hover: color-mix(in oklab, var(--mantine-color-orange-9) 20%, transparent 80%);--colors-likec4-dropdown-bg: var(--mantine-color-dark-6);--colors-likec4-compare-manual: var(--mantine-color-orange-6);--colors-likec4-compare-manual-outline: var(--mantine-color-orange-6) }[data-mantine-color-scheme=light]{--colors-likec4-background-pattern: var(--mantine-color-gray-4);--colors-likec4-mix-color: black;--colors-likec4-panel-border: color-mix(in oklab, var(--mantine-color-default-border) 30%, transparent 70%);--colors-likec4-overlay-backdrop: rgb(15 15 15);--colors-likec4-compare-manual: var(--mantine-color-orange-8);--colors-likec4-compare-manual-outline: var(--mantine-color-orange-8) }@keyframes indicatorOpacity{0%{opacity:.9;stroke-opacity:.8}to{opacity:.6;stroke-opacity:.4}}@keyframes xyedgeAnimated{0%{stroke-dashoffset:36}to{stroke-dashoffset:0}}}@layer recipes{@layer _base{.likec4-overlay{--_blur: 0px;--_level: 0;--_offset: 0px;--_inset: calc((1 + var(--_level) * .75) * var(--_offset));--_opacity: 0%;--_border-radius: 0px;margin:var(--spacing-0);background:var(--colors-likec4-overlay-border);border:var(--borders-transparent);inset:var(--spacing-0);padding:var(--spacing-0);outline:var(--borders-none);border-radius:var(--_border-radius);box-sizing:border-box;position:fixed;box-shadow:var(--shadows-xl);width:100vw;height:100vh;max-width:100vw;max-height:100vh}.likec4-overlay::backdrop{cursor:zoom-out}.likec4-overlay .likec4-overlay-body{border:var(--borders-transparent);background:var(--colors-likec4-overlay-body);overflow:hidden;position:relative;container-name:likec4-dialog;container-type:size;width:var(--sizes-100\\%);height:var(--sizes-100\\%)}.likec4-markdown-block{--text-fz: 1rem;--text-fz-sm: calc(var(--text-fz) * var(--mantine-scale, 1) / 1.125);--text-fz-md: calc(var(--text-fz) * var(--mantine-scale, 1));--typography-spacing: calc(.75 * var(--text-fz-md));--text-fw-headings: 600;font-size:var(--text-fz-md);line-height:var(--mantine-line-height)}[data-mantine-color-scheme=light] .likec4-markdown-block{--code-background: var(--mantine-color-gray-2);--code-color: var(--mantine-color-black)}[data-mantine-color-scheme=dark] .likec4-markdown-block{--code-background: var(--mantine-color-dark-8);--code-color: var(--mantine-color-white)}.likec4-markdown-block :where(hr){border:var(--borders-none);border-bottom:1px solid;margin-top:calc(var(--typography-spacing) / 2);margin-bottom:calc(var(--typography-spacing) / 2)}[data-mantine-color-scheme=light] .likec4-markdown-block :where(hr){border-color:var(--colors-mantine-colors-gray\\[3\\])}[data-mantine-color-scheme=dark] .likec4-markdown-block :where(hr){border-color:var(--colors-mantine-colors-dark\\[3\\])}.likec4-markdown-block :where(pre){margin:var(--spacing-0);padding-inline:var(--spacing-3);padding-block:var(--spacing-2);border-radius:var(--radii-sm);line-height:var(--mantine-line-height-xs);font-family:var(--mantine-font-family-monospace);font-size:var(--text-fz-sm);background-color:var(--code-background);color:var(--code-color);margin-top:var(--typography-spacing);margin-bottom:var(--typography-spacing);overflow-x:auto}.likec4-markdown-block :where(code){padding:1px 4px;border-radius:var(--radii-xs);line-height:var(--line-heights-1);font-family:var(--mantine-font-family-monospace);font-size:var(--text-fz-sm);background-color:var(--code-background);color:var(--code-color)}.likec4-markdown-block :where(pre code){padding:var(--spacing-0);border:0;border-radius:var(--radii-0);background-color:var(--colors-transparent);color:inherit}.likec4-markdown-block :where(blockquote){margin:var(--spacing-0);padding:var(--spacing-xs);border-radius:var(--mantine-radius-sm);font-size:var(--text-fz-md)}[data-mantine-color-scheme=light] .likec4-markdown-block :where(blockquote){background-color:var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .likec4-markdown-block :where(blockquote){background-color:var(--mantine-color-dark-5)}.likec4-markdown-block :where(blockquote):not(:first-child){margin-top:var(--typography-spacing)}.likec4-markdown-block :where(h1,h2,h3,h4,h5,h6){text-wrap:var(--mantine-heading-text-wrap);line-height:1.5;font-family:var(--mantine-font-family-headings);margin-bottom:var(--typography-spacing)}.likec4-markdown-block :where(a){text-decoration:none;font-size:var(--text-fz-md);color:var(--mantine-color-anchor);font-weight:500}.likec4-markdown-block :where(a):is(:hover,[data-hover]){text-decoration:underline}.likec4-markdown-block :is(h1){font-size:calc(1.476 * var(--text-fz-md));font-weight:var(--text-fw-headings)}.likec4-markdown-block :is(h2){font-size:calc(1.383 * var(--text-fz-md));font-weight:var(--text-fw-headings)}.likec4-markdown-block :is(h3){font-size:calc(1.296 * var(--text-fz-md));font-weight:var(--text-fw-headings)}.likec4-markdown-block :is(h4){font-size:calc(1.215 * var(--text-fz-md));font-weight:var(--text-fw-headings)}.likec4-markdown-block :is(h5){font-size:calc(1.138 * var(--text-fz-md));font-weight:var(--text-fw-headings)}.likec4-markdown-block :is(h6){font-size:calc(1.067 * var(--text-fz-md));font-weight:var(--text-fw-headings)}.likec4-markdown-block :where(p){font-size:var(--text-fz-md);margin-top:var(--spacing-0);margin-bottom:var(--typography-spacing)}.likec4-markdown-block :where(strong){font-weight:500}.likec4-markdown-block :where(mark){font-size:var(--text-fz-md)}[data-mantine-color-scheme=light] .likec4-markdown-block :where(mark){background-color:var(--colors-mantine-colors-yellow\\[2\\]);color:inherit}[data-mantine-color-scheme=dark] .likec4-markdown-block :where(mark){background-color:var(--colors-mantine-colors-yellow\\[5\\]);color:var(--mantine-color-black)}.likec4-markdown-block :where(ul,ol):not([data-type=taskList]){padding-inline-start:var(--typography-spacing);list-style-position:inside;margin-bottom:var(--typography-spacing)}.likec4-markdown-block :where(table){border-collapse:collapse;caption-side:bottom;width:var(--sizes-100\\%);margin-bottom:var(--typography-spacing)}[data-mantine-color-scheme=light] .likec4-markdown-block :where(table){--table-border-color: var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .likec4-markdown-block :where(table){--table-border-color: var(--mantine-color-dark-4)}.likec4-markdown-block :where(table) :where(th){padding:var(--typography-spacing);text-align:left;font-weight:700;font-size:var(--text-fz-sm)}.likec4-markdown-block :where(table) :where(td){padding:var(--typography-spacing);border-bottom:1px solid;border-color:var(--table-border-color);font-size:var(--text-fz-sm)}.likec4-markdown-block :where(table) :where(thead th){border-bottom:1px solid;border-color:var(--table-border-color)}.likec4-markdown-block :where(table) :where(tfoot th){border-top:1px solid;border-color:var(--table-border-color)}.likec4-markdown-block :where(table) :where(tr:last-of-type td){border-bottom:0}.likec4-markdown-block :where(table) :where(caption){font-size:var(--text-fz-sm);color:var(--mantine-color-dimmed);margin-top:calc(.5 * var(--typography-spacing) + 1px)}.likec4-markdown-block :first-child{margin-top:var(--spacing-0)}.likec4-markdown-block :last-child{margin-bottom:var(--spacing-0)}.likec4-markdown-block :is(h1,h2,h3,h4,h5,h6):not(:first-child){margin-top:var(--typography-spacing)}.likec4-markdown-block :where(img){max-width:var(--sizes-100\\%);margin-bottom:var(--typography-spacing)}.likec4-navigation-panel-icon{color:var(--colors-likec4-panel-action)}.likec4-navigation-panel-icon:is(:disabled,[disabled],[data-disabled],[aria-disabled=true]){color:var(--colors-likec4-panel-action-disabled);opacity:.5}.likec4-navigation-panel-icon:not(:is(:disabled,[disabled],[data-disabled])):is(:hover,[data-hover]){color:var(--colors-likec4-panel-action-hover)}.action-btn{--actionbtn-color: var(--likec4-palette-loContrast);--actionbtn-color-hovered: var(--likec4-palette-loContrast);--actionbtn-color-hovered-btn: var(--likec4-palette-hiContrast);--actionbtn-bg-idle: color-mix(in srgb , var(--likec4-palette-fill), transparent 99%);--actionbtn-bg-hovered: color-mix(in srgb , var(--likec4-palette-fill) 65%, var(--likec4-palette-stroke));--actionbtn-bg-hovered-btn: color-mix(in srgb , var(--likec4-palette-fill) 50%, var(--likec4-palette-stroke));--ai-bg: var(--actionbtn-bg-idle);background:var(--ai-bg);pointer-events:all;cursor:pointer;color:var(--actionbtn-color);opacity:.75}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .action-btn{--ai-bg: var(--actionbtn-bg-hovered);opacity:1;color:var(--actionbtn-color-hovered)}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .action-btn{display:none}:where([data-likec4-zoom-small=true]) .action-btn{display:none}.action-btn *{pointer-events:none}.action-btn:is(:hover,[data-hover]){--ai-bg: var(--actionbtn-bg-hovered-btn);opacity:1;color:var(--actionbtn-color-hovered-btn)}.likec4-compound-node{--_border-width: 3px;--_border-radius: 6px;--_compound-transparency: 100%;--_border-transparency: 100%;--_indicator-spacing: calc(var(--_border-width) + 2px);--_compound-color: var(--likec4-palette-loContrast);padding:var(--spacing-0);margin:var(--spacing-0);border-style:solid;border-width:var(--_border-width);border-radius:var(--_border-radius);position:relative;pointer-events:none;background-clip:padding-box;-webkit-background-clip:padding-box;box-sizing:border-box;color:var(--_compound-color);width:var(--sizes-100\\%);height:var(--sizes-100\\%)}[data-mantine-color-scheme=light] .likec4-compound-node{--likec4-palette-outline: color-mix(in srgb, var(--likec4-palette-stroke) 80%, var(--likec4-palette-hiContrast))}[data-mantine-color-scheme=dark] .likec4-compound-node{--likec4-palette-outline: color-mix(in srgb, var(--likec4-palette-stroke) 60%, var(--likec4-palette-hiContrast))}.likec4-compound-node:after{border-style:solid;border-width:calc(var(--_border-width) + 1px);border-radius:calc(var(--_border-radius) + 4px);border-color:var(--likec4-palette-outline);position:absolute;content:" ";pointer-events:none;display:none;animation-play-state:paused;top:calc(-1 * var(--_indicator-spacing));left:calc(-1 * var(--_indicator-spacing));width:calc(100% + 2 * var(--_indicator-spacing));height:calc(100% + 2 * var(--_indicator-spacing))}:where(.react-flow__node,.react-flow__edge):is(:focus-visible,:focus,:focus-within) .likec4-compound-node:after{display:block;animation-play-state:running}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-compound-node:after{display:block;animation-play-state:running}.likec4-root:is([data-likec4-diagram-panning=true]) .likec4-compound-node:after{animation-play-state:paused}.likec4-compound-node:has(.likec4-compound-navigation) .likec4-compound-title-container{padding-left:24px}.likec4-compound-node .action-btn{--actionbtn-color: var(--_compound-color);--actionbtn-color-hovered: var(--_compound-color);--actionbtn-color-hovered-btn: color-mix(in srgb, var(--_compound-color) 80%, #fff);opacity:.6}.likec4-root:not([data-likec4-reduced-graphics]) .likec4-compound-node .action-btn{transition:all var(--durations-fast) var(--easings-in-out)}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-compound-node .action-btn{opacity:.75}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-compound-node .action-btn{opacity:.75}.likec4-compound-node .action-btn:is(:hover,[data-hover]){opacity:1}.likec4-compound-node .likec4-compound-title-container{gap:var(--spacing-1\\.5);position:absolute;display:flex;align-items:center;left:var(--spacing-2\\.5);top:var(--spacing-0\\.5);right:30px;width:auto;min-height:30px}:where(.react-flow__node.draggable) .likec4-compound-node .likec4-compound-title-container{pointer-events:all;cursor:grab}.likec4-compound-node .likec4-compound-title{flex:1 1 0%;font-family:var(--fonts-likec4-compound);font-weight:600;font-size:15px;text-transform:uppercase;letter-spacing:.25px;line-height:var(--line-heights-1);color:var(--_compound-color)}.likec4-compound-node .likec4-compound-icon{flex:0 0 20px;display:flex;align-items:center;justify-content:center;mix-blend-mode:hard-light;height:20px;width:20px}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-compound-node .likec4-compound-icon{mix-blend-mode:normal}.likec4-compound-node .likec4-compound-icon svg,.likec4-compound-node .likec4-compound-icon img{pointer-events:none;filter:drop-shadow(0 0 3px rgb(0 0 0 / 12%)) drop-shadow(0 1px 8px rgb(0 0 0 / 8%)) drop-shadow(1px 1px 16px rgb(0 0 0 / 3%));width:var(--sizes-100\\%);height:auto;max-height:var(--sizes-100\\%)}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-compound-node .likec4-compound-icon svg,.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-compound-node .likec4-compound-icon img{filter:none}.likec4-compound-node .likec4-compound-icon img{object-fit:contain}.likec4-compound-node .likec4-compound-navigation{position:absolute;top:var(--spacing-1);left:var(--spacing-0\\.5)}:where([data-likec4-zoom-small=true]) .likec4-compound-node .likec4-compound-navigation{display:none}.likec4-compound-node .likec4-compound-details{position:absolute;top:var(--spacing-0\\.5);right:var(--spacing-0\\.5)}:where([data-likec4-zoom-small=true]) .likec4-compound-node .likec4-compound-details{display:none}.likec4-edge-action-btn{--ai-bg: transparent;--ai-hover: color-mix(in srgb , var(--xy-edge-label-background-color), var(--colors-likec4-mix-color) 10%);--ai-size: var(--ai-size-sm);--ai-radius: var(--radii-sm);transition:all var(--durations-fast) var(--easings-in-out);pointer-events:all;color:var(--xy-edge-label-color);cursor:pointer;opacity:.75;translate:var(--translate-x) var(--translate-y)}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-edge-action-btn{--ai-bg: var(--xy-edge-label-background-color);opacity:1}.likec4-edge-action-btn .tabler-icon{stroke-width:2;width:80%;height:80%}.likec4-edge-action-btn:is(:hover,[data-hover]){--translate-y: 2px;scale:1.15}.likec4-edge-action-btn:is(:active,[data-active]){--translate-y: -1px;scale:.9}.likec4-element-node-data{margin:0 auto;flex:1 1 0%;overflow:hidden;gap:var(--spacing-3);position:relative;display:flex;align-items:center;justify-content:center;flex-direction:row;pointer-events:none;text-align:center;height:fit-content;width:fit-content;max-height:var(--sizes-100\\%);max-width:var(--sizes-100\\%);padding-top:var(--likec4-spacing);padding-bottom:var(--likec4-spacing);padding-left:calc(var(--likec4-spacing) + 8px);padding-right:calc(var(--likec4-spacing) + 8px)}:where([data-likec4-shape-size=xs]) .likec4-element-node-data{--likec4-icon-size: 24px}:where([data-likec4-shape-size=sm]) .likec4-element-node-data{--likec4-icon-size: 36px}:where([data-likec4-shape-size=md]) .likec4-element-node-data{--likec4-icon-size: 60px}:where([data-likec4-shape-size=lg]) .likec4-element-node-data{--likec4-icon-size: 82px;gap:var(--spacing-4)}:where([data-likec4-shape-size=xl]) .likec4-element-node-data{--likec4-icon-size: 90px;gap:var(--spacing-4)}.likec4-element-node-data:has([data-likec4-icon]){gap:var(--spacing-4);text-align:left}.likec4-element-node-data:has([data-likec4-icon]) .likec4-element-node-content{align-items:flex-start;min-width:calc(50% + var(--likec4-icon-size))}:where([data-likec4-shape=queue]) .likec4-element-node-data{padding-left:46px;padding-right:16px}:where([data-likec4-shape=mobile]) .likec4-element-node-data{padding-left:46px;padding-right:16px}:where([data-likec4-shape=cylinder]) .likec4-element-node-data{padding-top:30px}:where([data-likec4-shape=storage]) .likec4-element-node-data{padding-top:30px}:where([data-likec4-shape=browser]) .likec4-element-node-data{padding-top:32px;padding-bottom:28px}.likec4-element-node-data [data-likec4-icon]{flex:0 0 var(--likec4-icon-size, 48px);display:flex;align-self:flex-start;align-items:center;justify-content:center;mix-blend-mode:hard-light;height:var(--likec4-icon-size, 48px);width:var(--likec4-icon-size, 48px)}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-element-node-data [data-likec4-icon]{mix-blend-mode:normal}.likec4-element-node-data [data-likec4-icon] svg,.likec4-element-node-data [data-likec4-icon] img{pointer-events:none;filter:drop-shadow(0 0 3px rgb(0 0 0 / 12%));width:var(--sizes-100\\%);height:auto;max-height:var(--sizes-100\\%)}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-element-node-data [data-likec4-icon] svg,.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-element-node-data [data-likec4-icon] img{filter:none}.likec4-element-node-data [data-likec4-icon] img{object-fit:contain}.likec4-element-node-data .likec4-element-node-content{flex:0 1 auto;overflow:hidden;gap:var(--spacing-2);display:flex;flex-direction:column;align-items:stretch;justify-content:center;flex-wrap:nowrap;height:fit-content;width:fit-content;max-height:var(--sizes-100\\%);max-width:var(--sizes-100\\%)}.likec4-element-node-data .likec4-element-node-content:has([data-likec4-node-description]):has([data-likec4-node-technology]){gap:var(--spacing-1\\.5)}.likec4-element-node-data [data-likec4-node-title]{flex:0 0 auto;font-family:var(--likec4-element-font, var(--fonts-likec4));font-weight:500;font-size:var(--likec4-text-size);line-height:1.15;text-wrap-style:balance;white-space:preserve-breaks;text-align:var(__text-align);color:var(--likec4-palette-hiContrast)}.likec4-element-node-data [data-likec4-node-description]{overflow:hidden;flex-grow:0;flex-shrink:1;--text-fz: calc(var(--likec4-text-size) * .74);font-family:var(--likec4-element-font, var(--fonts-likec4));font-weight:400;font-size:calc(var(--likec4-text-size) * .74);line-height:1.3;text-wrap-style:pretty;color:var(--likec4-palette-loContrast);text-align:var(__text-align);text-overflow:ellipsis}:where([data-likec4-shape-size=xs]) .likec4-element-node-data [data-likec4-node-description]{display:none}:where([data-likec4-zoom-small=true]) .likec4-element-node-data [data-likec4-node-description]{display:none}.likec4-element-node-data [data-likec4-node-description] a{pointer-events:all}.likec4-element-node-data [data-likec4-node-technology]{flex:0 0 auto;text-wrap:balance;--text-fz: calc(var(--likec4-text-size) * .74);font-family:var(--likec4-element-font, var(--fonts-likec4));font-weight:400;font-size:calc(var(--likec4-text-size) * .635);line-height:1.125;text-wrap-style:pretty;color:var(--likec4-palette-loContrast);text-align:var(__text-align);opacity:.92}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-element-node-data [data-likec4-node-technology]{opacity:1}:where([data-likec4-shape-size=xs]) .likec4-element-node-data [data-likec4-node-technology]{display:none}:where([data-likec4-shape-size=sm]) .likec4-element-node-data [data-likec4-node-technology]{display:none}:where([data-likec4-zoom-small=true]) .likec4-element-node-data [data-likec4-node-technology]{display:none}.likec4-element-shape{overflow:visible;position:absolute;pointer-events:none;top:var(--spacing-0);left:var(--spacing-0);width:var(--sizes-100\\%);height:var(--sizes-100\\%)}[data-mantine-color-scheme=light] .likec4-element-shape{--likec4-palette-outline: color-mix(in srgb, var(--likec4-palette-stroke) 60%, var(--likec4-palette-hiContrast))}[data-mantine-color-scheme=dark] .likec4-element-shape{--likec4-palette-outline: color-mix(in srgb, var(--likec4-palette-stroke) 30%, var(--likec4-palette-loContrast))}.likec4-element-shape .likec4-shape-outline{visibility:hidden;animation-play-state:paused;pointer-events:none}:where([data-likec4-zoom-small=true]) .likec4-element-shape .likec4-shape-outline{visibility:hidden}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-element-shape .likec4-shape-outline{visibility:visible;animation-play-state:running}:where(.react-flow__node,.react-flow__edge):is(:focus-visible,:focus,:focus-within) .likec4-element-shape .likec4-shape-outline{visibility:visible;animation-play-state:running}.group:is(:focus-visible,[data-focus-visible]) .likec4-element-shape .likec4-shape-outline{visibility:visible;animation-play-state:running}.likec4-root:is([data-likec4-diagram-panning=true]) .likec4-element-shape .likec4-shape-outline{animation-play-state:paused}.likec4-tag{transition:all var(--durations-fast) var(--easings-in-out);gap:1px;padding-inline:var(--spacing-1);padding-block:var(--spacing-0);pointer-events:all;display:inline-flex;align-items:center;justify-content:center;font-size:var(--font-sizes-xs);cursor:default;font-family:var(--fonts-likec4);font-weight:700;border:var(--borders-none);border-radius:3px;color:var(--colors-likec4-tag-text);background-color:var(--colors-likec4-tag-bg)}.likec4-tag:is(:hover,[data-hover]){background-color:var(--colors-likec4-tag-bg-hover)}.likec4-tag{white-space:nowrap;min-width:40px;width:min-content}@media screen and (min-width:36rem){.likec4-element-node-data [data-likec4-icon] svg,.likec4-element-node-data [data-likec4-icon] img{filter:drop-shadow(0 1px 8px rgb(0 0 0 / 8%))}}@media screen and (min-width:48rem){.likec4-element-node-data [data-likec4-icon] svg,.likec4-element-node-data [data-likec4-icon] img{filter:drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))}}}.likec4-overlay--withBackdrop_true::backdrop{background:color-mix(in srgb,var(--colors-likec4-overlay-backdrop) var(--_opacity),transparent);backdrop-filter:blur(var(--_blur));-webkit-backdrop-filter:blur(var(--_blur))}.likec4-overlay--fullscreen_true{inset:var(--spacing-0);padding:var(--spacing-0)}.likec4-overlay--withBackdrop_false::backdrop{display:none}.likec4-markdown-block--value_plaintext :where(p){white-space:preserve-breaks}.likec4-markdown-block--uselikec4palette_true{--code-background: color-mix(in srgb , var(--likec4-palette-stroke) 70%, transparent);--code-color: var(--likec4-palette-loContrast);--typography-spacing: calc(.5 * var(--text-fz-md))}.likec4-markdown-block--uselikec4palette_true :where(blockquote){padding:var(--spacing-xxs);--mix-backgroundColor: color-mix(in srgb, var(--likec4-palette-stroke) 65%, transparent);background-color:var(--mix-backgroundColor, var(--likec4-palette-stroke))}.likec4-markdown-block--uselikec4palette_true :where(hr){--mix-borderColor: color-mix(in srgb, var(--likec4-palette-stroke) 85%, transparent);border-color:var(--mix-borderColor, var(--likec4-palette-stroke))}.likec4-markdown-block--uselikec4palette_true :where(a){--mix-color: color-mix(in srgb, var(--likec4-palette-fill) 45%, transparent);color:var(--mix-color, var(--likec4-palette-fill));mix-blend-mode:difference}.likec4-markdown-block--uselikec4palette_true :where(strong){color:color-mix(in srgb,var(--likec4-palette-hiContrast) 50%,var(--likec4-palette-loContrast))}.likec4-navigation-panel-icon--variant_default{background-color:var(--colors-transparent)}.likec4-navigation-panel-icon--variant_default:not(:is(:disabled,[disabled],[data-disabled])):is(:hover,[data-hover]){background-color:var(--colors-likec4-panel-action-bg-hover)}.likec4-navigation-panel-icon--variant_filled{background-color:var(--colors-likec4-panel-action-bg)}.likec4-navigation-panel-icon--variant_filled:not(:is(:disabled,[disabled],[data-disabled])):is(:hover,[data-hover]){background-color:var(--colors-likec4-panel-action-bg-hover)}.likec4-navigation-panel-icon--type_warning{color:var(--colors-likec4-panel-action-warning)}.likec4-navigation-panel-icon--type_warning:is(:hover,[data-hover]){color:var(--colors-likec4-panel-action-warning-hover)}.action-btn--size_md{--ai-size: var(--ai-size-md)}.action-btn--radius_md{--ai-radius: var(--mantine-radius-md)}.action-btn--variant_transparent{--actionbtn-bg-hovered: var(--actionbtn-bg-idle)}.action-btn--variant_filled{box-shadow:1px 1px 3px 0 transparent}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .action-btn--variant_filled{box-shadow:1px 1px 3px #0003}.likec4-root:is([data-likec4-reduced-graphics]) .action-btn--variant_filled{box-shadow:var(--shadows-none)}.action-btn--size_sm{--ai-size: var(--ai-size-sm)}.action-btn--radius_sm{--ai-radius: var(--mantine-radius-sm)}.likec4-compound-node--borderStyle_dashed{border-style:dashed}.likec4-compound-node--borderStyle_none{--_indicator-spacing: calc(var(--_border-width) * 2);border-color:var(--colors-transparent)!important;background-clip:border-box!important;-webkit-background-clip:border-box!important}.likec4-compound-node--isTransparent_false{border-color:var(--likec4-palette-stroke);background-color:var(--likec4-palette-fill)}.likec4-root:not([data-likec4-reduced-graphics]) .likec4-compound-node--isTransparent_false{box-shadow:0 4px 10px .5px #0000001a,0 2px 2px -1px #0006}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-compound-node--isTransparent_false{box-shadow:var(--shadows-none)}.likec4-root:is([data-likec4-diagram-panning=true]) .likec4-compound-node--isTransparent_false{box-shadow:var(--shadows-none)!important}.likec4-compound-node--isTransparent_true{border-color:color-mix(in srgb,var(--likec4-palette-stroke) var(--_border-transparency),transparent);background-color:color-mix(in srgb,var(--likec4-palette-fill) var(--_compound-transparency),transparent)}.likec4-compound-node--inverseColor_true{--_compound-color: var(--likec4-palette-stroke)}[data-mantine-color-scheme=dark] .likec4-compound-node--inverseColor_true{--_compound-color: color-mix(in srgb, var(--likec4-palette-loContrast) 60%, var(--likec4-palette-fill))}[data-mantine-color-scheme=dark] .likec4-compound-node--inverseColor_true .action-btn{--actionbtn-color-hovered-btn: var(--likec4-palette-loContrast)}[data-mantine-color-scheme=light] .likec4-compound-node--inverseColor_true .action-btn{--actionbtn-color: var(--likec4-palette-stroke);--actionbtn-color-hovered: var(--likec4-palette-stroke);--actionbtn-color-hovered-btn: var(--likec4-palette-hiContrast);--actionbtn-bg-hovered: var(--likec4-palette-fill)/50;--actionbtn-bg-hovered-btn: var(--likec4-palette-fill)}.likec4-compound-node--borderStyle_solid{border-style:solid}.likec4-compound-node--borderStyle_dotted{border-style:dotted}.likec4-element-shape--shapetype_html{--likec4-outline-size: 4px;border-radius:6px;transition:background-color .12s linear,box-shadow .13s var(--easings-in-out);background-color:var(--likec4-palette-fill);box-shadow:0 2px 1px #00000036,0 1px 1px color-mix(in srgb,var(--likec4-palette-stroke) 40%,transparent),0 5px 3px #0000001a;transition-delay:0ms}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-element-shape--shapetype_html{transition:none}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-element-shape--shapetype_html{box-shadow:var(--shadows-none)}:where([data-likec4-zoom-small=true]) .likec4-element-shape--shapetype_html{box-shadow:var(--shadows-none)}.likec4-root:is([data-likec4-diagram-panning=true]) .likec4-element-shape--shapetype_html{box-shadow:var(--shadows-none)}[data-mantine-color-scheme=light] :where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-element-shape--shapetype_html{box-shadow:#26394df2 0 20px 30px -10px}[data-mantine-color-scheme=dark] :where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-element-shape--shapetype_html{box-shadow:#0a0b10e5 0 20px 30px -10px}.likec4-element-shape--shapetype_html .likec4-shape-multiple{border-radius:6px;transition:all var(--durations-fast) var(--easings-in-out);position:absolute;content:" ";background-color:var(--likec4-palette-fill);z-index:var(--z-index--1);filter:brightness(.5)!important;visibility:visible;top:16px;left:16px;width:calc(100% - 6px);height:calc(100% - 6px)}:where([data-likec4-zoom-small=true]) .likec4-element-shape--shapetype_html .likec4-shape-multiple{visibility:hidden}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-element-shape--shapetype_html .likec4-shape-multiple{visibility:hidden}:where(.react-flow__node,.react-flow__edge):is(:focus-visible,:focus,:focus-within) .likec4-element-shape--shapetype_html .likec4-shape-multiple{visibility:hidden}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-element-shape--shapetype_html .likec4-shape-multiple{visibility:hidden}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-element-shape--shapetype_html .likec4-shape-multiple{transform:translate(-14px,-14px)}.likec4-element-shape--shapetype_html .likec4-shape-outline{border-style:solid;border-width:var(--likec4-outline-size);border-radius:10px;border-color:var(--likec4-palette-outline);position:absolute;content:" ";animation-duration:1s;animation-iteration-count:infinite;animation-direction:alternate;animation-name:indicatorOpacity;top:calc(-1 * var(--likec4-outline-size));left:calc(-1 * var(--likec4-outline-size));width:calc(100% + 2 * var(--likec4-outline-size));height:calc(100% + 2 * var(--likec4-outline-size))}.likec4-element-shape--shapetype_svg{transition:fill .12s linear,filter .13s var(--easings-in-out);fill:var(--likec4-palette-fill);stroke:var(--likec4-palette-stroke);transition-delay:0ms;filter:drop-shadow(0 2px 1px rgba(0,0,0,.21)) drop-shadow(0 1px 1px color-mix(in srgb,var(--likec4-palette-stroke) 40%,transparent)) drop-shadow(0 5px 3px rgba(0,0,0,.1))}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-element-shape--shapetype_svg{filter:drop-shadow(0 2px 1px rgba(0,0,0,.12)) drop-shadow(0px 4px 2px rgba(0,0,0,.12)) drop-shadow(0px 8px 4px rgba(0,0,0,.12)) drop-shadow(0px 16px 8px rgba(0,0,0,.1)) drop-shadow(0px 32px 16px rgba(0,0,0,.09))}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-element-shape--shapetype_svg{filter:none}:where([data-likec4-zoom-small=true]) .likec4-element-shape--shapetype_svg{filter:none}.likec4-root:is([data-likec4-diagram-panning=true]) .likec4-element-shape--shapetype_svg{filter:none}.likec4-element-shape--shapetype_svg [data-likec4-fill=fill]{fill:var(--likec4-palette-fill)}.likec4-element-shape--shapetype_svg [data-likec4-fill=stroke]{fill:var(--likec4-palette-stroke)}.likec4-element-shape--shapetype_svg [data-likec4-fill=mix-stroke]{fill:color-mix(in srgb,var(--likec4-palette-stroke) 90%,var(--likec4-palette-fill))}.likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){transition:all var(--durations-fast) var(--easings-in-out);transform-origin:50% 50%;transform:translate(14px,14px) perspective(200px) translateZ(-4px);filter:brightness(.5)!important;stroke:var(--colors-none)}:where([data-likec4-shape=queue]) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){transform-origin:75% 25%}:where([data-likec4-shape=cylinder]) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){transform-origin:50% 100%}:where([data-likec4-shape=storage]) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){transform-origin:50% 100%}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){transform:translate(2px,2px) perspective(200px) translateZ(-4px)}:where([data-likec4-zoom-small=true]) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){display:none}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){display:none}:where(.react-flow__node,.react-flow__edge):is(.selected) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){display:none}:where(.react-flow__node,.react-flow__edge):is(:focus-visible,:focus,:focus-within) .likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]){display:none}.likec4-element-shape--shapetype_svg:is([data-likec4-shape-multiple=true]) [data-likec4-fill=mix-stroke]{fill:var(--likec4-palette-fill)}.likec4-element-shape--shapetype_svg .likec4-shape-outline{stroke:var(--likec4-palette-outline);fill:var(--colors-none);stroke-width:8;stroke-opacity:.8;animation-duration:1s;animation-iteration-count:infinite;animation-direction:alternate;animation-name:indicatorOpacity}.likec4-tag--autoTextColor_false>span{color:var(--colors-likec4-tag-text)}.likec4-tag--autoTextColor_false>span:first-child{opacity:.65}.likec4-tag--autoTextColor_true>span{background:inherit;color:var(--colors-transparent);filter:invert(1) grayscale(1) brightness(1.3) contrast(1000);background-clip:text;-webkit-background-clip:text;mix-blend-mode:plus-lighter}.hover\\:likec4-tag--autoTextColor_true:is(:hover,[data-hover])>span{background:inherit;color:var(--colors-transparent);filter:invert(1) grayscale(1) brightness(1.3) contrast(1000);background-clip:text;-webkit-background-clip:text;mix-blend-mode:plus-lighter}.hover\\:likec4-tag--autoTextColor_false:is(:hover,[data-hover])>span{color:var(--colors-likec4-tag-text)}.hover\\:likec4-tag--autoTextColor_false:is(:hover,[data-hover])>span:first-child{opacity:.65}@media screen and (min-width:48rem){.likec4-overlay--fullscreen_false{--_border-radius: 6px;--_offset: 1rem;inset:var(--_inset) var(--_inset) var(--_offset) var(--_inset);padding:var(--spacing-1\\.5);border-radius:calc(var(--_border-radius) - 2px);width:calc(100vw - 2 * var(--_inset));height:calc(100vh - var(--_offset) - var(--_inset))}}@media screen and (min-width:62rem){.likec4-overlay--fullscreen_false{--_offset: 1rem}}@media screen and (min-width:75rem){.likec4-overlay--fullscreen_false{--_offset: 2rem}}@media screen and (min-width:88rem){.likec4-overlay--fullscreen_false{--_offset: 4rem}}}@layer recipes.slots{@layer _base{.likec4-navlink__root{border-radius:var(--radii-sm);padding-inline:var(--spacing-xs);padding-block:var(--spacing-xxs)}.likec4-navlink__root:is(:hover,[data-hover]):not([data-active]){background-color:var(--colors-mantine-colors-gray\\[1\\])}[data-mantine-color-scheme=dark] .likec4-navlink__root:is(:hover,[data-hover]):not([data-active]){background-color:var(--colors-mantine-colors-dark\\[5\\])}.likec4-navlink__body{gap:var(--spacing-0\\.5);display:flex;flex-direction:column}.likec4-navlink__section:where([data-position=left]){margin-inline-end:var(--spacing-xxs)}.likec4-navlink__label{display:block;font-size:var(--font-sizes-sm);font-weight:500;line-height:1.2}.likec4-navlink__description{display:block;font-size:var(--font-sizes-xxs);line-height:1.2}.likec4-edge-label__root{background:var(--xy-edge-label-background-color);border:0px solid transparent;padding-block:var(--spacing-1);padding-inline:var(--spacing-1\\.5);gap:var(--spacing-0\\.5);border-radius:4px;font-family:var(--fonts-likec4-relation);display:flex;flex-direction:column;align-items:center;line-height:1.2;color:var(--xy-edge-label-color);width:max-content;max-width:var(--sizes-100\\%)}.likec4-edge-label__stepNumber{padding:var(--spacing-1);background:color-mix(in srgb,var(--likec4-palette-relation-label-bg),var(--colors-likec4-mix-color) 10%);flex:0 0 auto;align-self:stretch;font-weight:600;font-size:14px;text-align:center;font-variant-numeric:tabular-nums;min-width:22px;border-top-left-radius:4px;border-bottom-left-radius:4px}.likec4-edge-label__stepNumber:only-child{border-radius:4px;min-width:24px}[data-mantine-color-scheme=dark] :where([data-likec4-color=gray]) .likec4-edge-label__stepNumber{background:color-mix(in srgb,var(--likec4-palette-relation-label-bg),var(--colors-likec4-mix-color) 15%)}.likec4-edge-label__labelContents{display:contents}.likec4-edge-label__labelContents:is(:empty,[data-empty]){display:none!important}.likec4-edge-label__labelText{margin:var(--spacing-0);white-space-collapse:preserve-breaks;font-size:14px}.likec4-edge-label__labelTechnology{text-align:center;white-space-collapse:preserve-breaks;font-size:11px;line-height:var(--line-heights-1);opacity:.75}}.likec4-navlink__label--truncateLabel_true,.likec4-navlink__description--truncateLabel_true{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:var(--sizes-100\\%)}.likec4-edge-label__root--pointerEvents_all{pointer-events:all}.likec4-edge-label__root--cursor_pointer{cursor:pointer}.likec4-edge-label__root--cursor_default{cursor:default}.likec4-edge-label__root--pointerEvents_none{pointer-events:none}.likec4-edge-label__root--isStepEdge_true{padding:var(--spacing-0);gap:var(--spacing-1);flex-direction:row}.likec4-edge-label__labelContents--isStepEdge_true{gap:var(--spacing-0\\.5);display:flex;flex-direction:column;align-items:center;padding-top:var(--spacing-0\\.5);padding-right:var(--spacing-1);padding-bottom:var(--spacing-1)}.likec4-edge-label__labelText--isStepEdge_true{padding-block:var(--spacing-0\\.5);padding-right:var(--spacing-0\\.5)}}@layer utilities{@layer compositions{.layerStyle_likec4\\.panel{padding:var(--spacing-1);border:1px solid var(--colors-likec4-panel-border);border-radius:var(--radii-0);background-color:var(--colors-likec4-panel-bg)}.likec4-root:is([data-likec4-diagram-panning=true]) .layerStyle_likec4\\.panel{border-radius:var(--radii-0);box-shadow:var(--shadows-none)}.layerStyle_likec4\\.dropdown{padding:var(--spacing-2);border:1px solid var(--colors-likec4-dropdown-border);border-radius:var(--radii-md);background-color:var(--colors-likec4-dropdown-bg);box-shadow:var(--shadows-lg)}.likec4-root:is([data-likec4-diagram-panning=true]) .layerStyle_likec4\\.dropdown{border-radius:0;border-color:var(--colors-transparent);box-shadow:var(--shadows-none)}.layerStyle_likec4\\.tag{border:var(--borders-none);border-radius:3px;color:var(--colors-likec4-tag-text);background-color:var(--colors-likec4-tag-bg)}.layerStyle_likec4\\.tag:is(:hover,[data-hover]){background-color:var(--colors-likec4-tag-bg-hover)}.textStyle_xs{font-size:.75rem;line-height:1rem}.layerStyle_likec4\\.panel\\.action{border:var(--borders-transparent);border-radius:var(--radii-sm);color:var(--colors-likec4-panel-action);cursor:pointer;background-color:var(--colors-likec4-panel-action-bg)}.layerStyle_likec4\\.panel\\.action:not(:is(:disabled,[disabled],[data-disabled])):is(:hover,[data-hover]){color:var(--colors-likec4-panel-action-hover);background-color:var(--colors-likec4-panel-action-bg-hover)}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:animationStyle_xyedgeAnimated{animation-duration:.8s;animation-iteration-count:infinite;animation-timing-function:linear;animation-fill-mode:both;animation-name:xyedgeAnimated}@container (min-width: 40rem){.layerStyle_likec4\\.panel{border-radius:var(--radii-md);padding-inline:var(--spacing-2);box-shadow:var(--shadows-lg)}}}.--mantine-cursor-pointer_pointer{--mantine-cursor-pointer: pointer}.--thickness_1px{--thickness: 1px}.--bleed-x_token\\(spacing\\.2\\,_2\\){--bleed-x: var(--spacing-2, 2)}.--bleed-y_token\\(spacing\\.2\\,_2\\){--bleed-y: var(--spacing-2, 2)}.--text-fz_\\{fontSizes\\.sm\\}{--text-fz: var(--font-sizes-sm)}.--view-title-color_\\{colors\\.mantine\\.colors\\.dark\\[1\\]\\}{--view-title-color: var(--colors-mantine-colors-dark\\[1\\])}.--likec4-icon-size_24px{--likec4-icon-size: 24px}.--ti-size_var\\(--likec4-icon-size\\,_24px\\){--ti-size: var(--likec4-icon-size, 24px)}.--_color_var\\(--likec4-palette-stroke\\){--_color: var(--likec4-palette-stroke)}.--ai-radius_0px{--ai-radius: 0px}.--badge-radius_2px{--badge-radius: 2px}.--badge-fz_9\\.5px{--badge-fz: 9.5px}.--badge-padding-x_3px{--badge-padding-x: 3px}.--badge-height_13\\.5px{--badge-height: 13.5px}.--badge-lh_1{--badge-lh: 1}.--badge-bg_var\\(--likec4-palette-fill\\){--badge-bg: var(--likec4-palette-fill)}.--badge-color_var\\(--likec4-palette-hiContrast\\){--badge-color: var(--likec4-palette-hiContrast)}.bg_dots{background:dots}.bg_transparent{background:var(--colors-transparent)}.m_0{margin:var(--spacing-0)}.p_0{padding:var(--spacing-0)}.bg_likec4\\.overlay\\.body{background:var(--colors-likec4-overlay-body)}.p_xl{padding:var(--spacing-xl)}.bd_1px_solid{border:1px solid}.bg_mantine\\.colors\\.default{background:var(--colors-mantine-colors-default)}.p_\\[4px_7px\\]{padding:4px 7px}.bg_\\[transparent\\]{background:var(--colors-transparent)}.p_1{padding:var(--spacing-1)}.p_4{padding:var(--spacing-4)}.bd_default{border:var(--borders-default)}.p_0\\.5{padding:var(--spacing-0\\.5)}.m_xs{margin:var(--spacing-xs)}.p_md{padding:var(--spacing-md)}.p_1\\.5{padding:var(--spacing-1\\.5)}.p_8{padding:var(--spacing-8)}.p_xxs{padding:var(--spacing-xxs)}.p_\\[4px_6px\\]{padding:4px 6px}.bg_mantine\\.colors\\.gray\\[2\\]{background:var(--colors-mantine-colors-gray\\[2\\])}.bg_mantine\\.colors\\.gray\\[3\\]{background:var(--colors-mantine-colors-gray\\[3\\])}.bd_2px_solid{border:2px solid}.inset_0{inset:var(--spacing-0)}.bd_transparent{border:var(--borders-transparent)}.bd_none{border:var(--borders-none)}.bg_mantine\\.colors\\.body{background:var(--colors-mantine-colors-body)}.p_\\[10px_8px\\]{padding:10px 8px}.bd_1px_dashed{border:1px dashed}.bg_mantine\\.colors\\.gray\\[1\\]{background:var(--colors-mantine-colors-gray\\[1\\])}.p_\\[6px_8px\\]{padding:6px 8px}.bd_3\\.5px_solid{border:3.5px solid}.p_xs{padding:var(--spacing-xs)}.p_\\[4px_8px\\]{padding:4px 8px}.p_\\[1px_4px\\]{padding:1px 4px}.p_\\[3px_6px\\]{padding:3px 6px}.bg_var\\(--likec4-palette-fill\\)\\/75{--mix-background: color-mix(in srgb, var(--likec4-palette-fill) 75%, transparent);background:var(--mix-background, var(--likec4-palette-fill))}.bd_1px_solid_\\{colors\\.mantine\\.colors\\.defaultBorder\\}{border:1px solid var(--colors-mantine-colors-default-border)}.p_\\[1px_5px\\]{padding:1px 5px}.bg_mantine\\.colors\\.dark\\[7\\]{background:var(--colors-mantine-colors-dark\\[7\\])}.p_\\[6px_2px_0_2px\\]{padding:6px 2px 0}.p_\\[0_4px_5px_4px\\]{padding:0 4px 5px}.bg_mantine\\.colors\\.dark\\[9\\]\\/30{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-dark\\[9\\]) 30%, transparent);background:var(--mix-background, var(--colors-mantine-colors-dark\\[9\\]))}.bg_mantine\\.colors\\.primary\\[8\\]{background:var(--colors-mantine-colors-primary\\[8\\])}.p_\\[12px_8px_12px_14px\\]{padding:12px 8px 12px 14px}.bd_2px_dashed{border:2px dashed}.p_2{padding:var(--spacing-2)}.bd_3px_dashed{border:3px dashed}.gap_20{gap:20px}.bdr_sm{border-radius:var(--radii-sm)}.bd-w_3{border-width:3px}.bd-c_likec4\\.overlay\\.border{border-color:var(--colors-likec4-overlay-border)}.ring_none{outline:var(--borders-none)}.gap_lg{gap:var(--spacing-lg)}.gap_md{gap:var(--spacing-md)}.gap_sm{gap:var(--spacing-sm)}.flex_1{flex:1 1 0%}.transition_fast{transition:all var(--durations-fast) var(--easings-in-out)}.td_none{text-decoration:none}.bd-c_mantine\\.colors\\.defaultBorder{border-color:var(--colors-mantine-colors-default-border)}.gap_xs{gap:var(--spacing-xs)}.gap_xxs{gap:var(--spacing-xxs)}.gap_1{gap:var(--spacing-1)}.ov_hidden{overflow:hidden}.gap_0\\.5{gap:var(--spacing-0\\.5)}.gap_\\[4px\\]{gap:4px}.px_xs{padding-inline:var(--spacing-xs)}.py_xxs{padding-block:var(--spacing-xxs)}.px_sm{padding-inline:var(--spacing-sm)}.gap_8px{gap:8px}.gap_1\\.5{gap:var(--spacing-1\\.5)}.bdr_\\[4px\\]{border-radius:4px}.px_1\\.5{padding-inline:var(--spacing-1\\.5)}.gap_3{gap:var(--spacing-3)}.mx_calc\\(var\\(--bleed-x\\,_0\\)_\\*_-1\\){margin-inline:calc(var(--bleed-x, 0) * -1)}.my_calc\\(var\\(--bleed-y\\,_0\\)_\\*_-1\\){margin-block:calc(var(--bleed-y, 0) * -1)}.py_2\\.5{padding-block:var(--spacing-2\\.5)}.px_2{padding-inline:var(--spacing-2)}.gap_2{gap:var(--spacing-2)}.offset_2{offset:2px}.py_1\\.5{padding-block:var(--spacing-1\\.5)}.bd-l_2px_dotted{border-left:2px dotted}.px_1{padding-inline:var(--spacing-1)}.py_0\\.5{padding-block:var(--spacing-0\\.5)}.bdr_\\[2px\\]{border-radius:2px}.bd-w_4{border-width:4px}.px_4{padding-inline:var(--spacing-4)}.py_1{padding-block:var(--spacing-1)}.gap_\\[1px\\]{gap:1px}.ov_auto{overflow:auto}.ovs-b_contain{overscroll-behavior:contain}.ov_visible{overflow:visible}.px_xxs{padding-inline:var(--spacing-xxs)}.my_10{margin-block:var(--spacing-10)}.flex_1_1_40\\%{flex:1 1 40%}.bd-c_mantine\\.colors\\.gray\\[4\\]{border-color:var(--colors-mantine-colors-gray\\[4\\])}.bd-c_mantine\\.colors\\.gray\\[5\\]{border-color:var(--colors-mantine-colors-gray\\[5\\])}.bdr_3{border-radius:3px}.bd-c_mantine\\.colors\\.orange\\[6\\]{border-color:var(--colors-mantine-colors-orange\\[6\\])}.tw_pretty{text-wrap:pretty}.flex_0{flex:0}.flex_0_0_40px{flex:0 0 40px}.gap_\\[24px_20px\\]{gap:24px 20px}.bd-c_mantine\\.colors\\.dark\\[3\\]{border-color:var(--colors-mantine-colors-dark\\[3\\])}.bd-t_none{border-top:var(--borders-none)}.bd-l_none{border-left:var(--borders-none)}.bdr_2px{border-radius:2px}.gap_4{gap:var(--spacing-4)}.gap_6{gap:var(--spacing-6)}.gap_\\[12px_16px\\]{gap:12px 16px}.bd-c_mantine\\.colors\\.gray\\[3\\]{border-color:var(--colors-mantine-colors-gray\\[3\\])}.flex_0_1_auto{flex:0 1 auto}.transition_all_150ms_ease{transition:all .15s ease}.bdr_xs{border-radius:var(--radii-xs)}.flex_1_1_100\\%{flex:1 1 100%}.offset_0{offset:0}.py_4{padding-block:var(--spacing-4)}.gap_8{gap:var(--spacing-8)}.px_md{padding-inline:var(--spacing-md)}.py_xs{padding-block:var(--spacing-xs)}.grid-c_1{grid-column:1}.grid-c_2{grid-column:2}.grid-c_3{grid-column:3}.bd-b_1px_solid{border-bottom:1px solid}.gap_0{gap:var(--spacing-0)}.gap_\\[10px_12px\\]{gap:10px 12px}.py_3{padding-block:var(--spacing-3)}.offset_4{offset:4px}.flex_1_0_auto{flex:1 0 auto}.ring_none\\!{outline:var(--borders-none)!important}.bdr_4px{border-radius:4px}.mx_auto{margin-inline:auto}.py_md{padding-block:var(--spacing-md)}.bd-c_mantine\\.colors\\.primary\\[9\\]{border-color:var(--colors-mantine-colors-primary\\[9\\])}.flex_0_0_var\\(--likec4-icon-size\\,_24px\\){flex:0 0 var(--likec4-icon-size, 24px)}.bdr_md{border-radius:var(--radii-md)}.py_xl{padding-block:var(--spacing-xl)}.bd-w_1{border-width:1px}.bd-c_\\[var\\(--_color\\)\\/30\\]{--mix-borderColor: color-mix(in srgb, var(--_color) 30%, transparent);border-color:var(--mix-borderColor, var(--_color))}.transition_all_100ms_ease-in{transition:all .1s ease-in}.transition_all_150ms_ease-in-out{transition:all .15s ease-in-out}.py_sm{padding-block:var(--spacing-sm)}.flex_0_0_auto{flex:0 0 auto}.flex_0_0_70px{flex:0 0 70px}.bd-w_3px{border-width:3px}.border-style_dashed{border-style:dashed}.px_3{padding-inline:var(--spacing-3)}.px_5{padding-inline:var(--spacing-5)}.gap_6px{gap:6px}.px_4px{padding-inline:4px}.cursor_pointer{cursor:pointer}.pos_absolute{position:absolute}.z_999{z-index:999}.c_gray{color:gray}.pos_fixed{position:fixed}.bx-sh_xl{box-shadow:var(--shadows-xl)}.d_flex{display:flex}.ai_flex-start{align-items:flex-start}.flex-d_row{flex-direction:row}.flex-wrap_nowrap{flex-wrap:nowrap}.ai_center{align-items:center}.c_red{color:red}.ai_stretch{align-items:stretch}.flex-d_column{flex-direction:column}.c_teal{color:teal}.op_1{opacity:1}.op_0\\.45{opacity:.45}.us_all{-webkit-user-select:all;user-select:all}.bg-c_transparent{background-color:var(--colors-transparent)}.stk_2\\.5{stroke:2.5px}.op_0\\.7{opacity:.7}.fill_\\[\\#FCFBF7\\]{fill:#fcfbf7}.bx-sh_xs{box-shadow:var(--shadows-xs)}.fs_sm{font-size:var(--font-sizes-sm)}.fw_500{font-weight:500}.c_mantine\\.colors\\.placeholder{color:var(--colors-mantine-colors-placeholder)}.fs_11px{font-size:11px}.fw_600{font-weight:600}.lh_1{line-height:var(--line-heights-1)}.stk_2{stroke:2px}.pointer-events_none{pointer-events:none}.main-axis_4{main-axis:4px}.pos_bottom-start{position:bottom-start}.pos_relative{position:relative}.pointer-events_all{pointer-events:all}.us_none{-webkit-user-select:none;user-select:none}.d_none{display:none}.flex-sh_1{flex-shrink:1}.flex-g_1{flex-grow:1}.flex-g_0{flex-grow:0}.op_0\\.3{opacity:.3}.bg-c_mantine\\.colors\\.gray\\[1\\]{background-color:var(--colors-mantine-colors-gray\\[1\\])}.stk_1\\.5{stroke:1.5px}.bd-e-w_var\\(--thickness\\){border-inline-end-width:var(--thickness)}.c_mantine\\.colors\\.gray\\[5\\]{color:var(--colors-mantine-colors-gray\\[5\\])}.bg-c_likec4\\.panel\\.action\\.warning\\.bg{background-color:var(--colors-likec4-panel-action-warning-bg)}.c_likec4\\.panel\\.action{color:var(--colors-likec4-panel-action)}.trunc_true{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c_likec4\\.panel\\.text\\.dimmed{color:var(--colors-likec4-panel-text-dimmed)}.bg-c_\\[rgb\\(34_34_34_\\/_var\\(--_opacity\\,_95\\%\\)\\)\\]{background-color:rgb(34 34 34 / var(--_opacity, 95%))}.bkdp_auto{backdrop-filter:var(--backdrop-blur, ) var(--backdrop-brightness, ) var(--backdrop-contrast, ) var(--backdrop-grayscale, ) var(--backdrop-hue-rotate, ) var(--backdrop-invert, ) var(--backdrop-opacity, ) var(--backdrop-saturate, ) var(--backdrop-sepia, );-webkit-backdrop-filter:var(--backdrop-blur, ) var(--backdrop-brightness, ) var(--backdrop-contrast, ) var(--backdrop-grayscale, ) var(--backdrop-hue-rotate, ) var(--backdrop-invert, ) var(--backdrop-opacity, ) var(--backdrop-saturate, ) var(--backdrop-sepia, )}.bkdp-blur_var\\(--_blur\\,_10px\\){--backdrop-blur: blur(var(--_blur, 10px))}.jc_stretch{justify-content:stretch}.cq-n_likec4-search-elements{container-name:likec4-search-elements}.cq-t_size{container-type:size}.d_contents{display:contents}.d_grid{display:grid}.order_6{order:6}.stk_1\\.8{stroke:1.8px}.trunc_end{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trs-dur_normal{--transition-duration: var(--durations-normal);transition-duration:var(--durations-normal)}.trs-dly_0\\.2s{transition-delay:.2s}.fill_none{fill:var(--colors-none)}.stk-w_calc\\(var\\(--xy-edge-stroke-width\\)_\\+_2\\){stroke-width:calc(var(--xy-edge-stroke-width) + 2)}.stk-op_0\\.08{stroke-opacity:.08}.fill_\\[var\\(--xy-edge-stroke\\)\\]{fill:var(--xy-edge-stroke)}.stk_\\[var\\(--xy-edge-stroke\\)\\]{stroke:var(--xy-edge-stroke)}.stk-do_0{stroke-dashoffset:0}.jc_center{justify-content:center}.z_1{z-index:var(--z-index-1)}.ai_flex-end{align-items:flex-end}.justify-items_stretch{justify-items:stretch}.fs_lg{font-size:var(--font-sizes-lg)}.ai_baseline{align-items:baseline}.flex-wrap_wrap{flex-wrap:wrap}.translate_auto{translate:var(--translate-x) var(--translate-y)}.translate-x_\\[-8px\\]{--translate-x: -8px}.bd-be-w_var\\(--thickness\\){border-block-end-width:var(--thickness)}.cursor_default{cursor:default}.pos_top-start{position:top-start}.op_0\\.65{opacity:.65}.d_block{display:block}.fs_xxs{font-size:var(--font-sizes-xxs)}.lh_sm{line-height:var(--line-heights-sm)}.c_mantine\\.colors\\.dimmed{color:var(--colors-mantine-colors-dimmed)}.white-space_nowrap{white-space:nowrap}.white-space-collapse_preserve-breaks{white-space-collapse:preserve-breaks}.fs_xs{font-size:var(--font-sizes-xs)}.fw_medium{font-weight:var(--font-weights-medium)}.trf_translateY\\(-4px\\){transform:translateY(-4px)}.c_mantine\\.colors\\.gray\\[9\\]{color:var(--colors-mantine-colors-gray\\[9\\])}.bx-sh_lg{box-shadow:var(--shadows-lg)}.c_likec4\\.panel\\.text{color:var(--colors-likec4-panel-text)}.c_orange{color:orange}.c_green{color:green}.pos_bottom-end{position:bottom-end}.op_0\\.8{opacity:.8}.op_0\\.5{opacity:.5}.me_0\\.5{margin-inline-end:var(--spacing-0\\.5)}.cross-axis_-22{cross-axis:-22px}.fw_400{font-weight:400}.bx-sh_md{box-shadow:var(--shadows-md)}.main-axis_2{main-axis:2px}.lh_1\\.1{line-height:1.1}.pos_right-start{position:right-start}.main-axis_10{main-axis:10px}.op_0\\.6{opacity:.6}.pos_top{position:top}.pos_right{position:right}.main-axis_12{main-axis:12px}.ta_center{text-align:center}.bx-sh_inset_1px_1px_3px_0px_\\#00000024{box-shadow:inset 1px 1px 3px #00000024}.trf_translate\\(-50\\%\\,_-50\\%\\){transform:translate(-50%,-50%)}.flex-sh_0{flex-shrink:0}.ms_0{margin-inline-start:var(--spacing-0)}.z_9{z-index:9}.ta_left{text-align:left}.lh_1\\.25{line-height:1.25}.bx-s_border-box{box-sizing:border-box}.c_mantine\\.colors\\.text{color:var(--colors-mantine-colors-text)}.bg-c_mantine\\.colors\\.body{background-color:var(--colors-mantine-colors-body)}.bg-i_linear-gradient\\(180deg\\,_color-mix\\(in_srgb\\,_var\\(--likec4-palette-fill\\)_60\\%\\,_transparent\\)\\,_color-mix\\(in_srgb\\,_var\\(--likec4-palette-fill\\)_20\\%\\,_transparent\\)_8px\\,_color-mix\\(in_srgb\\,_var\\(--likec4-palette-fill\\)_14\\%\\,_transparent\\)_20px\\,_transparent_80px_\\)\\,_linear-gradient\\(180deg\\,_var\\(--likec4-palette-fill\\)\\,_var\\(--likec4-palette-fill\\)_4px\\,_transparent_4px\\){background-image:linear-gradient(180deg,color-mix(in srgb,var(--likec4-palette-fill) 60%,transparent),color-mix(in srgb,var(--likec4-palette-fill) 20%,transparent) 8px,color-mix(in srgb,var(--likec4-palette-fill) 14%,transparent) 20px,transparent 80px),linear-gradient(180deg,var(--likec4-palette-fill),var(--likec4-palette-fill) 4px,transparent 4px)}.cursor_move{cursor:move}.ff_likec4\\.element{font-family:var(--fonts-likec4-element)}.font-optical-sizing_auto{font-optical-sizing:auto}.font-style_normal{font-style:normal}.fs_24px{font-size:24px}.lh_xs{line-height:var(--line-heights-xs)}.as_flex-start{align-self:flex-start}.c_\\[var\\(--view-title-color\\,_\\{colors\\.mantine\\.colors\\.gray\\[7\\]\\}\\)\\]{color:var(--view-title-color, var(--colors-mantine-colors-gray\\[7\\]))}.fs_15px{font-size:15px}.lh_1\\.4{line-height:1.4}.c_mantine\\.colors\\.gray\\[7\\]{color:var(--colors-mantine-colors-gray\\[7\\])}.grid-tc_min-content_1fr{grid-template-columns:min-content 1fr}.grid-ar_min-content_max-content{grid-auto-rows:min-content max-content}.justify-self_end{justify-self:end}.ta_right{text-align:right}.cursor_se-resize{cursor:se-resize}.ai_start{align-items:start}.jc_space-between{justify-content:space-between}.stk_1\\.6{stroke:1.6px}.grid-ar_min-content{grid-auto-rows:min-content}.white-space_pre-wrap{white-space:pre-wrap}.tov_unset{text-overflow:unset}.tov_ellipsis{text-overflow:ellipsis}.wb_break-word{word-break:break-word}.wb_normal{word-break:normal}.bg-c_mantine\\.colors\\.white{background-color:var(--colors-mantine-colors-white)}.jc_flex-end{justify-content:flex-end}.c_mantine\\.colors\\.gray\\[6\\]{color:var(--colors-mantine-colors-gray\\[6\\])}.fw_700{font-weight:700}.justify-self_stretch{justify-self:stretch}.as_start{align-self:start}.ps_\\[16px\\]{padding-inline-start:16px}.pe_2\\.5{padding-inline-end:var(--spacing-2\\.5)}.stk_1\\.2{stroke:1.2px}.d_inline-block{display:inline-block}.lh_1\\.2{line-height:1.2}.c_var\\(--likec4-palette-hiContrast\\){color:var(--likec4-palette-hiContrast)}.fs_xl{font-size:var(--font-sizes-xl)}.c_mantine\\.colors\\.defaultColor{color:var(--colors-mantine-colors-default-color)}.bx-sh_none{box-shadow:var(--shadows-none)}.d_inline-flex{display:inline-flex}.pos_top-right{position:top-right}.pos_top-left{position:top-left}.grid-cs_1{grid-column-start:1}.grid-ce_4{grid-column-end:4}.grid-tc_1fr_30px_1fr{grid-template-columns:1fr 30px 1fr}.justify-items_start{justify-items:start}.c_dark{color:dark}.stk_3\\.5{stroke:3.5px}.cq-n_likec4-tree{container-name:likec4-tree}.cq-t_inline-size{container-type:inline-size}.fs_10px{font-size:10px}.lh_1\\.3{line-height:1.3}.order_2{order:2}.grayscale_0\\.9{--grayscale: grayscale(.9)}.filter_auto{filter:var(--blur, ) var(--brightness, ) var(--contrast, ) var(--grayscale, ) var(--hue-rotate, ) var(--invert, ) var(--saturate, ) var(--sepia, ) var(--drop-shadow, )}.cross-axis_50{cross-axis:50px}.sr_true{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fs_13px{font-size:13px}.fs_16px{font-size:16px}.c_mantine\\.colors\\.dark\\[1\\]{color:var(--colors-mantine-colors-dark\\[1\\])}.fs_12px{font-size:12px}.fs_md{font-size:var(--font-sizes-md)}.bg-c_\\[rgb\\(34_34_34_\\/_0\\.7\\)\\]{background-color:#222222b3}.z_902{z-index:902}.bkdp-blur_10px{--backdrop-blur: blur(10px)}.trf_translateX\\(-50\\%\\){transform:translate(-50%)}.z_903{z-index:903}.mix-bm_normal{mix-blend-mode:normal}.fill_var\\(--likec4-palette-relation-stroke\\){fill:var(--likec4-palette-relation-stroke)}.stk_var\\(--likec4-palette-relation-stroke\\){stroke:var(--likec4-palette-relation-stroke)}.fill-opacity_0\\.75{fill-opacity:.75}.stk-w_1{stroke-width:1}.cursor_grab{cursor:grab}.pointer-events_auto{pointer-events:auto}.vis_hidden{visibility:hidden}.cursor_grabbing{cursor:grabbing}.bg-c_var\\(--likec4-palette-fill\\)\\/15{--mix-backgroundColor: color-mix(in srgb, var(--likec4-palette-fill) 15%, transparent);background-color:var(--mix-backgroundColor, var(--likec4-palette-fill))}.fw_bold{font-weight:700}.ls_\\.75px{letter-spacing:.75px}.c_\\[var\\(--_color\\)\\/75\\]{--mix-color: color-mix(in srgb, var(--_color) 75%, transparent);color:var(--mix-color, var(--_color))}.bg-c_var\\(--likec4-palette-fill\\){background-color:var(--likec4-palette-fill)}.translate-x_-1\\/2{--translate-x: -50%}.translate-y_-1\\/2{--translate-y: -50%}.bg-c_mantine\\.colors\\.body\\/80{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-body) 80%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-body))}.fill_var\\(--likec4-palette-fill\\){fill:var(--likec4-palette-fill)}.stk_var\\(--likec4-palette-stroke\\){stroke:var(--likec4-palette-stroke)}.filter_drop-shadow\\(0_2px_3px_rgb\\(0_0_0_\\/_22\\%\\)\\)_drop-shadow\\(0_1px_8px_rgb\\(0_0_0_\\/_10\\%\\)\\){filter:drop-shadow(0 2px 3px rgb(0 0 0 / 22%)) drop-shadow(0 1px 8px rgb(0 0 0 / 10%))}.ls_0\\.2px{letter-spacing:.2px}.tt_lowercase{text-transform:lowercase}.op_0\\.25{opacity:.25}.stk-w_5{stroke-width:5}.pos_right-end{position:right-end}.jc_flex-start{justify-content:flex-start}.pos_left-start{position:left-start}.top_4{top:var(--spacing-4)}.right_4{right:var(--spacing-4)}.top_10{top:var(--spacing-10)}.left_10{left:var(--spacing-10)}.w_\\[calc\\(100vw_-_\\(\\{spacing\\.10\\}_\\*_2\\)\\)\\]{width:calc(100vw - (var(--spacing-10) * 2))}.h_max-content{height:max-content}.max-h_\\[calc\\(100vh_-_\\(\\{spacing\\.10\\}_\\*_3\\)\\)\\]{max-height:calc(100vh - (var(--spacing-10) * 3))}.mt_md{margin-top:var(--spacing-md)}.min-h_24{min-height:24px}.max-w_500{max-width:500px}.pr_0{padding-right:var(--spacing-0)}.h_12{height:12px}.w_12{width:12px}.h_30px{height:30px}.pl_sm{padding-left:var(--spacing-sm)}.pr_1{padding-right:var(--spacing-1)}.w_100\\%{width:var(--sizes-100\\%)}.pr_2\\.5{padding-right:var(--spacing-2\\.5)}.top_0{top:var(--spacing-0)}.left_0{left:var(--spacing-0)}.max-w_calc\\(100vw\\){max-width:100vw}.max-w_200px{max-width:200px}.max-w_calc\\(100vw_-_50px\\){max-width:calc(100vw - 50px)}.max-w_calc\\(100vw_-_250px\\){max-width:calc(100vw - 250px)}.max-h_calc\\(100vh_-_200px\\){max-height:calc(100vh - 200px)}.max-h_calc\\(100vh_-_160px\\){max-height:calc(100vh - 160px)}.h_100\\%{height:var(--sizes-100\\%)}.mb_1{margin-bottom:var(--spacing-1)}.max-h_100vh{max-height:100vh}.pt_\\[20px\\]{padding-top:20px}.pl_md{padding-left:var(--spacing-md)}.pr_md{padding-right:var(--spacing-md)}.pb_sm{padding-bottom:var(--spacing-sm)}.pr_xs{padding-right:var(--spacing-xs)}.lc_5{-webkit-line-clamp:5}.lc_5,.lc_2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.lc_2{-webkit-line-clamp:2}.lc_3{overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.max-h_8rem{max-height:8rem}.top_0\\.5{top:var(--spacing-0\\.5)}.right_0\\.5{right:var(--spacing-0\\.5)}.w_full{width:var(--sizes-full)}.h_full{height:var(--sizes-full)}.bottom_0{bottom:var(--spacing-0)}.max-w_50{max-width:50px}.h_5{height:5px}.w_max-content{width:max-content}.pt_2{padding-top:var(--spacing-2)}.mt_2{margin-top:var(--spacing-2)}.mt_0{margin-top:var(--spacing-0)}.pl_2\\.5{padding-left:var(--spacing-2\\.5)}.bd-l-c_mantine\\.colors\\.gray\\[3\\]{border-left-color:var(--colors-mantine-colors-gray\\[3\\])}.bdr-bl_sm{border-bottom-left-radius:var(--radii-sm)}.bdr-br_sm{border-bottom-right-radius:var(--radii-sm)}.pl_3{padding-left:var(--spacing-3)}.w_\\[20px\\]{width:20px}.mt_1{margin-top:var(--spacing-1)}.mb_xxs{margin-bottom:var(--spacing-xxs)}.pb_lg{padding-bottom:var(--spacing-lg)}.max-w_calc\\(100cqw_-_52px\\){max-width:calc(100cqw - 52px)}.min-w_200px{min-width:200px}.max-h_calc\\(100cqh_-_100px\\){max-height:calc(100cqh - 100px)}.mt_4{margin-top:var(--spacing-4)}.mt_xs{margin-top:var(--spacing-xs)}.h_auto{height:auto}.pt_6{padding-top:var(--spacing-6)}.mb_10{margin-bottom:var(--spacing-10)}.pt_100\\%{padding-top:100%}.left_2{left:var(--spacing-2)}.bottom_2{bottom:var(--spacing-2)}.top_md{top:var(--spacing-md)}.left_md{left:var(--spacing-md)}.w_8{width:8px}.h_8{height:8px}.mr_sm{margin-right:var(--spacing-sm)}.h_26{height:26px}.top_\\[1px\\]{top:1px}.right_\\[1px\\]{right:1px}.pt_xxs{padding-top:var(--spacing-xxs)}.max-w_calc\\(100cqw_-_32px\\){max-width:calc(100cqw - 32px)}.min-w_calc\\(100cqw_-_50px\\){min-width:calc(100cqw - 50px)}.w_100vw{width:100vw}.h_100vh{height:100vh}.max-w_100vw{max-width:100vw}.h_40px{height:40px}.w_40px{width:40px}.w_14px{width:14px}.h_14px{height:14px}.bottom_0\\.5{bottom:var(--spacing-0\\.5)}.mb_sm{margin-bottom:var(--spacing-sm)}.lc_1{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.mt_6{margin-top:var(--spacing-6)}.pt_xs{padding-top:var(--spacing-xs)}.w_300{width:300px}.min-w_0{min-width:0}.min-h_32px{min-height:32px}.max-w_min\\(200px\\,_100\\%\\){max-width:min(200px,100%)}.min-w_60px{min-width:60px}.mb_0{margin-bottom:var(--spacing-0)}.h_36px{height:36px}.min-w_24{min-width:24px}.mb_4{margin-bottom:var(--spacing-4)}.top_12{top:12px}.right_12{right:12px}.mt_sm{margin-top:var(--spacing-sm)}.ml_sm{margin-left:var(--spacing-sm)}.pl_1{padding-left:var(--spacing-1)}.bd-b-c_mantine\\.colors\\.defaultBorder{border-bottom-color:var(--colors-mantine-colors-default-border)}.max-h_70vh{max-height:70vh}.mb_2{margin-bottom:var(--spacing-2)}.max-w_8xl{max-width:8xl}.pl_\\[48px\\]{padding-left:48px}.mr_1{margin-right:var(--spacing-1)}.min-h_60px{min-height:60px}.h_var\\(--likec4-icon-size\\,_24px\\){height:var(--likec4-icon-size, 24px)}.w_var\\(--likec4-icon-size\\,_24px\\){width:var(--likec4-icon-size, 24px)}.top_\\[2rem\\]{top:2rem}.left_\\[50\\%\\]{left:50%}.max-w_600px{max-width:600px}.pl_2{padding-left:var(--spacing-2)}.pt_0\\.5{padding-top:var(--spacing-0\\.5)}.w_5px{width:5px}.top_1{top:var(--spacing-1)}.right_0{right:var(--spacing-0)}.w_min-content{width:min-content}.h_min-content{height:min-content}.min-w_200{min-width:200px}.max-w_calc\\(100vw_-_20px\\){max-width:calc(100vw - 20px)}.pt_0{padding-top:var(--spacing-0)}.pb_0{padding-bottom:var(--spacing-0)}.ml_2{margin-left:var(--spacing-2)}.h_xs{height:xs}.pb_8{padding-bottom:var(--spacing-8)}.pt_4{padding-top:var(--spacing-4)}.max-w_220px{max-width:220px}.\\[\\&_\\.action-icon\\]\\:--ai-size_2rem .action-icon{--ai-size: 2rem}[data-mantine-color-scheme=light] .light\\:--icon-color_\\{colors\\.mantine\\.colors\\.gray\\[6\\]\\}{--icon-color: var(--colors-mantine-colors-gray\\[6\\])}[data-mantine-color-scheme=light] .light\\:--view-title-color_\\{colors\\.mantine\\.colors\\.gray\\[7\\]\\}{--view-title-color: var(--colors-mantine-colors-gray\\[7\\])}.\\[\\&_\\.mantine-ThemeIcon-root\\]\\:--ti-size_22px .mantine-ThemeIcon-root{--ti-size: 22px}[data-mantine-color-scheme=dark] .dark\\:--_color_\\[color-mix\\(in_srgb\\,_var\\(--likec4-palette-hiContrast\\)_40\\%\\,_var\\(--likec4-palette-fill\\)\\)\\]{--_color: color-mix(in srgb, var(--likec4-palette-hiContrast) 40%, var(--likec4-palette-fill))}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:--ai-radius_\\{radii\\.md\\}{--ai-radius: var(--radii-md)}.backdrop\\:bg_\\[color-mix\\(in_oklab\\,_\\{colors\\.likec4\\.overlay\\.backdrop\\}_60\\%\\,_transparent\\)\\]::backdrop{background:color-mix(in oklab,var(--colors-likec4-overlay-backdrop) 60%,transparent)}[data-mantine-color-scheme=light] .light\\:bg_mantine\\.colors\\.white{background:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=dark] .dark\\:bg_mantine\\.colors\\.dark\\[6\\]{background:var(--colors-mantine-colors-dark\\[6\\])}[data-mantine-color-scheme=light] .light\\:bg_var\\(--likec4-palette-fill\\)\\/90{--mix-background: color-mix(in srgb, var(--likec4-palette-fill) 90%, transparent);background:var(--mix-background, var(--likec4-palette-fill))}[data-mantine-color-scheme=dark] .dark\\:bg_var\\(--likec4-palette-fill\\)\\/60{--mix-background: color-mix(in srgb, var(--likec4-palette-fill) 60%, transparent);background:var(--mix-background, var(--likec4-palette-fill))}[data-mantine-color-scheme=dark] .dark\\:bg_mantine\\.colors\\.dark\\[5\\]{background:var(--colors-mantine-colors-dark\\[5\\])}[data-mantine-color-scheme=dark] .dark\\:bg_mantine\\.colors\\.dark\\[7\\]{background:var(--colors-mantine-colors-dark\\[7\\])}.\\[\\&\\[data-active\\]\\]\\:bg_mantine\\.colors\\.white[data-active]{background:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=light] .light\\:bg_mantine\\.colors\\.gray\\[1\\]{background:var(--colors-mantine-colors-gray\\[1\\])}.\\[\\&\\[data-missing\\]\\]\\:bg_mantine\\.colors\\.orange\\[8\\]\\/15[data-missing]{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-orange\\[8\\]) 15%, transparent);background:var(--mix-background, var(--colors-mantine-colors-orange\\[8\\]))}.\\[\\&\\[data-missing\\]\\]\\:bg_mantine\\.colors\\.orange\\[8\\]\\/20[data-missing]{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-orange\\[8\\]) 20%, transparent);background:var(--mix-background, var(--colors-mantine-colors-orange\\[8\\]))}[data-mantine-color-scheme=light] .light\\:bg_mantine\\.colors\\.gray\\[3\\]\\/20{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-gray\\[3\\]) 20%, transparent);background:var(--mix-background, var(--colors-mantine-colors-gray\\[3\\]))}[data-mantine-color-scheme=dark] .dark\\:bg_mantine\\.colors\\.dark\\[6\\]\\/80{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-dark\\[6\\]) 80%, transparent);background:var(--mix-background, var(--colors-mantine-colors-dark\\[6\\]))}[data-mantine-color-scheme=light] .light\\:bg_mantine\\.colors\\.white\\/80{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-white) 80%, transparent);background:var(--mix-background, var(--colors-mantine-colors-white))}[data-mantine-color-scheme=light] .light\\:bd-c_mantine\\.colors\\.gray\\[4\\]{border-color:var(--colors-mantine-colors-gray\\[4\\])}[data-mantine-color-scheme=dark] .dark\\:bd-c_mantine\\.colors\\.dark\\[4\\]{border-color:var(--colors-mantine-colors-dark\\[4\\])}.likec4-root:is([data-likec4-diagram-panning=true]) .whenPanning\\:transition_none\\!{transition:none!important}[data-mantine-color-scheme=light] .light\\:bd-c_mantine\\.colors\\.gray\\[2\\]{border-color:var(--colors-mantine-colors-gray\\[2\\])}[data-mantine-color-scheme=dark] .dark\\:bd-c_mantine\\.colors\\.dark\\[7\\]{border-color:var(--colors-mantine-colors-dark\\[7\\])}.likec4-root:is([data-likec4-reduced-graphics]) .reduceGraphics\\:transition_none{transition:none}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:transition_stroke_130ms_ease-out\\,stroke-width_130ms_ease-out{transition:stroke .13s ease-out,stroke-width .13s ease-out}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:bdr_4{border-radius:4px}.\\[\\&_\\.mantine-ThemeIcon-root\\]\\:transition_fast .mantine-ThemeIcon-root{transition:all var(--durations-fast) var(--easings-in-out)}.\\[\\&_\\>_\\*\\]\\:transition_all_130ms_\\{easings\\.inOut\\}>*{transition:all .13s var(--easings-in-out)}.\\[\\&\\[data-active\\]\\]\\:transition_none[data-active]{transition:none}.\\[\\&_\\>_\\*\\]\\:transition_fast>*,.\\[\\&_\\.tabler-icon\\]\\:transition_fast .tabler-icon{transition:all var(--durations-fast) var(--easings-in-out)}.\\[\\&\\[data-missing\\]\\]\\:bd-c_mantine\\.colors\\.orange\\[5\\]\\/20[data-missing]{--mix-borderColor: color-mix(in srgb, var(--colors-mantine-colors-orange\\[5\\]) 20%, transparent);border-color:var(--mix-borderColor, var(--colors-mantine-colors-orange\\[5\\]))}[data-mantine-color-scheme=light] .light\\:bd-c_mantine\\.colors\\.gray\\[3\\]{border-color:var(--colors-mantine-colors-gray\\[3\\])}.\\[\\&\\:last-child_\\.likec4-edge-label\\]\\:bd-b_none:last-child .likec4-edge-label{border-bottom:var(--borders-none)}.\\[\\&_\\>_\\*\\]\\:transition_all_0\\.15s_ease-in>*{transition:all .15s ease-in}[data-mantine-color-scheme=dark] .dark\\:bd-c_transparent{border-color:var(--colors-transparent)}:where([data-likec4-selected=true],[data-likec4-hovered=true]) .\\[\\:where\\(\\[data-likec4-selected\\=\\'true\\'\\]\\,_\\[data-likec4-hovered\\=\\'true\\'\\]\\)_\\&\\]\\:transition_fill-opacity_150ms_ease-out\\,_stroke_150ms_ease-out\\,_stroke-width_150ms_ease-out{transition:fill-opacity .15s ease-out,stroke .15s ease-out,stroke-width .15s ease-out}.\\[\\&_\\:where\\(\\.likec4-diagram\\,_\\.likec4-compound-node\\,_\\.likec4-element-node\\)\\]\\:cursor_pointer :where(.likec4-diagram,.likec4-compound-node,.likec4-element-node){cursor:pointer}.backdrop\\:cursor_zoom-out::backdrop{cursor:zoom-out}.backdrop\\:bkdp_blur\\(18px\\)::backdrop{backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.\\[\\&\\:is\\(\\[data-position\\=\\"left\\"\\]\\)\\]\\:c_mantine\\.colors\\.dimmed:is([data-position=left]){color:var(--colors-mantine-colors-dimmed)}.\\[\\&\\:is\\(\\[data-position\\=\\"left\\"\\]\\)\\]\\:us_none:is([data-position=left]){-webkit-user-select:none;user-select:none}.\\[\\&\\:is\\(\\[data-position\\=\\"left\\"\\]\\)\\]\\:pointer-events_none:is([data-position=left]){pointer-events:none}[data-mantine-color-scheme=light] .light\\:fill_\\[\\#222221\\]{fill:#222221}.\\[\\&_\\.tabler-icon\\]\\:c_mantine\\.colors\\.text .tabler-icon{color:var(--colors-mantine-colors-text)}.likec4-root:is([data-likec4-diagram-panning=true]) .whenPanning\\:bx-sh_none\\!{box-shadow:var(--shadows-none)!important}[data-mantine-color-scheme=light] .light\\:c_mantine\\.colors\\.gray\\[7\\]{color:var(--colors-mantine-colors-gray\\[7\\])}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.dark\\[0\\]{color:var(--colors-mantine-colors-dark\\[0\\])}[data-mantine-color-scheme=light] .light\\:bg-c_mantine\\.colors\\.gray\\[2\\]\\/70{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-gray\\[2\\]) 70%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-gray\\[2\\]))}[data-mantine-color-scheme=dark] .dark\\:bg-c_mantine\\.colors\\.dark\\[8\\]\\/70{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-dark\\[8\\]) 70%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-dark\\[8\\]))}.empty\\:d_none:is(:empty,[data-empty]){display:none}.\\[\\&_\\>_mark\\]\\:bg-c_mantine\\.colors\\.yellow\\[2\\]\\/90>mark{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-yellow\\[2\\]) 90%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-yellow\\[2\\]))}[data-mantine-color-scheme=dark] .dark\\:op_0\\.5{opacity:.5}[data-mantine-color-scheme=dark] .dark\\:bg-c_mantine\\.colors\\.dark\\[5\\]\\/80{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-dark\\[5\\]) 80%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-dark\\[5\\]))}.placeholder\\:c_mantine\\.colors\\.dimmed::placeholder,.placeholder\\:c_mantine\\.colors\\.dimmed[data-placeholder]{color:var(--colors-mantine-colors-dimmed)}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.dark\\[3\\]{color:var(--colors-mantine-colors-dark\\[3\\])}[data-mantine-color-scheme=light] .light\\:bg-c_\\[rgb\\(250_250_250_\\/_var\\(--_opacity\\,_95\\%\\)\\)\\]{background-color:rgb(250 250 250 / var(--_opacity, 95%))}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:trs-prop_stroke-width\\,_stroke-opacity{--transition-prop: stroke-width, stroke-opacity;transition-property:stroke-width,stroke-opacity}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:trs-dur_fast{--transition-duration: var(--durations-fast);transition-duration:var(--durations-fast)}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:trs-tmf_inOut{--transition-easing: var(--easings-in-out);transition-timing-function:var(--easings-in-out)}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:trs-tmf_out{--transition-easing: var(--easings-out);transition-timing-function:var(--easings-out)}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:stk-w_calc\\(var\\(--xy-edge-stroke-width\\)_\\+_4\\){stroke-width:calc(var(--xy-edge-stroke-width) + 4)}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:stk-op_0\\.2{stroke-opacity:.2}:where(.react-flow__node,.react-flow__edge):is(.selected) .whenSelected\\:stk-w_calc\\(var\\(--xy-edge-stroke-width\\)_\\+_6\\){stroke-width:calc(var(--xy-edge-stroke-width) + 6)}:where(.react-flow__node,.react-flow__edge):is(.selected) .whenSelected\\:stk-op_0\\.25{stroke-opacity:.25}.likec4-root:not([data-likec4-reduced-graphics]) .noReduceGraphics\\:anim-ps_paused{animation-play-state:paused}:where([data-edge-dir=back]) .\\[\\:where\\(\\[data-edge-dir\\=\\'back\\'\\]\\)_\\&\\]\\:anim-dir_reverse{animation-direction:reverse}:where(.react-flow__node,.react-flow__edge):has([data-likec4-dimmed]) .whenDimmed\\:anim-ps_paused{animation-play-state:paused}:where([data-likec4-zoom-small=true]) .smallZoom\\:anim-n_none{animation-name:none}.likec4-root:is([data-likec4-diagram-panning=true]) .whenPanning\\:stk-dsh_none\\!{stroke-dasharray:none!important}.likec4-root:is([data-likec4-diagram-panning=true]) .whenPanning\\:anim-ps_paused{animation-play-state:paused}:where([data-likec4-zoom-small=true]) .smallZoom\\:d_none{display:none}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:pointer-events_all{pointer-events:all}:where(.react-flow__node.selectable:not(.dragging)) .\\[\\:where\\(\\.react-flow__node\\.selectable\\:not\\(\\.dragging\\)\\)_\\&\\]\\:cursor_pointer{cursor:pointer}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:trs-dly_\\.08s{transition-delay:.08s}.likec4-root:is([data-likec4-diagram-panning=true]) .whenPanning\\:pointer-events_none{pointer-events:none}[data-mantine-color-scheme=light] .light\\:c_var\\(--likec4-palette-hiContrast\\){color:var(--likec4-palette-hiContrast)}[data-mantine-color-scheme=dark] .dark\\:c_var\\(--likec4-palette-loContrast\\){color:var(--likec4-palette-loContrast)}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.gray\\[4\\]{color:var(--colors-mantine-colors-gray\\[4\\])}[data-mantine-color-scheme=light] .light\\:c_mantine\\.colors\\.gray\\[8\\]{color:var(--colors-mantine-colors-gray\\[8\\])}[data-mantine-color-scheme=light] .light\\:c_mantine\\.colors\\.gray\\[9\\]{color:var(--colors-mantine-colors-gray\\[9\\])}.\\[\\&\\:is\\(\\[data-position\\=\\"right\\"\\]\\)\\]\\:ms_1:is([data-position=right]){margin-inline-start:var(--spacing-1)}.\\[\\&_\\:where\\(button\\,_\\.action-icon\\,_\\[role\\=\\'dialog\\'\\]\\)\\]\\:pointer-events_all :where(button,.action-icon,[role=dialog]){pointer-events:all}.likec4-root:is([data-likec4-diagram-panning=true]) .whenPanning\\:bx-sh_none{box-shadow:var(--shadows-none)}.backdrop\\:bkdp_auto::backdrop{backdrop-filter:var(--backdrop-blur, ) var(--backdrop-brightness, ) var(--backdrop-contrast, ) var(--backdrop-grayscale, ) var(--backdrop-hue-rotate, ) var(--backdrop-invert, ) var(--backdrop-opacity, ) var(--backdrop-saturate, ) var(--backdrop-sepia, );-webkit-backdrop-filter:var(--backdrop-blur, ) var(--backdrop-brightness, ) var(--backdrop-contrast, ) var(--backdrop-grayscale, ) var(--backdrop-hue-rotate, ) var(--backdrop-invert, ) var(--backdrop-opacity, ) var(--backdrop-saturate, ) var(--backdrop-sepia, )}.backdrop\\:bkdp-blur_var\\(--_blur\\)::backdrop{--backdrop-blur: blur(var(--_blur))}.backdrop\\:bg-c_\\[rgb\\(36_36_36_\\/_var\\(--_opacity\\,_5\\%\\)\\)\\]::backdrop{background-color:rgb(36 36 36 / var(--_opacity, 5%))}[data-mantine-color-scheme=dark] .dark\\:bg-c_mantine\\.colors\\.dark\\[6\\]{background-color:var(--colors-mantine-colors-dark\\[6\\])}.\\[\\&_\\.react-flow__attribution\\]\\:d_none .react-flow__attribution{display:none}[data-mantine-color-scheme=dark] .dark\\:mix-bm_hard-light{mix-blend-mode:hard-light}.\\[\\&_\\:where\\(svg\\,_img\\)\\]\\:pointer-events_none :where(svg,img){pointer-events:none}.\\[\\&_\\:where\\(svg\\,_img\\)\\]\\:filter_drop-shadow\\(0_0_3px_rgb\\(0_0_0_\\/_10\\%\\)\\)_drop-shadow\\(0_1px_8px_rgb\\(0_0_0_\\/_5\\%\\)\\)_drop-shadow\\(1px_1px_16px_rgb\\(0_0_0_\\/_2\\%\\)\\) :where(svg,img){filter:drop-shadow(0 0 3px rgb(0 0 0 / 10%)) drop-shadow(0 1px 8px rgb(0 0 0 / 5%)) drop-shadow(1px 1px 16px rgb(0 0 0 / 2%))}.\\[\\&_img\\]\\:obj-f_contain img{object-fit:contain}.\\[\\&_\\.mantine-ThemeIcon-root\\]\\:c_\\[var\\(--icon-color\\,_\\{colors\\.mantine\\.colors\\.dark\\[2\\]\\}\\)\\] .mantine-ThemeIcon-root{color:var(--icon-color, var(--colors-mantine-colors-dark\\[2\\]))}.\\[\\&\\[data-active\\]\\]\\:bx-sh_xs[data-active]{box-shadow:var(--shadows-xs)}.\\[\\&\\[data-active\\]\\]\\:c_mantine\\.colors\\.defaultColor[data-active]{color:var(--colors-mantine-colors-default-color)}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.dark\\[1\\]{color:var(--colors-mantine-colors-dark\\[1\\])}[data-mantine-color-scheme=dark] .dark\\:bg-c_mantine\\.colors\\.dark\\[9\\]{background-color:var(--colors-mantine-colors-dark\\[9\\])}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.text{color:var(--colors-mantine-colors-text)}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.dark\\[2\\]{color:var(--colors-mantine-colors-dark\\[2\\])}[data-mantine-color-scheme=dark] .dark\\:c_mantine\\.colors\\.gray\\.lightColor{color:var(--colors-mantine-colors-gray-light-color)}.\\[\\&_\\.tabler-icon\\]\\:op_0\\.65 .tabler-icon{opacity:.65}.\\[\\&\\[data-missing\\]\\]\\:c_mantine\\.colors\\.orange\\[4\\][data-missing]{color:var(--colors-mantine-colors-orange\\[4\\])}.before\\:content_\\"scope\\:\\":before{content:"scope:"}.before\\:pos_absolute:before{position:absolute}.before\\:fs_xxs:before{font-size:var(--font-sizes-xxs)}.before\\:fw_500:before{font-weight:500}.before\\:lh_1:before{line-height:var(--line-heights-1)}.before\\:c_mantine\\.colors\\.dimmed:before{color:var(--colors-mantine-colors-dimmed)}.before\\:op_0\\.85:before{opacity:.85}.before\\:trf_translateY\\(-100\\%\\)_translateY\\(-2px\\):before{transform:translateY(-100%) translateY(-2px)}.\\[\\&\\[data-zero\\]\\]\\:c_mantine\\.colors\\.dimmed[data-zero]{color:var(--colors-mantine-colors-dimmed)}.\\[\\&_\\.mantine-Text-root\\]\\:c_mantine\\.colors\\.text\\/90 .mantine-Text-root{--mix-color: color-mix(in srgb, var(--colors-mantine-colors-text) 90%, transparent);color:var(--mix-color, var(--colors-mantine-colors-text))}.\\[\\&_\\.mantine-Text-root\\]\\:fs_xs .mantine-Text-root{font-size:var(--font-sizes-xs)}.\\[\\&_\\.mantine-Text-root\\]\\:fw_500 .mantine-Text-root{font-weight:500}.\\[\\&_\\.mantine-Text-root\\]\\:lh_1\\.2 .mantine-Text-root{line-height:1.2}.\\[\\&_\\.mantine-Text-root\\]\\:fs_xxs .mantine-Text-root{font-size:var(--font-sizes-xxs)}.\\[\\&_\\.mantine-Text-root\\]\\:fw_400 .mantine-Text-root{font-weight:400}.\\[\\&_\\.mantine-Text-root\\]\\:lh_xs .mantine-Text-root{line-height:var(--line-heights-xs)}.\\[\\&_\\.mantine-Text-root\\]\\:c_mantine\\.colors\\.dimmed .mantine-Text-root{color:var(--colors-mantine-colors-dimmed)}.\\[\\&\\[data-disabled\\]_\\.mantine-ThemeIcon-root\\]\\:op_0\\.45[data-disabled] .mantine-ThemeIcon-root{opacity:.45}:where(.likec4-view-btn[data-disabled]) .\\[\\:where\\(\\.likec4-view-btn\\[data-disabled\\]\\)_\\&\\]\\:op_0\\.85{opacity:.85}[data-mantine-color-scheme=light] .light\\:c_mantine\\.colors\\.gray\\[5\\]{color:var(--colors-mantine-colors-gray\\[5\\])}.\\[\\&_svg\\,_\\&_img\\]\\:pointer-events_none svg,.\\[\\&_svg\\,_\\&_img\\]\\:pointer-events_none img{pointer-events:none}.\\[\\&\\.likec4-shape-icon_svg\\]\\:stk-w_1\\.5.likec4-shape-icon svg{stroke-width:1.5}:where([data-disabled]) .\\[\\:where\\(\\[data-disabled\\]\\)_\\&\\]\\:op_0\\.4{opacity:.4}:where([data-disabled]) .\\[\\:where\\(\\[data-disabled\\]\\)_\\&\\]\\:op_0\\.85{opacity:.85}[data-mantine-color-scheme=light] .light\\:bg-c_\\[rgb\\(255_255_255_\\/_0\\.6\\)\\]{background-color:#fff9}:where([data-likec4-selected=true],[data-likec4-hovered=true]) .\\[\\:where\\(\\[data-likec4-selected\\=\\'true\\'\\]\\,_\\[data-likec4-hovered\\=\\'true\\'\\]\\)_\\&\\]\\:vis_visible{visibility:visible}:where([data-likec4-selected=true],[data-likec4-hovered=true]) .\\[\\:where\\(\\[data-likec4-selected\\=\\'true\\'\\]\\,_\\[data-likec4-hovered\\=\\'true\\'\\]\\)_\\&\\]\\:trs-dly_50ms{transition-delay:50ms}:where([data-likec4-selected=true],[data-likec4-hovered=true]) .\\[\\:where\\(\\[data-likec4-selected\\=\\'true\\'\\]\\,_\\[data-likec4-hovered\\=\\'true\\'\\]\\)_\\&\\]\\:fill-opacity_1{fill-opacity:1}:where([data-likec4-selected=true],[data-likec4-hovered=true]) .\\[\\:where\\(\\[data-likec4-selected\\=\\'true\\'\\]\\,_\\[data-likec4-hovered\\=\\'true\\'\\]\\)_\\&\\]\\:stk-w_12{stroke-width:12}.\\[\\&_\\*\\]\\:cursor_grabbing\\! *,.\\[\\&_\\.react-flow__edge-interaction\\]\\:cursor_grabbing\\! .react-flow__edge-interaction{cursor:grabbing!important}.\\[\\&_\\+_\\.likec4-element-shape\\]\\:ring-c_likec4\\.compare\\.manual\\.outline+.likec4-element-shape{outline-color:var(--colors-likec4-compare-manual-outline)}.\\[\\&_\\+_\\.likec4-element-shape\\]\\:ring-w_2px+.likec4-element-shape{outline-width:2px}.\\[\\&_\\+_\\.likec4-element-shape\\]\\:outline-style_solid+.likec4-element-shape{outline-style:solid}.\\[\\&_\\+_\\.likec4-element-shape\\]\\:ring-o_1+.likec4-element-shape{outline-offset:var(--spacing-1)}[data-mantine-color-scheme=dark] .dark\\:bg-c_mantine\\.colors\\.dark\\[6\\]\\/80{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-dark\\[6\\]) 80%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-dark\\[6\\]))}.\\[\\&_\\.mantine-ScrollArea-viewport\\]\\:min-h_100\\% .mantine-ScrollArea-viewport{min-height:var(--sizes-100\\%)}:where([data-likec4-shape=browser]) .shapeBrowser\\:right_\\[5px\\]{right:5px}:where([data-likec4-shape=cylinder]) .shapeCylinder\\:top_\\[14px\\]{top:14px}:where([data-likec4-shape=storage]) .shapeStorage\\:top_\\[14px\\]{top:14px}:where([data-likec4-shape=queue]) .shapeQueue\\:top_\\[1px\\]{top:1px}:where([data-likec4-shape=queue]) .shapeQueue\\:right_3{right:var(--spacing-3)}:where([data-likec4-shape=cylinder]) .shapeCylinder\\:bottom_\\[5px\\]{bottom:5px}:where([data-likec4-shape=storage]) .shapeStorage\\:bottom_\\[5px\\]{bottom:5px}:where([data-likec4-shape=queue]) .shapeQueue\\:bottom_0{bottom:var(--spacing-0)}:where([data-likec4-shape=queue]) .shapeQueue\\:pl_\\[14px\\]{padding-left:14px}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:h_12{height:12px}[data-mantine-color-scheme=dark] .dark\\:bd-l-c_mantine\\.colors\\.dark\\[4\\]{border-left-color:var(--colors-mantine-colors-dark\\[4\\])}.\\[\\&_\\>_svg\\]\\:w_70\\%>svg{width:70%}.\\[\\&_\\>_svg\\]\\:h_70\\%>svg{height:70%}.\\[\\&_\\.tabler-icon\\]\\:w_65\\% .tabler-icon{width:65%}.\\[\\&_\\.tabler-icon\\]\\:h_65\\% .tabler-icon{height:65%}.\\[\\&_\\:where\\(svg\\,_img\\)\\]\\:w_100\\% :where(svg,img){width:var(--sizes-100\\%)}.\\[\\&_\\:where\\(svg\\,_img\\)\\]\\:h_auto :where(svg,img){height:auto}.\\[\\&_\\:where\\(svg\\,_img\\)\\]\\:max-h_100\\% :where(svg,img){max-height:var(--sizes-100\\%)}.\\[\\&\\:not\\(\\:has\\(\\.mantine-ScrollArea-root\\)\\)\\]\\:pl_1:not(:has(.mantine-ScrollArea-root)){padding-left:var(--spacing-1)}.\\[\\&\\:not\\(\\:has\\(\\.mantine-ScrollArea-root\\)\\)\\]\\:pr_1:not(:has(.mantine-ScrollArea-root)){padding-right:var(--spacing-1)}.\\[\\&_\\.mantine-ScrollArea-root\\]\\:w_100\\% .mantine-ScrollArea-root{width:var(--sizes-100\\%)}.\\[\\&_\\.mantine-ScrollArea-root\\]\\:h_100\\% .mantine-ScrollArea-root{height:var(--sizes-100\\%)}.\\[\\&\\[data-level\\=\\'1\\'\\]\\]\\:mb_sm[data-level="1"]{margin-bottom:var(--spacing-sm)}.\\[\\&_\\.tabler-icon\\]\\:w_90\\% .tabler-icon{width:90%}.before\\:top_0:before{top:var(--spacing-0)}.before\\:left_2:before{left:var(--spacing-2)}.\\[\\&\\:last-child_\\.likec4-edge-label\\]\\:mb_0:last-child .likec4-edge-label{margin-bottom:var(--spacing-0)}.\\[\\&_svg\\,_\\&_img\\]\\:w_100\\% svg,.\\[\\&_svg\\,_\\&_img\\]\\:w_100\\% img{width:var(--sizes-100\\%)}.\\[\\&_svg\\,_\\&_img\\]\\:h_auto svg,.\\[\\&_svg\\,_\\&_img\\]\\:h_auto img{height:auto}.\\[\\&_svg\\,_\\&_img\\]\\:max-h_100\\% svg,.\\[\\&_svg\\,_\\&_img\\]\\:max-h_100\\% img{max-height:var(--sizes-100\\%)}:is(.\\[\\&_\\+_\\&\\]\\:mt_\\[32px\\])+:is(.\\[\\&_\\+_\\&\\]\\:mt_\\[32px\\]){margin-top:32px}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:w_7px{width:7px}:where(.react-flow__node,.react-flow__edge):is(.selected) .whenSelected\\:w_7px{width:7px}.focusWithin\\:bg_mantine\\.colors\\.gray\\[4\\]\\/55\\!:focus-within{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-gray\\[4\\]) 55%, transparent) !important;background:var(--mix-background, var(--colors-mantine-colors-gray\\[4\\]))!important}.group:focus-within .groupFocusWithin\\:op_1{opacity:1}.group:focus-within .groupFocusWithin\\:grayscale_0{--grayscale: grayscale(0)}.focus\\:bg_mantine\\.colors\\.primary\\[8\\]:is(:focus,[data-focus]){background:var(--colors-mantine-colors-primary\\[8\\])}.mantine-Tree-node:focus>.mantine-Tree-label .\\[\\.mantine-Tree-node\\:focus_\\>_\\.mantine-Tree-label_\\&\\]\\:bg_mantine\\.colors\\.primary\\[8\\]{background:var(--colors-mantine-colors-primary\\[8\\])}.group:is(:focus,[data-focus]) .groupFocus\\:transition_none{transition:none}.focus\\:ring_none:is(:focus,[data-focus]){outline:var(--borders-none)}.focusVisible\\:ring_none:is(:focus-visible,[data-focus-visible]){outline:var(--borders-none)}.focus\\:bd-c_mantine\\.colors\\.primary\\[9\\]:is(:focus,[data-focus]){border-color:var(--colors-mantine-colors-primary\\[9\\])}.mantine-Tree-node:focus>.mantine-Tree-label .\\[\\.mantine-Tree-node\\:focus_\\>_\\.mantine-Tree-label_\\&\\]\\:ring_none{outline:var(--borders-none)}.mantine-Tree-node:focus>.mantine-Tree-label .\\[\\.mantine-Tree-node\\:focus_\\>_\\.mantine-Tree-label_\\&\\]\\:bd-c_mantine\\.colors\\.primary\\[9\\]{border-color:var(--colors-mantine-colors-primary\\[9\\])}.group:is(:focus,[data-focus]) .groupFocus\\:c_\\[inherit\\]\\!{color:inherit!important}.group:is(:focus,[data-focus]) .groupFocus\\:op_0\\.5{opacity:.5}.group:is(:focus,[data-focus]) .groupFocus\\:op_0\\.8{opacity:.8}.focus\\:bg-c_mantine\\.colors\\.gray\\[2\\]:is(:focus,[data-focus]){background-color:var(--colors-mantine-colors-gray\\[2\\])}.focus\\:c_mantine\\.colors\\.primary\\.lightColor\\!:is(:focus,[data-focus]){color:var(--colors-mantine-colors-primary-light-color)!important}.focus\\:bg-c_mantine\\.colors\\.primary\\.lightHover\\!:is(:focus,[data-focus]){background-color:var(--colors-mantine-colors-primary-light-hover)!important}.group:is(:focus,[data-focus]) .groupFocus\\:c_mantine\\.colors\\.primary\\[0\\]{color:var(--colors-mantine-colors-primary\\[0\\])}.mantine-Tree-node:focus>.mantine-Tree-label .\\[\\.mantine-Tree-node\\:focus_\\>_\\.mantine-Tree-label_\\&\\]\\:c_mantine\\.colors\\.primary\\[0\\]{color:var(--colors-mantine-colors-primary\\[0\\])}.group:is(:focus,[data-focus]) .groupFocus\\:c_mantine\\.colors\\.primary\\[1\\]{color:var(--colors-mantine-colors-primary\\[1\\])}.mantine-Tree-node:focus>.mantine-Tree-label .\\[\\.mantine-Tree-node\\:focus_\\>_\\.mantine-Tree-label_\\&\\]\\:c_mantine\\.colors\\.primary\\[1\\]{color:var(--colors-mantine-colors-primary\\[1\\])}.hover\\:--icon-color_\\{colors\\.mantine\\.colors\\.dark\\[1\\]\\}:is(:hover,[data-hover]){--icon-color: var(--colors-mantine-colors-dark\\[1\\])}.hover\\:--view-title-color_\\{colors\\.mantine\\.colors\\.defaultColor\\}:is(:hover,[data-hover]){--view-title-color: var(--colors-mantine-colors-default-color)}.hover\\:bg_mantine\\.colors\\.defaultHover:is(:hover,[data-hover]){background:var(--colors-mantine-colors-default-hover)}.hover\\:bg_mantine\\.colors\\.gray\\[3\\]:is(:hover,[data-hover]){background:var(--colors-mantine-colors-gray\\[3\\])}.hover\\:bg_mantine\\.colors\\.gray\\.lightHover:is(:hover,[data-hover]){background:var(--colors-mantine-colors-gray-light-hover)}.hover\\:bg_mantine\\.colors\\.primary\\[8\\]\\/60:is(:hover,[data-hover]){--mix-background: color-mix(in srgb, var(--colors-mantine-colors-primary\\[8\\]) 60%, transparent);background:var(--mix-background, var(--colors-mantine-colors-primary\\[8\\]))}.group:is(:hover,[data-hover]) .groupHover\\:bg_mantine\\.colors\\.gray\\[3\\]\\/35{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-gray\\[3\\]) 35%, transparent);background:var(--mix-background, var(--colors-mantine-colors-gray\\[3\\]))}.hover\\:td_underline:is(:hover,[data-hover]){text-decoration:underline}.hover\\:bd-c_mantine\\.colors\\.defaultBorder:is(:hover,[data-hover]){border-color:var(--colors-mantine-colors-default-border)}.hover\\:bd-w_4px:is(:hover,[data-hover]){border-width:4px}.hover\\:bd-c_mantine\\.colors\\.dark\\[1\\]:is(:hover,[data-hover]){border-color:var(--colors-mantine-colors-dark\\[1\\])}.hover\\:border-style_solid:is(:hover,[data-hover]){border-style:solid}.\\[\\&\\:is\\(\\:hover\\,_\\[data-selected\\=true\\]\\)_\\>_\\*\\]\\:transition_all_0\\.15s_ease-out:is(:hover,[data-selected=true])>*{transition:all .15s ease-out}.hover\\:ring_none:is(:hover,[data-hover]){outline:var(--borders-none)}.hover\\:bd-c_mantine\\.colors\\.primary\\[9\\]:is(:hover,[data-hover]){border-color:var(--colors-mantine-colors-primary\\[9\\])}.hover\\:transition_stroke_100ms_ease-out\\,_stroke-width_100ms_ease-out:is(:hover,[data-hover]){transition:stroke .1s ease-out,stroke-width .1s ease-out}.hover\\:transition_all_120ms_ease-out:is(:hover,[data-hover]){transition:all .12s ease-out}.hover\\:op_1:is(:hover,[data-hover]){opacity:1}.hover\\:bg-c_mantine\\.colors\\.gray\\[1\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-gray\\[1\\])}.hover\\:bx-sh_sm:is(:hover,[data-hover]){box-shadow:var(--shadows-sm)}.group:is(:hover,[data-hover]) .groupHover\\:c_mantine\\.colors\\.dimmed{color:var(--colors-mantine-colors-dimmed)}.group:is(:hover,[data-hover]) .groupHover\\:op_0\\.5{opacity:.5}.group:is(:hover,[data-hover]) .groupHover\\:op_0\\.8{opacity:.8}.hover\\:bg-c_mantine\\.colors\\.gray\\[2\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-gray\\[2\\])}.hover\\:bg-c_likec4\\.panel\\.action\\.warning\\.bg\\.hover:is(:hover,[data-hover]){background-color:var(--colors-likec4-panel-action-warning-bg-hover)}.hover\\:c_likec4\\.panel\\.action\\.hover:is(:hover,[data-hover]){color:var(--colors-likec4-panel-action-hover)}.hover\\:c_likec4\\.panel\\.action:is(:hover,[data-hover]){color:var(--colors-likec4-panel-action)}.hover\\:trs-dly_0s:is(:hover,[data-hover]){transition-delay:0s}.hover\\:bg-c_likec4\\.panel\\.action\\.bg\\.hover:is(:hover,[data-hover]){background-color:var(--colors-likec4-panel-action-bg-hover)}.\\[\\&\\:hover_\\>_\\*\\]\\:trs-tmf_out:hover>*{--transition-easing: var(--easings-out);transition-timing-function:var(--easings-out)}.\\[\\&\\:hover_\\>_\\*\\]\\:trf_translateX\\(1\\.6px\\):hover>*{transform:translate(1.6px)}.hover\\:trs-tmf_out:is(:hover,[data-hover]){--transition-easing: var(--easings-out);transition-timing-function:var(--easings-out)}.hover\\:c_mantine\\.colors\\.defaultColor:is(:hover,[data-hover]){color:var(--colors-mantine-colors-default-color)}.hover\\:c_mantine\\.colors\\.primary\\[6\\]:is(:hover,[data-hover]){color:var(--colors-mantine-colors-primary\\[6\\])}.\\[\\&\\:is\\(\\:hover\\,_\\[data-selected\\=true\\]\\)_\\>_\\*\\]\\:cursor_pointer:is(:hover,[data-selected=true])>*{cursor:pointer}.\\[\\&\\:is\\(\\:hover\\,_\\[data-selected\\=true\\]\\)_\\>_\\*\\]\\:bg-c_mantine\\.colors\\.defaultHover:is(:hover,[data-selected=true])>*{background-color:var(--colors-mantine-colors-default-hover)}.hover\\:bg-c_mantine\\.colors\\.gray\\[0\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-gray\\[0\\])}.group:is(:hover,[data-hover]) .groupHover\\:op_1{opacity:1}.group:is(:hover,[data-hover]) .groupHover\\:grayscale_0{--grayscale: grayscale(0)}.group:is(:hover,[data-hover]) .groupHover\\:c_mantine\\.colors\\.primary\\[0\\]{color:var(--colors-mantine-colors-primary\\[0\\])}.group:is(:hover,[data-hover]) .groupHover\\:c_mantine\\.colors\\.primary\\[1\\]{color:var(--colors-mantine-colors-primary\\[1\\])}.hover\\:fill-opacity_1:is(:hover,[data-hover]){fill-opacity:1}.hover\\:stk_mantine\\.colors\\.primary\\.filledHover:is(:hover,[data-hover]){stroke:var(--colors-mantine-colors-primary-filled-hover)}.hover\\:stk-w_18:is(:hover,[data-hover]){stroke-width:18}.hover\\:bg-c_mantine\\.colors\\.primary\\[2\\]\\/50:is(:hover,[data-hover]){--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-primary\\[2\\]) 50%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-primary\\[2\\]))}.group:is(:active,[data-active]) .groupActive\\:op_0\\.5{opacity:.5}.group:is(:active,[data-active]) .groupActive\\:op_0\\.8{opacity:.8}.active\\:trf_translateY\\(-3px\\):is(:active,[data-active]){transform:translateY(-3px)}.likec4-root:is([data-likec4-reduced-graphics]) .reduceGraphics\\:\\[\\&_\\.action-icon\\]\\:--ai-radius_0px .action-icon{--ai-radius: 0px}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:bg_transparent:before{background:var(--colors-transparent)}[data-mantine-color-scheme=dark] .dark\\:\\[\\&\\:is\\(\\[data-active\\]\\)\\]\\:bg_mantine\\.colors\\.dark\\[5\\]:is([data-active]){background:var(--colors-mantine-colors-dark\\[5\\])}[data-mantine-color-scheme=light] .light\\:\\[\\&_\\.mantine-SegmentedControl-root\\]\\:bg_mantine\\.colors\\.gray\\[3\\] .mantine-SegmentedControl-root{background:var(--colors-mantine-colors-gray\\[3\\])}.group:is(:hover,[data-hover]) .\\[\\&\\:is\\(\\[data-position\\=\\"left\\"\\]\\)\\]\\:groupHover\\:c_\\[var\\(--badge-color\\)\\]:is([data-position=left]){color:var(--badge-color)}.group:is(:hover,[data-hover]) .\\[\\&\\:is\\(\\[data-position\\=\\"left\\"\\]\\)\\]\\:groupHover\\:op_0\\.7:is([data-position=left]){opacity:.7}[data-mantine-color-scheme=dark] .\\[\\&_\\>_mark\\]\\:dark\\:bg-c_mantine\\.colors\\.yellow\\[5\\]\\/80>mark{--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-yellow\\[5\\]) 80%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-yellow\\[5\\]))}.group:is(:focus,[data-focus]) .\\[\\&_\\>_mark\\]\\:groupFocus\\:bg-c_\\[transparent\\]>mark{background-color:var(--colors-transparent)}.group:is(:focus,[data-focus]) .\\[\\&_\\>_mark\\]\\:groupFocus\\:c_\\[inherit\\]\\!>mark{color:inherit!important}:where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) :where(.react-flow__node,.react-flow__edge):is(.selected) .whenSelected\\:whenHovered\\:stk-op_0\\.4{stroke-opacity:.4}.likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:noReduceGraphics\\:anim-ps_running{animation-play-state:running}.likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__node,.react-flow__edge):has([data-likec4-hovered=true]) .whenHovered\\:noReduceGraphics\\:anim-dly_450ms{animation-delay:.45s}.likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__edge.selected,[data-edge-active=true],[data-edge-animated=true]) .\\[\\:where\\(\\.react-flow__edge\\.selected\\,_\\[data-edge-active\\=\\'true\\'\\]\\,_\\[data-edge-animated\\=\\'true\\'\\]\\)_\\&\\]\\:noReduceGraphics\\:anim-ps_running{animation-play-state:running}.likec4-root:not([data-likec4-reduced-graphics]) :where(.react-flow__edge.selected,[data-edge-active=true],[data-edge-animated=true]) .\\[\\:where\\(\\.react-flow__edge\\.selected\\,_\\[data-edge-active\\=\\'true\\'\\]\\,_\\[data-edge-animated\\=\\'true\\'\\]\\)_\\&\\]\\:noReduceGraphics\\:anim-dly_0ms{animation-delay:0ms}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:content_\\"_\\":before{content:" "}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:pos_absolute:before{position:absolute}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:pointer-events_all:before{pointer-events:all}.likec4-root:is([data-likec4-reduced-graphics][data-likec4-diagram-panning=true]) .reduceGraphicsOnPan\\:before\\:d_none:before{display:none}.\\[\\&_\\.mantine-ThemeIcon-root\\]\\:hover\\:c_mantine\\.colors\\.defaultColor .mantine-ThemeIcon-root:is(:hover,[data-hover]){color:var(--colors-mantine-colors-default-color)}[data-mantine-color-scheme=dark] .dark\\:\\[\\&\\:is\\(\\[data-active\\]\\)\\]\\:c_mantine\\.colors\\.white:is([data-active]){color:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=light] .\\[\\&\\[data-missing\\]\\]\\:light\\:c_mantine\\.colors\\.orange\\[8\\][data-missing]{color:var(--colors-mantine-colors-orange\\[8\\])}[data-mantine-color-scheme=light] .\\[\\&_\\+_\\.likec4-element-shape\\]\\:light\\:ring-w_4px+.likec4-element-shape{outline-width:4px}.\\[\\&_\\.mantine-ScrollArea-viewport\\]\\:\\[\\&_\\>_div\\]\\:min-h_100\\% .mantine-ScrollArea-viewport>div{min-height:var(--sizes-100\\%)}.\\[\\&_\\.mantine-ScrollArea-viewport\\]\\:\\[\\&_\\>_div\\]\\:h_100\\% .mantine-ScrollArea-viewport>div{height:var(--sizes-100\\%)}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:top_\\[calc\\(100\\%_-_4px\\)\\]:before{top:calc(100% - 4px)}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:left_0:before{left:var(--spacing-0)}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:w_full:before{width:var(--sizes-full)}:where(.react-flow__node,.react-flow__edge):is(.selectable) .whenSelectable\\:before\\:h_24px:before{height:24px}.\\[\\&_\\.mantine-ScrollArea-root\\]\\:\\[\\&_\\>_div\\]\\:pl_1 .mantine-ScrollArea-root>div{padding-left:var(--spacing-1)}.\\[\\&_\\.mantine-ScrollArea-root\\]\\:\\[\\&_\\>_div\\]\\:pr_1 .mantine-ScrollArea-root>div{padding-right:var(--spacing-1)}[data-mantine-color-scheme=dark] .focusWithin\\:dark\\:bg_mantine\\.colors\\.dark\\[5\\]\\/55\\!:focus-within{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-dark\\[5\\]) 55%, transparent) !important;background:var(--mix-background, var(--colors-mantine-colors-dark\\[5\\]))!important}[data-mantine-color-scheme=dark] .focus\\:dark\\:bg-c_mantine\\.colors\\.dark\\[4\\]:is(:focus,[data-focus]){background-color:var(--colors-mantine-colors-dark\\[4\\])}[data-mantine-color-scheme=light] .group:is(:focus,[data-focus]) .groupFocus\\:light\\:c_mantine\\.colors\\.white{color:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=light] .mantine-Tree-node:focus>.mantine-Tree-label .\\[\\.mantine-Tree-node\\:focus_\\>_\\.mantine-Tree-label_\\&\\]\\:light\\:c_mantine\\.colors\\.white{color:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=light] .light\\:hover\\:--icon-color_\\{colors\\.mantine\\.colors\\.gray\\[7\\]\\}:is(:hover,[data-hover]){--icon-color: var(--colors-mantine-colors-gray\\[7\\])}[data-mantine-color-scheme=dark] .dark\\:hover\\:bg_mantine\\.colors\\.dark\\[6\\]:is(:hover,[data-hover]){background:var(--colors-mantine-colors-dark\\[6\\])}[data-mantine-color-scheme=dark] .group:is(:hover,[data-hover]) .groupHover\\:dark\\:bg_mantine\\.colors\\.dark\\[5\\]\\/35{--mix-background: color-mix(in srgb, var(--colors-mantine-colors-dark\\[5\\]) 35%, transparent);background:var(--mix-background, var(--colors-mantine-colors-dark\\[5\\]))}[data-mantine-color-scheme=light] .light\\:hover\\:bd-c_mantine\\.colors\\.primary\\[6\\]:is(:hover,[data-hover]){border-color:var(--colors-mantine-colors-primary\\[6\\])}[data-mantine-color-scheme=dark] .hover\\:dark\\:bg-c_mantine\\.colors\\.dark\\[5\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-dark\\[5\\])}[data-mantine-color-scheme=light] .group:is(:hover,[data-hover]) .groupHover\\:light\\:bg-c_mantine\\.colors\\.gray\\[2\\]{background-color:var(--colors-mantine-colors-gray\\[2\\])}[data-mantine-color-scheme=dark] .group:is(:hover,[data-hover]) .groupHover\\:dark\\:bg-c_mantine\\.colors\\.dark\\[8\\]{background-color:var(--colors-mantine-colors-dark\\[8\\])}[data-mantine-color-scheme=dark] .hover\\:dark\\:bg-c_mantine\\.colors\\.dark\\[4\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-dark\\[4\\])}[data-mantine-color-scheme=dark] .hover\\:dark\\:bg-c_mantine\\.colors\\.dark\\[5\\]\\/70:is(:hover,[data-hover]){--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-dark\\[5\\]) 70%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-dark\\[5\\]))}[data-mantine-color-scheme=dark] .dark\\:hover\\:c_mantine\\.colors\\.white:is(:hover,[data-hover]){color:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=dark] .hover\\:dark\\:bg-c_mantine\\.colors\\.dark\\[7\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-dark\\[7\\])}[data-mantine-color-scheme=dark] .hover\\:dark\\:c_mantine\\.colors\\.primary\\[4\\]:is(:hover,[data-hover]){color:var(--colors-mantine-colors-primary\\[4\\])}.hover\\:\\[\\&_\\>_\\:not\\(\\[data-no-transform\\]\\)\\]\\:trs-tmf_out:is(:hover,[data-hover])>:not([data-no-transform]){--transition-easing: var(--easings-out);transition-timing-function:var(--easings-out)}.hover\\:\\[\\&_\\>_\\:not\\(\\[data-no-transform\\]\\)\\]\\:trf_translateX\\(1px\\):is(:hover,[data-hover])>:not([data-no-transform]){transform:translate(1px)}.hover\\:\\[\\&_\\>_\\*\\]\\:trs-tmf_out:is(:hover,[data-hover])>*{--transition-easing: var(--easings-out);transition-timing-function:var(--easings-out)}.hover\\:\\[\\&_\\>_\\*\\]\\:trf_translateX\\(1px\\):is(:hover,[data-hover])>*{transform:translate(1px)}[data-mantine-color-scheme=dark] .hover\\:dark\\:bg-c_mantine\\.colors\\.defaultHover:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-default-hover)}[data-mantine-color-scheme=dark] .hover\\:dark\\:c_mantine\\.colors\\.white:is(:hover,[data-hover]){color:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=light] .light\\:hover\\:bg-c_mantine\\.colors\\.primary\\[5\\]:is(:hover,[data-hover]){background-color:var(--colors-mantine-colors-primary\\[5\\])}[data-mantine-color-scheme=light] .group:is(:hover,[data-hover]) .groupHover\\:light\\:c_mantine\\.colors\\.white{color:var(--colors-mantine-colors-white)}[data-mantine-color-scheme=light] .group:is(:hover,[data-hover]) .groupHover\\:light\\:c_mantine\\.colors\\.primary\\[0\\]{color:var(--colors-mantine-colors-primary\\[0\\])}[data-mantine-color-scheme=dark] .dark\\:hover\\:bg-c_mantine\\.colors\\.dark\\[3\\]\\/40:is(:hover,[data-hover]){--mix-backgroundColor: color-mix(in srgb, var(--colors-mantine-colors-dark\\[3\\]) 40%, transparent);background-color:var(--mix-backgroundColor, var(--colors-mantine-colors-dark\\[3\\]))}@container (min-width: 24rem){.\\@\\/xs\\:d_flex{display:flex}}@media screen and (min-width:36rem){.xs\\:max-w_calc\\(100cqw\\){max-width:100cqw}.xs\\:max-w_calc\\(100cqw_-_50px\\){max-width:calc(100cqw - 50px)}.xs\\:max-w_calc\\(100cqw_-_250px\\){max-width:calc(100cqw - 250px)}.xs\\:max-h_calc\\(100cqh_-_200px\\){max-height:calc(100cqh - 200px)}.xs\\:max-h_calc\\(100cqh_-_160px\\){max-height:calc(100cqh - 160px)}.xs\\:h_100cqh{height:100cqh}.xs\\:max-h_calc\\(100cqh_-_70px\\){max-height:calc(100cqh - 70px)}}@container (min-width: 40rem){.\\@\\/sm\\:m_xs{margin:var(--spacing-xs)}.\\@\\/sm\\:gap_xs{gap:var(--spacing-xs)}.\\@\\/sm\\:w_max-content{width:max-content}.\\@\\/sm\\:max-w_calc\\(100vw_-_2_\\*_\\{spacing\\.md\\}\\){max-width:calc(100vw - 2 * var(--spacing-md))}.\\@\\/sm\\:min-w_400{min-width:400px}.\\@\\/sm\\:max-w_550{max-width:550px}}@container (min-width: 40rem){@media screen and (min-width:36rem){.\\@\\/sm\\:xs\\:max-w_calc\\(100cqw_-_2_\\*_\\{spacing\\.md\\}\\){max-width:calc(100cqw - 2 * var(--spacing-md))}}}@container (min-width: 48rem){.\\@\\/md\\:d_block{display:block}.\\@\\/md\\:d_flex{display:flex}.\\@\\/md\\:d_none{display:none}.\\@\\/md\\:d_inherit{display:inherit}.\\@\\/md\\:ms_2{margin-inline-start:var(--spacing-2)}.\\@\\/md\\:w_\\[64px\\]{width:64px}}@media screen and (min-width:48rem){.sm\\:pr_\\[30px\\]{padding-right:30px}.sm\\:min-w_300{min-width:300px}.sm\\:max-w_65vw{max-width:65vw}}@media screen and (min-width:62rem){.md\\:--text-fz_\\{fontSizes\\.md\\}{--text-fz: var(--font-sizes-md)}.md\\:bd-w_4{border-width:4px}.md\\:px_6{padding-inline:var(--spacing-6)}.md\\:pr_\\[50px\\]{padding-right:50px}.md\\:max-w_40vw{max-width:40vw}}@container (min-width: 64rem){.\\@\\/lg\\:max-w_700{max-width:700px}}@media screen and (min-width:75rem){.lg\\:px_8{padding-inline:var(--spacing-8)}}@container likec4-tree (max-width: 450px){.\\[\\@container_likec4-tree_\\(max-width\\:_450px\\)\\]\\:--likec4-icon-size_18px{--likec4-icon-size: 18px}.\\[\\@container_likec4-tree_\\(max-width\\:_450px\\)\\]\\:gap_0\\.5{gap:var(--spacing-0\\.5)}.\\[\\@container_likec4-tree_\\(max-width\\:_450px\\)\\]\\:flex-d_column-reverse{flex-direction:column-reverse}.\\[\\@container_likec4-tree_\\(max-width\\:_450px\\)\\]\\:ai_flex-start{align-items:flex-start}.\\[\\@container_likec4-tree_\\(max-width\\:_450px\\)\\]\\:d_none{display:none}}}`,Ort={autoContrast:!0,primaryColor:"indigo",cursorType:"pointer",defaultRadius:"sm",fontFamily:"var(--likec4-app-font, var(--likec4-app-font-default))",headings:{fontWeight:"500",sizes:{h1:{fontWeight:"600"},h2:{fontWeight:"500"}}},components:{Portal:j0.extend({defaultProps:{reuseTargetNode:!0}})}};be({cursor:"pointer","--mantine-cursor-pointer":"pointer","& :where(.likec4-diagram, .likec4-compound-node, .likec4-element-node)":{cursor:"pointer"}});function jrt(e,r){const[n,o]=E.useState([]);return VE(()=>{if(e&&!document.querySelector("style[data-likec4-font]")){const a=document.createElement("style");a.setAttribute("type","text/css"),a.setAttribute("data-likec4-font",""),H3(r)&&a.setAttribute("nonce",r),C0(r)&&a.setAttribute("nonce",r()),a.appendChild(document.createTextNode(Irt)),document.head.appendChild(a)}},[e]),VE(()=>{const a=new CSSStyleSheet;return a.replaceSync(One.replaceAll(":where(:root,:host)",".likec4-shadow-root").replaceAll(":root",".likec4-shadow-root").replaceAll(new RegExp("(?{a.replaceSync("")}},[One]),n}const jne=()=>{try{const e=window.getComputedStyle(document.documentElement).colorScheme??"",r=Ff(e.split(" "));if(r==="light"||r==="dark")return r}catch{}return null};function Lrt(e){const r=vU(),[n,o]=E.useState(jne);return DU(Yf(()=>o(jne),100),{attributes:!0,childList:!1,subtree:!1},()=>document.documentElement),e??n??r}const Brt=zrt.div;function Frt(e,r=!1){if(r===!1)return` +:where([data-likec4-instance="${e}"]) { + display: block; + box-sizing: border-box; + border: 0 solid transparent; + background: transparent; + padding: 0; + margin: 0; + overflow: hidden; + width: 100%; + height: 100%; + min-width: 80px; + min-height: 80px; +} + `.trim();const{width:n,height:o}=r,a=n>o;return` +:where([data-likec4-instance="${e}"]) { + display: block; + box-sizing: border-box; + border: 0 solid transparent; + background: transparent; + padding: 0; + overflow: hidden; + aspect-ratio: ${Math.ceil(n)} / ${Math.ceil(o)}; + ${a?"":` + max-width: min(100%, var(--likec4-view-max-width, ${Math.ceil(n)}px)); + margin-left: auto; + margin-right: auto;`} + width: ${a?"100%":"auto"}; + height: ${a?"auto":"100%"}; + ${a?"min-width: 80px;":"min-height: 80px;"} + max-height: min(100%, var(--likec4-view-max-height, ${Math.ceil(o)}px)); +} +`.trim()}function Hrt({children:e,theme:r=Ort,injectFontCss:n=!0,styleNonce:o,colorScheme:a,keepAspectRatio:i=!1,...s}){const l=Lrt(a),c=UG(),u=Frt(c,i),d=E.useRef(null),h=jrt(n,o),f=E.useCallback(()=>d.current??void 0,[d]),g=kt(()=>{if(F3(o)){if(typeof o=="string")return o;if(typeof o=="function")return o()}return""});let b=F3(o)?g():void 0;return y.jsxs(y.Fragment,{children:[y.jsx("style",{type:"text/css",nonce:b,dangerouslySetInnerHTML:{__html:u}}),y.jsx(Brt,{ssr:!1,...s,styleSheets:h,"data-likec4-instance":c,children:y.jsx("div",{ref:d,"data-mantine-color-scheme":l,className:"likec4-shadow-root",children:y.jsx(i7,{...a&&{forceColorScheme:a},defaultColorScheme:l,getRootElement:f,...!!b&&{getStyleNonce:g},cssVariablesSelector:".likec4-shadow-root",theme:r,children:y.jsx(NR,{children:e})})})})]})}const Vrt=be({cursor:"pointer","--mantine-cursor-pointer":"pointer","& :where(.likec4-diagram, .likec4-compound-node, .likec4-element-node)":{cursor:"pointer"}});function qrt({viewId:e,className:r,pannable:n=!1,zoomable:o=!1,keepAspectRatio:a=!0,colorScheme:i,injectFontCss:s=!0,controls:l=!1,background:c="transparent",browser:u=!0,showNavigationButtons:d=!1,enableNotations:h,enableFocusMode:f=!1,enableDynamicViewWalkthrough:g=!1,enableElementDetails:b=!1,enableRelationshipDetails:x=!1,enableRelationshipBrowser:w=x,reduceGraphics:k="auto",mantineTheme:C,styleNonce:_,style:T,reactFlowProps:A,renderNodes:R,children:D,...N}){const M=Jje(),[O,F]=E.useState("manual"),[L,U]=E.useState(null),P=kt(Y=>{Y&&Y!==L&&F("manual"),U(Y)}),V=kt(()=>{P(e)});if(!M)return y.jsx(DR,{children:"LikeC4Model not found. Make sure you provided LikeC4ModelProvider."});const I=M.findView(e)?.$layouted;if(!I)return y.jsx(brt,{viewId:e});if(I._stage!=="layouted")return y.jsxs(DR,{children:['LikeC4 View "$',e,'" is not layouted. Make sure you have LikeC4ModelProvider with layouted model.']});const H=L?M.findView(L):null,q=O==="manual"?H?.$layouted:H?.$view,Z=!!h&&(I.notation?.nodes?.length??0)>0,W=(q?.notation?.nodes?.length??0)>0,G=u!==!1,K=Hq(u)?{}:u,j=Ire(I,N.dynamicViewVariant);return y.jsx(Hrt,{injectFontCss:s,theme:C,colorScheme:i,styleNonce:_,keepAspectRatio:a?j:!1,className:et("likec4-view",r),style:T,children:y.jsxs(NR,{children:[y.jsx(Sne,{view:I,readonly:!0,pannable:n,zoomable:o,background:c,fitView:!0,fitViewPadding:Uw.default,enableNotations:Z,enableDynamicViewWalkthrough:g,showNavigationButtons:d,enableCompareWithLatest:!1,enableFocusMode:f,enableRelationshipDetails:x,enableElementDetails:b,enableRelationshipBrowser:w,enableElementTags:!1,controls:l,nodesDraggable:!1,reduceGraphics:k,className:et("likec4-static-view",G&&Vrt),enableSearch:!1,...G&&{onCanvasClick:V,onNodeClick:V},reactFlowProps:A,renderNodes:R,children:D,...N}),q&&y.jsxs(Ly,{openDelay:0,onClose:()=>P(null),children:[y.jsx(Sne,{view:q,pannable:!0,zoomable:!0,background:"dots",onNavigateTo:P,showNavigationButtons:!0,enableDynamicViewWalkthrough:!0,enableFocusMode:!0,enableRelationshipBrowser:!0,enableElementDetails:!0,enableRelationshipDetails:!0,enableSearch:!0,enableElementTags:!0,enableCompareWithLatest:!0,controls:!0,readonly:!0,nodesDraggable:!1,fitView:!0,...N,fitViewPadding:Uw.withControls,...K,enableNotations:W&&(K.enableNotations??!0),renderNodes:R,onLayoutTypeChange:F}),y.jsx(zr,{pos:"absolute",top:"4",right:"4",zIndex:"999",children:y.jsx(br,{variant:"default",color:"gray",onClick:Y=>{Y.stopPropagation(),P(null)},children:y.jsx(Rp,{})})})]})]})})}var Urt=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:[y.jsx("path",{fill:"#343741",d:"M4 64c0 5.535.777 10.879 2.098 16H84c8.836 0 16-7.164 16-16s-7.164-16-16-16H6.098A63.7 63.7 0 0 0 4 64"}),y.jsx("path",{fill:"#fec514",d:"M111.695 30.648A61.5 61.5 0 0 0 117.922 24C106.188 9.379 88.199 0 68 0 42.715 0 20.957 14.71 10.574 36H98.04a20.12 20.12 0 0 0 13.652-5.352"}),y.jsx("path",{fill:"#00bfb3",d:"M98.04 92H10.577C20.961 113.29 42.715 128 68 128c20.2 0 38.188-9.383 49.922-24a61 61 0 0 0-6.227-6.648A20.13 20.13 0 0 0 98.04 92"})]}),Wrt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsxs("g",{fill:"#47848f",children:[y.jsx("path",{d:"M49.07 32.66c-14.37-2.62-25.72.12-30.25 8-3.38 5.85-2.41 13.61 2.34 21.9a1.47 1.47 0 0 0 2.56-1.47c-4.28-7.47-5.12-14.17-2.35-19 3.76-6.51 13.89-9 27.17-6.54a1.47 1.47 0 1 0 .53-2.9zM28.63 72.61a92.2 92.2 0 0 0 22 17.34c20.84 12 43 15.25 54 7.79a1.47 1.47 0 0 0-1.66-2.43C93.11 102 72 98.92 52.07 87.39a89.3 89.3 0 0 1-21.26-16.77 1.47 1.47 0 0 0-2.18 2z"}),y.jsx("path",{d:"M101.06 70.81c9.41-11.11 12.69-22.29 8.17-30.11-3.32-5.76-10.35-8.8-19.69-8.92a1.47 1.47 0 0 0 0 2.95c8.4.11 14.45 2.73 17.18 7.45 3.75 6.5.82 16.47-7.87 26.74a1.47 1.47 0 1 0 2.25 1.9zM76.89 33.15a92 92 0 0 0-26.25 10.4C29.13 56 15.09 74.29 17 87.57a1.47 1.47 0 0 0 3-.43C18.23 75.35 31.53 58 52.11 46.11A89 89 0 0 1 77.51 36a1.47 1.47 0 1 0-.62-2.88z"}),y.jsx("path",{d:"M42 96.78C47 110.51 55 119 64.05 119c6.6 0 12.7-4.5 17.46-12.42A1.47 1.47 0 1 0 79 105c-4.28 7.12-9.53 11-14.94 11-7.52 0-14.69-7.54-19.24-20.24a1.47 1.47 0 0 0-2.77 1zm45-2.69a92.5 92.5 0 0 0 3.91-27.3c0-24.41-8.54-45.44-20.71-50.85a1.47 1.47 0 0 0-1.2 2.7c10.85 4.82 19 24.78 19 48.15a89.6 89.6 0 0 1-3.78 26.42 1.47 1.47 0 0 0 2.81.88zm27.71-1.44a7.05 7.05 0 1 0-7.05 7.05 7.05 7.05 0 0 0 7.05-7.05m-2.95 0a4.1 4.1 0 1 1-4.1-4.1 4.1 4.1 0 0 1 4.1 4.1M20.34 99.7a7.05 7.05 0 1 0-7.05-7.05 7.05 7.05 0 0 0 7.05 7.05m0-2.95a4.1 4.1 0 1 1 4.1-4.1 4.1 4.1 0 0 1-4.1 4.1"}),y.jsx("path",{d:"M64.05 23.13A7.05 7.05 0 1 0 57 16.08a7.05 7.05 0 0 0 7.05 7.05m0-2.95a4.1 4.1 0 1 1 4.1-4.1 4.1 4.1 0 0 1-4.1 4.1m1.08 51.59A5.1 5.1 0 1 1 69 65.71a5.1 5.1 0 0 1-3.87 6.06"})]})}),Yrt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsx("path",{fill:"#F34F29",d:"M124.737 58.378 69.621 3.264c-3.172-3.174-8.32-3.174-11.497 0L46.68 14.71l14.518 14.518c3.375-1.139 7.243-.375 9.932 2.314 2.703 2.706 3.461 6.607 2.294 9.993l13.992 13.993c3.385-1.167 7.292-.413 9.994 2.295 3.78 3.777 3.78 9.9 0 13.679a9.673 9.673 0 0 1-13.683 0 9.68 9.68 0 0 1-2.105-10.521L68.574 47.933l-.002 34.341a9.7 9.7 0 0 1 2.559 1.828c3.778 3.777 3.778 9.898 0 13.683-3.779 3.777-9.904 3.777-13.679 0-3.778-3.784-3.778-9.905 0-13.683a9.7 9.7 0 0 1 3.167-2.11V47.333a9.6 9.6 0 0 1-3.167-2.111c-2.862-2.86-3.551-7.06-2.083-10.576L41.056 20.333 3.264 58.123a8.133 8.133 0 0 0 0 11.5l55.117 55.114c3.174 3.174 8.32 3.174 11.499 0l54.858-54.858a8.135 8.135 0 0 0-.001-11.501"})}),Grt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsxs("g",{fill:"#181616",children:[y.jsx("path",{fillRule:"evenodd",d:"M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z",clipRule:"evenodd"}),y.jsx("path",{d:"M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zm2.382 3.477c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237m4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"})]})}),Xrt=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 128 128",...e,children:[y.jsx("defs",{children:y.jsx("path",{id:"Go_svg__a",d:"M18.8 1h90.5v126H18.8z"})}),y.jsx("clipPath",{id:"Go_svg__b",children:y.jsx("use",{xlinkHref:"#Go_svg__a",overflow:"visible"})}),y.jsx("path",{fill:"#F6D2A2",fillRule:"evenodd",d:"M21.1 68.7c.2 3.5 3.7 1.9 5.3.8 1.5-1.1 2-.2 2.1-2.3.1-1.4.2-2.7.2-4.1-2.3-.2-4.8.3-6.7 1.7-.9.7-2.8 3-.9 3.9",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M23 71.2c-.7 0-2-.3-2.2-2.3-.6-.4-.8-.9-.8-1.2-.1-1.2 1.2-2.6 1.9-3.1 1.6-1.2 3.7-1.8 5.9-1.8h1.3v.3c.1 1.1 0 2.2-.1 3.2 0 .3 0 .6-.1.9-.1 1.5-.4 1.7-1.1 2-.3.1-.6.2-1.1.6-.5.3-2.2 1.4-3.7 1.4m4.8-7.8c-2.1 0-4 .6-5.5 1.7-.7.5-1.7 1.7-1.6 2.5 0 .3.2.6.6.8l.2.1v.2c.1 1.6.9 1.8 1.5 1.8 1 0 2.4-.7 3.3-1.3.6-.4 1-.5 1.3-.6.5-.2.6-.2.7-1.4 0-.3 0-.6.1-.9.1-.9.1-1.9.1-2.8-.3-.1-.5-.1-.7-.1",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#C6B198",fillRule:"evenodd",d:"M21.1 68.7c.5-.2 1.1-.3 1.4-.8",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M21.1 69c-.1 0-.3-.1-.3-.2-.1-.2 0-.4.2-.4.1 0 .2-.1.2-.1.4-.2.8-.3 1-.6.1-.1.3-.2.5-.1.1.1.2.3.1.5-.4.5-.9.7-1.3.8l-.2.1z",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#6AD7E5",fillRule:"evenodd",d:"M29.3 26.4c-13.6-3.8-3.5-21.1 7.4-14z",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"m29.5 26.8-.3-.1c-7-2-6.9-7-6.7-8.5.5-3.8 4.1-7.8 8.9-7.8 1.9 0 3.7.6 5.5 1.8l.3.2zm1.9-15.7c-4.5 0-7.8 3.7-8.3 7.2-.5 3.6 1.7 6.4 6 7.7l7.1-13.5c-1.5-.9-3.1-1.4-4.8-1.4",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#6AD7E5",fillRule:"evenodd",d:"M89.6 11.1c10.7-7.5 20.5 9.5 8 13.8z",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M97.5 25.3 89.2 11l.3-.2c1.9-1.3 3.8-2 5.7-2 4.6 0 7.9 3.8 8.6 7.5.3 1.5.6 6.6-6 8.8zm-7.4-14 7.7 13.3c3.9-1.4 5.9-4.4 5.3-8-.6-3.4-3.7-6.9-7.9-6.9-1.7-.1-3.4.4-5.1 1.6",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#F6D2A2",fillRule:"evenodd",d:"M92 112.3c2.7 1.7 7.7 6.8 3.6 9.3-3.9 3.6-6.1-4-9.6-5 1.5-2 3.4-3.9 6-4.3",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M93.5 122.9c-1.6 0-3-1.6-4.2-3.1-1.1-1.2-2.2-2.5-3.4-2.9l-.5-.1.3-.4c1.2-1.7 3.2-3.9 6.2-4.4h.1l.1.1c1.7 1.1 5.4 4.2 5.3 7.1 0 1.1-.6 2-1.7 2.7-.7.7-1.4 1-2.2 1m-7-6.5c1.2.5 2.2 1.8 3.2 2.9 1.2 1.5 2.4 2.8 3.7 2.8q.9 0 1.8-.9h.1c.9-.6 1.4-1.3 1.4-2.2 0-2.3-2.9-5.2-4.9-6.5-1.8.5-3.6 1.7-5.3 3.9m9.1 5.5c-.1 0-.2-.1-.3-.2-.2-.4-.4-.9-.5-1.3-.3-.8-.6-1.6-1.2-2.2-.1-.1-.1-.3 0-.5.1-.1.3-.1.5 0 .7.7 1.1 1.6 1.4 2.5l.5 1.2c.1.2 0 .4-.1.5z",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#F6D2A2",fillRule:"evenodd",d:"M43.2 118.1c-3.2.5-5 3.4-7.7 4.9-2.5 1.5-3.5-.5-3.7-.9-.4-.2-.4.2-1-.4-2.3-3.7 2.4-6.4 4.9-8.2 3.5-.8 5.7 2.2 7.5 4.6",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M33.8 123.8c-1.3 0-2-1.1-2.2-1.5h-.1c-.3 0-.5-.1-.9-.5v-.1c-2.2-3.5 1.6-6.2 4.1-8l.9-.6h.2c.4-.1.7-.1 1.1-.1 3 0 4.9 2.6 6.5 4.7l.5.7-.6.1c-1.9.3-3.3 1.5-4.7 2.7-.9.8-1.8 1.5-2.8 2.1-.8.3-1.4.5-2 .5m-2.2-2.1c.1 0 .2 0 .4.1h.1l.1.1c.2.3.7 1.2 1.7 1.2.5 0 1-.2 1.5-.5 1-.5 1.9-1.3 2.7-2 1.3-1.1 2.7-2.3 4.5-2.8-1.5-2-3.3-4.2-5.8-4.2-.3 0-.6 0-.9.1l-.8.6c-2.6 1.8-5.8 4.1-3.9 7.1.1.2.2.3.4.3m.2.7c-.2 0-.4-.2-.3-.4.1-1 .6-1.7 1.1-2.5.3-.4.5-.8.7-1.2.1-.2.3-.2.4-.2.2.1.2.3.2.4-.2.5-.5.9-.8 1.3-.5.7-.9 1.3-1 2.1 0 .4-.1.5-.3.5",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fillRule:"evenodd",d:"M29.9 21.7c-1.8-.9-3.1-2.2-2-4.3 1-1.9 2.9-1.7 4.7-.8zm64.9-1.8c1.8-.9 3.1-2.2 2-4.3-1-1.9-2.9-1.7-4.7-.8z",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{fill:"#F6D2A2",fillRule:"evenodd",d:"M107.1 68.2c-.2 3.5-3.7 1.9-5.3.8-1.5-1.1-2-.2-2.1-2.3-.1-1.4-.2-2.7-.2-4.1 2.3-.2 4.8.3 6.7 1.7 1 .8 2.8 3 .9 3.9",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M105.3 70.7c-1.5 0-3.2-1.1-3.7-1.4s-.8-.5-1.1-.6c-.8-.3-1-.5-1.1-2 0-.3 0-.6-.1-.9-.1-1-.2-2.1-.1-3.2v-.3h1.3c2.2 0 4.3.6 5.9 1.8.7.5 2 1.9 1.9 3.1 0 .4-.2.9-.8 1.2-.2 2-1.5 2.3-2.2 2.3M99.8 63c0 .9 0 1.9.1 2.8 0 .3 0 .6.1.9.1 1.2.2 1.2.7 1.4.3.1.7.3 1.3.6.9.6 2.3 1.3 3.3 1.3.6 0 1.4-.2 1.5-1.8V68l.2-.1c.4-.2.6-.4.6-.8.1-.8-.9-2-1.6-2.5-1.5-1.1-3.5-1.7-5.5-1.7-.2.1-.4.1-.7.1",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#C6B198",fillRule:"evenodd",d:"M107.1 68.2c-.5-.2-1.1-.3-1.4-.8",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M107.1 68.6h-.1l-.2-.1c-.5-.2-1-.3-1.3-.8-.1-.1-.1-.4.1-.5.1-.1.4-.1.5.1.2.3.6.4 1 .6.1 0 .2.1.2.1.2.1.3.3.2.4s-.3.2-.4.2",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#6AD7E5",fillRule:"evenodd",d:"M62.8 4c13.6 0 26.3 1.9 33 15 6 14.6 3.8 30.4 4.8 45.9.8 13.3 2.5 28.6-3.6 40.9-6.5 12.9-22.7 16.2-36 15.7-10.5-.4-23.1-3.8-29.1-13.4-6.9-11.2-3.7-27.9-3.2-40.4.6-14.8-4-29.7.9-44.1C34.5 8.5 48.1 5.1 62.8 4",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M63.3 121.9h-2.5c-4.1-.1-10.3-.8-16.4-3.3-5.9-2.4-10.2-5.8-13-10.3-5.6-9.1-4.6-21.6-3.7-32.7.2-2.8.4-5.4.5-7.9.2-5.2-.2-10.6-.7-15.7-.8-9.4-1.6-19.1 1.5-28.5 2.4-7 6.7-12 13.2-15.2 5.1-2.5 11.4-3.9 20.4-4.6C76 3.6 89.3 5.5 96 18.8c4.4 10.7 4.4 22.2 4.5 33.3 0 4.2 0 8.5.3 12.7.1 1.3.2 2.6.2 3.9.8 12.2 1.7 26-3.9 37.2-2.8 5.7-7.7 9.9-14.4 12.6-5.4 2.2-12.2 3.4-19.4 3.4M62.8 4.3c-14.1 1.1-27.9 4.2-33 19.4-3.1 9.3-2.3 18.9-1.5 28.2.4 5.2.9 10.5.7 15.8-.1 2.5-.3 5.1-.5 7.9-.9 11-1.9 23.4 3.6 32.3 2.3 3.7 9.7 12.5 28.8 13.2h2.5c22.1 0 30.3-9.8 33.3-15.6 5.5-11 4.6-24.8 3.9-36.9-.1-1.3-.2-2.6-.2-3.9-.2-4.2-.3-8.5-.3-12.7-.1-11-.1-22.5-4.4-33.1C92.7 13 88.2 9 82 6.7c-6.4-2.1-13.6-2.4-19.2-2.4",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#fff",fillRule:"evenodd",d:"M65.2 22.2c2.4 14.2 25.6 10.4 22.3-3.9-3-12.8-23.1-9.2-22.3 3.9",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M76.2 31.5c-4.5 0-10.2-2.4-11.4-9.2-.2-3.2.8-6.1 2.9-8.3 2.3-2.5 5.8-3.9 9.4-3.9 4.2 0 9.2 2.2 10.6 8.3.8 3.4.2 6.4-1.7 8.8-2.1 2.6-5.8 4.3-9.8 4.3m-10.7-9.3q.75 4.2 3.9 6.6c1.8 1.4 4.3 2.1 6.8 2.1 3.7 0 7.3-1.6 9.3-4.1 1.8-2.2 2.3-5.1 1.6-8.3-1.3-5.7-6-7.7-10-7.7-3.4 0-6.7 1.4-8.9 3.7-1.9 2-2.9 4.7-2.7 7.7",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#fff",fillRule:"evenodd",d:"M37.5 24.5c3.2 12.3 22.9 9.2 22.2-3.2-.9-14.8-25.3-12-22.2 3.2",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M48 32.7c-4.3 0-9.3-2.1-10.9-8.1-.7-3.5 0-6.7 2-9.1 2.2-2.7 5.8-4.3 9.7-4.3 5.2 0 10.7 3.1 11.1 10.1.2 2.9-.7 5.5-2.7 7.6-2.1 2.3-5.6 3.8-9.2 3.8m.8-20.8c-3.7 0-7.1 1.5-9.2 4-1.9 2.3-2.5 5.2-1.8 8.5C39.2 30 44 32 48 32c3.4 0 6.7-1.3 8.8-3.6 1.8-1.9 2.7-4.4 2.5-7.1-.2-4.3-3.1-9.4-10.5-9.4",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#fff",fillRule:"evenodd",d:"M68 39.2c0 1.8.4 3.9.1 5.9-.5.9-1.4 1-2.2 1.3-1.1-.2-2-.9-2.5-1.9-.3-2.2.1-4.4.2-6.6z",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M65.9 46.8c-1.3-.2-2.3-1-2.8-2.1-.2-1.6-.1-3.1 0-4.6.1-.7.1-1.4.1-2.1v-.4l5.1 1.6v.2c0 .6.1 1.2.1 1.9.1 1.3.2 2.7 0 4v.1c-.4.8-1.1 1-1.8 1.3-.2-.1-.4 0-.7.1m-2.2-2.4c.4.9 1.2 1.5 2.1 1.7.2-.1.4-.1.5-.2.6-.2 1.1-.4 1.4-.9.2-1.2.1-2.5 0-3.8 0-.6-.1-1.2-.1-1.7l-3.8-1.2c0 .6-.1 1.2-.1 1.7-.1 1.6-.2 3 0 4.4",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fillRule:"evenodd",d:"M46.3 22.5c0 2-1.5 3.6-3.3 3.6s-3.3-1.6-3.3-3.6 1.5-3.6 3.3-3.6 3.3 1.6 3.3 3.6",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{fill:"#fff",fillRule:"evenodd",d:"M45.2 23.3c0 .5-.4.9-.8.9s-.8-.4-.8-.9.4-.9.8-.9c.5 0 .8.4.8.9",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{fillRule:"evenodd",d:"M74.2 21.6c0 2-1.5 3.6-3.3 3.6s-3.3-1.6-3.3-3.6 1.5-3.6 3.3-3.6 3.3 1.6 3.3 3.6",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{fill:"#fff",fillRule:"evenodd",d:"M73.2 22.4c0 .5-.3.9-.8.9-.4 0-.8-.4-.8-.9s.3-.9.8-.9c.4 0 .8.4.8.9M58.4 39c-1.5 3.5.8 10.6 4.8 5.4-.3-2.2.1-4.4.2-6.6z",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{d:"M60.5 46.6c-.7 0-1.4-.4-1.9-1.2-1.1-1.6-1.3-4.6-.5-6.5l.1-.2 5.5-1.4v.4l-.1 2.2c-.1 1.5-.2 2.9 0 4.4v.1l-.1.1q-1.5 2.1-3 2.1m-1.8-7.3c-.6 1.7-.4 4.4.5 5.7.4.6.8.9 1.3.9.7 0 1.5-.6 2.3-1.6-.2-1.5-.1-3 .1-4.4l.1-1.7z",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fill:"#F6D2A2",fillRule:"evenodd",d:"M58.9 32.2c-2.7.2-4.9 3.5-3.5 6 1.9 3.4 6-.3 8.6 0 3 .1 5.4 3.2 7.8.6 2.7-2.9-1.2-5.7-4.1-7z",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"}),y.jsx("path",{fill:"#231F20",d:"M69.7 40.2c-.9 0-1.8-.4-2.7-.8s-1.9-.8-3-.8h-.3c-.8 0-1.7.3-2.7.7-1.1.4-2.2.7-3.2.7-1.2 0-2.1-.5-2.7-1.6-.7-1.2-.6-2.6.1-3.9.8-1.5 2.2-2.4 3.7-2.6l8.9-.4h.1c2.2.9 4.7 2.6 5.2 4.6.2 1-.1 2-.9 2.9s-1.6 1.2-2.5 1.2M64.1 38c1.1 0 2.2.5 3.2.9.9.4 1.7.7 2.5.7.7 0 1.3-.3 1.9-.9.7-.7.9-1.5.8-2.3-.4-1.7-2.8-3.3-4.7-4.1l-8.7.4c-1.3.1-2.5 1-3.2 2.2-.6 1.1-.6 2.3-.1 3.3.5.9 1.1 1.3 2.1 1.3.9 0 1.9-.4 2.9-.7 1.1-.4 2-.7 3-.7 0-.2.1-.2.3-.1",clipPath:"url(#Go_svg__b)"}),y.jsx("path",{fillRule:"evenodd",d:"M58.6 32.1c-.2-4.7 8.8-5.3 9.8-1.4 1.1 4-9.4 4.9-9.8 1.4",clipPath:"url(#Go_svg__b)",clipRule:"evenodd"})]}),Krt=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:[y.jsxs("linearGradient",{id:"Grafana_svg__a",x1:45.842,x2:45.842,y1:89.57,y2:8.802,gradientTransform:"translate(-.23 28.462)scale(1.4011)",gradientUnits:"userSpaceOnUse",children:[y.jsx("stop",{offset:0,stopColor:"#fcee1f"}),y.jsx("stop",{offset:1,stopColor:"#f15b2a"})]}),y.jsx("path",{fill:"url(#Grafana_svg__a)",d:"M120.8 56.9q-.3-3.15-1.2-7.2c-.9-4.05-1.8-5.5-3.2-8.6-1.5-3-3.4-6.2-5.9-9.1-1-1.2-2.1-2.3-3.2-3.5 1.8-6.9-2.1-13-2.1-13-6.7-.4-10.9 2.1-12.4 3.2-.2-.1-.6-.2-.8-.3-1.1-.4-2.3-.9-3.5-1.3-1.2-.3-2.4-.8-3.6-1-1.2-.3-2.5-.6-3.9-.8-.2 0-.4-.1-.7-.1C77.5 6 69.1 2 69.1 2c-9.6 6.2-11.4 14.4-11.4 14.4s0 .2-.1.4c-.6.1-1 .3-1.5.4-.7.2-1.4.4-2.1.8l-2.1.9c-1.4.7-2.8 1.3-4.2 2.1-1.3.8-2.6 1.5-3.9 2.4-.2-.1-.3-.2-.3-.2-12.9-5-24.3 1-24.3 1-1 13.8 5.2 22.3 6.4 23.9-.3.9-.6 1.7-.9 2.5q-1.5 4.65-2.1 9.6c-.1.4-.1 1-.2 1.4C10.5 67.5 7 79.6 7 79.6 16.9 91 28.5 91.7 28.5 91.7c1.4 2.6 3.2 5.2 5.1 7.5.8 1 1.7 1.9 2.5 2.9-3.6 10.3.6 19 .6 19 11.1.4 18.4-4.8 19.9-6.1 1.1.3 2.2.7 3.3 1 3.4.9 6.9 1.4 10.3 1.5h4.5c5.2 7.5 14.4 8.5 14.4 8.5 6.5-6.9 6.9-13.6 6.9-15.2v-.6c1.3-1 2.6-2 4-3.1 2.6-2.3 4.8-5.1 6.8-7.9.2-.2.3-.6.6-.8 7.4.4 12.5-4.6 12.5-4.6-1.2-7.7-5.6-11.4-6.5-12.1l-.1-.1-.1-.1-.1-.1c0-.4.1-.9.1-1.4.1-.9.1-1.7.1-2.5v-3.3c0-.2 0-.4-.1-.7l-.1-.7-.1-.7c-.1-.9-.3-1.7-.4-2.5-.8-3.3-2.1-6.5-3.7-9.2-1.8-2.9-3.9-5.3-6.3-7.5-2.4-2.1-5.1-3.9-7.9-5.1-2.9-1.3-5.7-2.1-8.7-2.4-1.4-.2-3-.2-4.4-.2h-2.3c-.8.1-1.5.2-2.2.3-3 .6-5.7 1.7-8.1 3.1s-4.5 3.3-6.3 5.4-3.1 4.3-4 6.7c-.9 2.3-1.4 4.8-1.5 7.2v2.6c0 .3 0 .6.1.9.1 1.2.3 2.3.7 3.4.7 2.2 1.7 4.2 3 5.9s2.8 3.1 4.4 4.2c1.7 1.1 3.3 1.9 5.1 2.4s3.4.8 5 .7h2.3c.2 0 .4-.1.6-.1s.3-.1.6-.1c.3-.1.8-.2 1.1-.3.7-.2 1.3-.6 2-.8.7-.3 1.2-.7 1.7-1 .1-.1.3-.2.4-.3.6-.4.7-1.2.2-1.8-.4-.4-1.1-.6-1.7-.3-.1.1-.2.1-.4.2-.4.2-1 .4-1.4.6-.6.1-1.1.3-1.7.4-.3 0-.6.1-.9.1h-1.8s-.1 0 0 0h-.7c-.1 0-.3 0-.4-.1-1.2-.2-2.5-.6-3.7-1.1-1.2-.6-2.4-1.3-3.4-2.3-1.1-1-2-2.1-2.8-3.4s-1.2-2.8-1.4-4.2c-.1-.8-.2-1.5-.1-2.3v-.7c0 .1 0 0 0 0V70c0-.4.1-.8.2-1.2.6-3.3 2.2-6.5 4.7-8.9.7-.7 1.3-1.2 2.1-1.7.8-.6 1.5-1 2.3-1.3s1.7-.7 2.5-.9c.9-.2 1.8-.4 2.6-.4.4 0 .9-.1 1.3-.1h.8c.1 0 0 0 0 0h.4c1 .1 2 .2 2.9.4 1.9.4 3.7 1.1 5.5 2.1 3.5 2 6.5 5 8.3 8.6.9 1.8 1.5 3.7 1.9 5.8.1.6.1 1 .2 1.5v2.7c0 .6-.1 1.1-.1 1.7-.1.6-.1 1.1-.2 1.7s-.2 1.1-.3 1.7c-.2 1.1-.7 2.1-1 3.2-.8 2.1-1.9 4.1-3.2 5.8-2.6 3.6-6.3 6.6-10.3 8.5-2.1.9-4.2 1.7-6.4 2q-1.65.3-3.3.3h-1.6c.1 0 0 0 0 0h-.1c-.6 0-1.2 0-1.8-.1-2.4-.2-4.7-.7-7-1.3-2.3-.7-4.5-1.5-6.6-2.6-4.2-2.2-7.9-5.4-10.9-9-1.4-1.9-2.8-3.9-3.9-5.9s-1.9-4.3-2.5-6.5c-.7-2.2-1-4.5-1.1-6.8v-3.5c0-1.1.1-2.3.3-3.5.1-1.2.3-2.3.6-3.5.2-1.2.6-2.3.9-3.5.7-2.3 1.4-4.5 2.4-6.6 2-4.2 4.5-7.9 7.5-10.9.8-.8 1.5-1.4 2.4-2.1.3-.3 1.1-1 2-1.5s1.8-1.1 2.8-1.5c.4-.2.9-.4 1.4-.7.2-.1.4-.2.8-.3.2-.1.4-.2.8-.3 1-.4 2-.8 3-1.1.2-.1.6-.1.8-.2s.6-.1.8-.2c.6-.1 1-.2 1.5-.4.2-.1.6-.1.8-.2.2 0 .6-.1.8-.1s.6-.1.8-.1l.4-.1.4-.1c.2 0 .6-.1.8-.1.3 0 .6-.1.9-.1.2 0 .7-.1.9-.1s.3 0 .6-.1h.7c.3 0 .6 0 .9-.1h.4s.1 0 0 0h4.1c2 .1 4 .3 5.8.7 3.7.7 7.4 1.9 10.6 3.5 3.2 1.5 6.2 3.5 8.6 5.6.1.1.3.2.4.4.1.1.3.2.4.4.3.2.6.6.9.8s.6.6.9.8c.2.3.6.6.8.9 1.1 1.1 2.1 2.3 3 3.4 1.8 2.3 3.2 4.6 4.3 6.8.1.1.1.2.2.4.1.1.1.2.2.4s.2.6.4.8c.1.2.2.6.3.8s.2.6.3.8c.4 1 .8 2 1.1 3 .6 1.5.9 2.9 1.2 4 .1.4.6.8 1 .8.6 0 .9-.4.9-1-.3-1.7-.3-3.1-.4-4.8"})]}),Zrt=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:[y.jsx("path",{fill:"#0074BD",d:"M47.617 98.12s-4.767 2.774 3.397 3.71c9.892 1.13 14.947.968 25.845-1.092 0 0 2.871 1.795 6.873 3.351-24.439 10.47-55.308-.607-36.115-5.969m-2.988-13.665s-5.348 3.959 2.823 4.805c10.567 1.091 18.91 1.18 33.354-1.6 0 0 1.993 2.025 5.132 3.131-29.542 8.64-62.446.68-41.309-6.336"}),y.jsx("path",{fill:"#EA2D2E",d:"M69.802 61.271c6.025 6.935-1.58 13.17-1.58 13.17s15.289-7.891 8.269-17.777c-6.559-9.215-11.587-13.792 15.635-29.58 0 .001-42.731 10.67-22.324 34.187"}),y.jsx("path",{fill:"#0074BD",d:"M102.123 108.229s3.529 2.91-3.888 5.159c-14.102 4.272-58.706 5.56-71.094.171-4.451-1.938 3.899-4.625 6.526-5.192 2.739-.593 4.303-.485 4.303-.485-4.953-3.487-32.013 6.85-13.743 9.815 49.821 8.076 90.817-3.637 77.896-9.468M49.912 70.294s-22.686 5.389-8.033 7.348c6.188.828 18.518.638 30.011-.326 9.39-.789 18.813-2.474 18.813-2.474s-3.308 1.419-5.704 3.053c-23.042 6.061-67.544 3.238-54.731-2.958 10.832-5.239 19.644-4.643 19.644-4.643m40.697 22.747c23.421-12.167 12.591-23.86 5.032-22.285-1.848.385-2.677.72-2.677.72s.688-1.079 2-1.543c14.953-5.255 26.451 15.503-4.823 23.725 0-.002.359-.327.468-.617"}),y.jsx("path",{fill:"#EA2D2E",d:"M76.491 1.587S89.459 14.563 64.188 34.51c-20.266 16.006-4.621 25.13-.007 35.559-11.831-10.673-20.509-20.07-14.688-28.815C58.041 28.42 81.722 22.195 76.491 1.587"}),y.jsx("path",{fill:"#0074BD",d:"M52.214 126.021c22.476 1.437 57-.8 57.817-11.436 0 0-1.571 4.032-18.577 7.231-19.186 3.612-42.854 3.191-56.887.874 0 .001 2.875 2.381 17.647 3.331"})]}),Qrt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsxs("g",{fill:"#486bb3",children:[y.jsx("path",{d:"M56.484 55.098c.37.27.82.43 1.31.43 1.2 0 2.18-.95 2.23-2.13l.05-.03.75-13.26c-.9.11-1.8.26-2.7.46-4.93 1.12-9.2 3.55-12.54 6.83l10.87 7.71zm-1.45 19.43a2.22 2.22 0 0 0-2.58-1.69l-.02-.03-13.05 2.21a26.15 26.15 0 0 0 10.51 13.15l5.06-12.22-.04-.05c.17-.42.23-.89.12-1.37m-4.34-9.41c.44-.12.85-.38 1.16-.76.75-.94.62-2.29-.28-3.07l.01-.05-9.93-8.88a26.07 26.07 0 0 0-3.7 16.48l12.73-3.67zm9.64 3.9 3.66 1.76 3.66-1.75.9-3.95-2.53-3.16h-4.06l-2.54 3.16zm7.6-15.67c.02.46.18.91.49 1.29.75.94 2.1 1.11 3.06.41l.04.02 10.8-7.66c-4.08-3.99-9.4-6.6-15.15-7.3l.75 13.24zm7.58 19.43c-.17-.03-.34-.05-.51-.04-.29.01-.58.09-.85.22a2.23 2.23 0 0 0-1.08 2.89l-.02.02 5.11 12.34c4.93-3.14 8.61-7.83 10.54-13.24l-13.16-2.23zm-9.56 6.54a2.25 2.25 0 0 0-2.04-1.17c-.77.03-1.5.46-1.89 1.18h-.01l-6.42 11.6a26.16 26.16 0 0 0 14.27.73c.88-.2 1.74-.44 2.57-.72l-6.43-11.63h-.05z"}),y.jsx("path",{d:"m124.544 76.788-10.44-45.33a8.01 8.01 0 0 0-4.37-5.43l-42.24-20.18a8.16 8.16 0 0 0-3.92-.78 8.2 8.2 0 0 0-3.1.78l-42.24 20.18a8.06 8.06 0 0 0-4.37 5.43l-10.41 45.34a7.92 7.92 0 0 0 1.1 6.14c.14.22.3.43.46.64l29.24 36.35a8.09 8.09 0 0 0 6.32 3.01l46.89-.01c2.46 0 4.78-1.11 6.32-3.01l29.23-36.36a7.98 7.98 0 0 0 1.53-6.77m-16.07-.55c-.31 1.35-1.76 2.17-3.26 1.85-.01 0-.03 0-.04-.01-.02 0-.03-.01-.05-.02-.21-.05-.47-.09-.65-.14-.86-.23-1.49-.58-2.27-.88-1.67-.6-3.06-1.1-4.41-1.3-.69-.05-1.04.27-1.42.52-.18-.04-.75-.14-1.08-.19-2.42 7.61-7.58 14.21-14.57 18.33.12.29.33.91.42 1.02-.16.43-.4.83-.19 1.49.49 1.27 1.28 2.52 2.24 4.01.46.69.94 1.22 1.36 2.02.1.19.23.48.33.68.65 1.39.17 2.99-1.08 3.59-1.26.61-2.82-.03-3.5-1.43-.1-.2-.23-.46-.31-.65-.36-.82-.48-1.52-.73-2.32-.57-1.68-1.05-3.07-1.73-4.25-.39-.57-.86-.64-1.29-.78-.08-.14-.38-.69-.54-.97-1.4.53-2.84.97-4.34 1.31-6.56 1.49-13.13.89-18.99-1.37l-.57 1.04c-.43.11-.84.23-1.09.53-.92 1.1-1.29 2.86-1.96 4.54-.25.79-.37 1.5-.73 2.32-.08.19-.22.45-.31.64v.01l-.01.01c-.67 1.39-2.23 2.03-3.49 1.43-1.25-.6-1.72-2.2-1.08-3.59.1-.2.22-.49.32-.68.42-.79.89-1.33 1.36-2.02.96-1.5 1.8-2.84 2.29-4.11.12-.42-.06-1-.22-1.43l.46-1.1c-6.73-3.99-12.04-10.34-14.58-18.21l-1.1.19c-.3-.17-.89-.56-1.45-.51-1.35.2-2.74.7-4.41 1.3-.78.3-1.4.64-2.27.87-.18.05-.44.1-.65.15-.02 0-.03.01-.05.02-.01 0-.03 0-.04.01-1.5.32-2.95-.5-3.26-1.85s.65-2.72 2.14-3.08c.01 0 .03-.01.04-.01s.01 0 .02-.01c.21-.05.48-.12.68-.16.88-.17 1.6-.13 2.43-.19 1.77-.19 3.23-.34 4.53-.75.41-.17.81-.74 1.09-1.1l1.06-.31c-1.19-8.22.82-16.28 5.16-22.81l-.81-.72c-.05-.32-.12-1.04-.51-1.46-.99-.93-2.25-1.71-3.76-2.64-.72-.42-1.38-.69-2.1-1.23-.15-.11-.36-.29-.52-.42-.01-.01-.03-.02-.04-.03-1.21-.97-1.49-2.64-.62-3.73.49-.61 1.24-.92 2.01-.89.6.02 1.23.24 1.76.66.17.14.41.32.56.45.68.58 1.09 1.16 1.66 1.77 1.25 1.27 2.28 2.32 3.41 3.08.59.35 1.05.21 1.5.15.15.11.63.46.91.65 4.3-4.57 9.96-7.95 16.52-9.44 1.53-.35 3.05-.58 4.57-.7l.06-1.07c.34-.33.71-.79.82-1.31.11-1.36-.07-2.82-.28-4.59-.12-.82-.31-1.51-.35-2.4-.01-.18 0-.44.01-.65 0-.02-.01-.05-.01-.07 0-1.55 1.13-2.81 2.53-2.81s2.53 1.26 2.53 2.81c0 .22.01.52.01.72-.03.89-.23 1.58-.35 2.4-.21 1.76-.4 3.23-.29 4.59.1.68.5.95.83 1.26.01.18.04.79.06 1.13 8.04.71 15.5 4.39 20.99 10.14l.96-.69c.33.02 1.04.12 1.53-.17 1.13-.76 2.16-1.82 3.41-3.08.57-.61.99-1.18 1.67-1.77.15-.13.39-.31.56-.45 1.21-.97 2.9-.86 3.77.23s.59 2.76-.62 3.73c-.17.14-.39.33-.56.45-.72.53-1.38.8-2.1 1.23-1.51.93-2.77 1.71-3.76 2.64-.47.5-.43.98-.48 1.43-.14.13-.63.57-.9.8a32.8 32.8 0 0 1 4.74 10.95c.92 3.99 1.06 7.97.53 11.8l1.02.3c.18.26.56.89 1.09 1.1 1.3.41 2.76.56 4.53.75.83.07 1.55.03 2.43.19.21.04.52.12.73.17 1.5.37 2.45 1.74 2.14 3.09"}),y.jsx("path",{d:"m86.274 52.358-9.88 8.84.01.03c-.34.3-.6.7-.71 1.18-.27 1.17.44 2.33 1.58 2.65l.01.05 12.79 3.68c.27-2.76.11-5.62-.55-8.48-.66-2.89-1.77-5.56-3.25-7.95"})]})}),Jrt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsx("path",{fill:"#090",d:"M24.5 50.5c-1.5 0-2.5 1.2-2.5 2.7v14.1l-15.9-16c-.8-.8-2.2-1-3.2-.6S1 52.1 1 53.2v20.7c0 1.5 1.5 2.7 3 2.7s3-1.2 3-2.7V59.8l16.1 16c.5.5 1.2.8 1.9.8.3 0 .4-.1.7-.2 1-.4 1.3-1.4 1.3-2.5V53.3c0-1.5-1-2.8-2.5-2.8m19.7 11.8c-1.4 0-2.7 1.4-2.7 2.8s1.3 2.8 2.7 2.8l6.6.4-1.5 3.7h-8.5l-4.2-7.9 4.3-8.1H50l2.1 4h5.5L54 52.1l-.8-1.1H37.6l-.7 1.2L31 62.5l-.7 1.3.7 1.3 5.8 10.3.8 1.6h15.1l.7-1.7 4.3-9 1.9-4.3h-4.4zM65 50.5c-1.4 0-3 1.3-3 2.7V60h6v-6.7c0-1.5-1.6-2.8-3-2.8m30.4.3c-1-.4-2.4-.2-3.1.6L76 67.4V53.3c0-1.5-1-2.7-2.5-2.7S71 51.8 71 53.3V74c0 1.1.7 2.1 1.7 2.5.3.1.7.2 1 .2.7 0 1.6-.3 2.1-.8l16.2-16V74c0 1.5 1 2.7 2.5 2.7S97 75.5 97 74V53.3c0-1.1-.6-2.1-1.6-2.5m21.8 12.8 8.4-8.4c1.1-1.1 1.1-2.8 0-3.8-1.1-1.1-2.8-1.1-3.8 0l-8.4 8.4-8.4-8.4c-1.1-1.1-2.8-1.1-3.8 0-1.1 1.1-1.1 2.8 0 3.8l8.4 8.4-8.4 8.4c-1.1 1.1-1.1 2.8 0 3.8.5.5 1.2.8 1.9.8s1.4-.3 1.9-.8l8.4-8.4 8.4 8.4c.5.5 1.2.8 1.9.8s1.4-.3 1.9-.8c1.1-1.1 1.1-2.8 0-3.8zM62 73.9c0 1.4 1.5 2.7 3 2.7 1.4 0 3-1.3 3-2.7V62h-6z"})}),ent=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:[y.jsx("path",{d:"M93.809 92.112c.785-6.533.55-7.492 5.416-6.433l1.235.108c3.742.17 8.637-.602 11.513-1.938 6.191-2.873 9.861-7.668 3.758-6.409-13.924 2.873-14.881-1.842-14.881-1.842 14.703-21.815 20.849-49.508 15.543-56.287-14.47-18.489-39.517-9.746-39.936-9.52l-.134.025c-2.751-.571-5.83-.912-9.289-.968-6.301-.104-11.082 1.652-14.709 4.402 0 0-44.683-18.409-42.604 23.151.442 8.841 12.672 66.898 27.26 49.362 5.332-6.412 10.484-11.834 10.484-11.834 2.558 1.699 5.622 2.567 8.834 2.255l.249-.212c-.078.796-.044 1.575.099 2.497-3.757 4.199-2.653 4.936-10.166 6.482-7.602 1.566-3.136 4.355-.221 5.084 3.535.884 11.712 2.136 17.238-5.598l-.22.882c1.474 1.18 1.375 8.477 1.583 13.69.209 5.214.558 10.079 1.621 12.948s2.317 10.256 12.191 8.14c8.252-1.764 14.561-4.309 15.136-27.985"}),y.jsx("path",{d:"M75.458 125.256c-4.367 0-7.211-1.689-8.938-3.32-2.607-2.46-3.641-5.629-4.259-7.522l-.267-.79c-1.244-3.358-1.666-8.193-1.916-14.419-.038-.935-.064-1.898-.093-2.919-.021-.747-.047-1.684-.085-2.664a18.8 18.8 0 0 1-4.962 1.568c-3.079.526-6.389.356-9.84-.507-2.435-.609-4.965-1.871-6.407-3.82-4.203 3.681-8.212 3.182-10.396 2.453-3.853-1.285-7.301-4.896-10.542-11.037-2.309-4.375-4.542-10.075-6.638-16.943-3.65-11.96-5.969-24.557-6.175-28.693C4.292 23.698 7.777 14.44 15.296 9.129 27.157.751 45.128 5.678 51.68 7.915c4.402-2.653 9.581-3.944 15.433-3.851 3.143.051 6.136.327 8.916.823 2.9-.912 8.628-2.221 15.185-2.139 12.081.144 22.092 4.852 28.949 13.615 4.894 6.252 2.474 19.381.597 26.651-2.642 10.226-7.271 21.102-12.957 30.57 1.544.011 3.781-.174 6.961-.831 6.274-1.295 8.109 2.069 8.607 3.575 1.995 6.042-6.677 10.608-9.382 11.864-3.466 1.609-9.117 2.589-13.745 2.377l-.202-.013-1.216-.107-.12 1.014-.116.991c-.311 11.999-2.025 19.598-5.552 24.619-3.697 5.264-8.835 6.739-13.361 7.709-1.544.33-2.947.474-4.219.474m-9.19-43.671c2.819 2.256 3.066 6.501 3.287 14.434.028.99.054 1.927.089 2.802.106 2.65.355 8.855 1.327 11.477.137.371.26.747.39 1.146 1.083 3.316 1.626 4.979 6.309 3.978 3.931-.843 5.952-1.599 7.534-3.851 2.299-3.274 3.585-9.86 3.821-19.575l4.783.116-4.75-.57.14-1.186c.455-3.91.783-6.734 3.396-8.602 2.097-1.498 4.486-1.353 6.389-1.01-2.091-1.58-2.669-3.433-2.823-4.193l-.399-1.965 1.121-1.663c6.457-9.58 11.781-21.354 14.609-32.304 2.906-11.251 2.02-17.226 1.134-18.356-11.729-14.987-32.068-8.799-34.192-8.097l-.359.194-1.8.335-.922-.191c-2.542-.528-5.366-.82-8.393-.869-4.756-.08-8.593 1.044-11.739 3.431l-2.183 1.655-2.533-1.043c-5.412-2.213-21.308-6.662-29.696-.721-4.656 3.298-6.777 9.76-6.305 19.207.156 3.119 2.275 14.926 5.771 26.377 4.831 15.825 9.221 21.082 11.054 21.693.32.108 1.15-.537 1.976-1.529a271 271 0 0 1 10.694-12.07l2.77-2.915 3.349 2.225c1.35.897 2.839 1.406 4.368 1.502l7.987-6.812-1.157 11.808c-.026.265-.039.626.065 1.296l.348 2.238-1.51 1.688-.174.196 4.388 2.025z"}),y.jsx("path",{fill:"#336791",d:"M115.731 77.44c-13.925 2.873-14.882-1.842-14.882-1.842 14.703-21.816 20.849-49.51 15.545-56.287C101.924.823 76.875 9.566 76.457 9.793l-.135.024c-2.751-.571-5.83-.911-9.291-.967-6.301-.103-11.08 1.652-14.707 4.402 0 0-44.684-18.408-42.606 23.151.442 8.842 12.672 66.899 27.26 49.363 5.332-6.412 10.483-11.834 10.483-11.834 2.559 1.699 5.622 2.567 8.833 2.255l.25-.212c-.078.796-.042 1.575.1 2.497-3.758 4.199-2.654 4.936-10.167 6.482-7.602 1.566-3.136 4.355-.22 5.084 3.534.884 11.712 2.136 17.237-5.598l-.221.882c1.473 1.18 2.507 7.672 2.334 13.557s-.29 9.926.871 13.082c1.16 3.156 2.316 10.256 12.192 8.14 8.252-1.768 12.528-6.351 13.124-13.995.422-5.435 1.377-4.631 1.438-9.49l.767-2.3c.884-7.367.14-9.743 5.225-8.638l1.235.108c3.742.17 8.639-.602 11.514-1.938 6.19-2.871 9.861-7.667 3.758-6.408"}),y.jsx("path",{fill:"#fff",d:"M75.957 122.307c-8.232 0-10.84-6.519-11.907-9.185-1.562-3.907-1.899-19.069-1.551-31.503a1.59 1.59 0 0 1 1.64-1.55 1.594 1.594 0 0 1 1.55 1.639c-.401 14.341.168 27.337 1.324 30.229 1.804 4.509 4.54 8.453 12.275 6.796 7.343-1.575 10.093-4.359 11.318-11.46.94-5.449 2.799-20.951 3.028-24.01a1.593 1.593 0 0 1 1.71-1.472 1.597 1.597 0 0 1 1.472 1.71c-.239 3.185-2.089 18.657-3.065 24.315-1.446 8.387-5.185 12.191-13.794 14.037-1.463.313-2.792.453-4 .454M31.321 90.466a6.7 6.7 0 0 1-2.116-.35c-5.347-1.784-10.44-10.492-15.138-25.885-3.576-11.717-5.842-23.947-6.041-27.922-.589-11.784 2.445-20.121 9.02-24.778 13.007-9.216 34.888-.44 35.813-.062a1.596 1.596 0 0 1-1.207 2.955c-.211-.086-21.193-8.492-32.768-.285-5.622 3.986-8.203 11.392-7.672 22.011.167 3.349 2.284 15.285 5.906 27.149 4.194 13.742 8.967 22.413 13.096 23.79.648.216 2.62.873 5.439-2.517A245 245 0 0 1 45.88 73.046a1.596 1.596 0 0 1 2.304 2.208c-.048.05-4.847 5.067-10.077 11.359-2.477 2.979-4.851 3.853-6.786 3.853m69.429-13.445a1.596 1.596 0 0 1-1.322-2.487c14.863-22.055 20.08-48.704 15.612-54.414-5.624-7.186-13.565-10.939-23.604-11.156-7.433-.16-13.341 1.738-14.307 2.069l-.243.099c-.971.305-1.716-.227-1.997-.849a1.6 1.6 0 0 1 .631-2.025c.046-.027.192-.089.429-.176l-.021.006.021-.007c1.641-.601 7.639-2.4 15.068-2.315 11.108.118 20.284 4.401 26.534 12.388 2.957 3.779 2.964 12.485.019 23.887-3.002 11.625-8.651 24.118-15.497 34.277-.306.457-.81.703-1.323.703m.76 10.21c-2.538 0-4.813-.358-6.175-1.174-1.4-.839-1.667-1.979-1.702-2.584-.382-6.71 3.32-7.878 5.208-8.411-.263-.398-.637-.866-1.024-1.349-1.101-1.376-2.609-3.26-3.771-6.078-.182-.44-.752-1.463-1.412-2.648-3.579-6.418-11.026-19.773-6.242-26.612 2.214-3.165 6.623-4.411 13.119-3.716C97.6 28.837 88.5 10.625 66.907 10.271c-6.494-.108-11.82 1.889-15.822 5.93-8.96 9.049-8.636 25.422-8.631 25.586a1.595 1.595 0 1 1-3.19.084c-.02-.727-.354-17.909 9.554-27.916C53.455 9.272 59.559 6.96 66.96 7.081c13.814.227 22.706 7.25 27.732 13.101 5.479 6.377 8.165 13.411 8.386 15.759.165 1.746-1.088 2.095-1.341 2.147l-.576.013c-6.375-1.021-10.465-.312-12.156 2.104-3.639 5.201 3.406 17.834 6.414 23.229.768 1.376 1.322 2.371 1.576 2.985.988 2.396 2.277 4.006 3.312 5.3.911 1.138 1.7 2.125 1.982 3.283.131.23 1.99 2.98 13.021.703 2.765-.57 4.423-.083 4.93 1.45.997 3.015-4.597 6.532-7.694 7.97-2.775 1.29-7.204 2.106-11.036 2.106m-4.696-4.021c.35.353 2.101.962 5.727.806 3.224-.138 6.624-.839 8.664-1.786 2.609-1.212 4.351-2.567 5.253-3.492l-.5.092c-7.053 1.456-12.042 1.262-14.828-.577a6 6 0 0 1-.54-.401c-.302.119-.581.197-.78.253-1.58.443-3.214.902-2.996 5.105m-45.562 8.915c-1.752 0-3.596-.239-5.479-.71-1.951-.488-5.24-1.957-5.19-4.37.057-2.707 3.994-3.519 5.476-3.824 5.354-1.103 5.703-1.545 7.376-3.67.488-.619 1.095-1.39 1.923-2.314 1.229-1.376 2.572-2.073 3.992-2.073.989 0 1.8.335 2.336.558 1.708.708 3.133 2.42 3.719 4.467.529 1.847.276 3.625-.71 5.006-3.237 4.533-7.886 6.93-13.443 6.93m-7.222-4.943c.481.372 1.445.869 2.518 1.137 1.631.408 3.213.615 4.705.615 4.546 0 8.196-1.882 10.847-5.594.553-.774.387-1.757.239-2.274-.31-1.083-1.08-2.068-1.873-2.397-.43-.178-.787-.314-1.115-.314-.176 0-.712 0-1.614 1.009a41 41 0 0 0-1.794 2.162c-2.084 2.646-3.039 3.544-9.239 4.821-1.513.31-2.289.626-2.674.835m12.269-7.36a1.596 1.596 0 0 1-1.575-1.354 8 8 0 0 1-.08-.799c-4.064-.076-7.985-1.82-10.962-4.926-3.764-3.927-5.477-9.368-4.699-14.927.845-6.037.529-11.366.359-14.229-.047-.796-.081-1.371-.079-1.769.003-.505.013-1.844 4.489-4.113 1.592-.807 4.784-2.215 8.271-2.576 5.777-.597 9.585 1.976 10.725 7.246 3.077 14.228.244 20.521-1.825 25.117-.385.856-.749 1.664-1.04 2.447l-.257.69c-1.093 2.931-2.038 5.463-1.748 7.354a1.595 1.595 0 0 1-1.335 1.819zM42.464 42.26l.062 1.139c.176 2.974.504 8.508-.384 14.86-.641 4.585.759 9.06 3.843 12.276 2.437 2.542 5.644 3.945 8.94 3.945h.068c.369-1.555.982-3.197 1.642-4.966l.255-.686c.329-.884.714-1.74 1.122-2.646 1.991-4.424 4.47-9.931 1.615-23.132-.565-2.615-1.936-4.128-4.189-4.627-4.628-1.022-11.525 2.459-12.974 3.837m9.63-.677c-.08.564 1.033 2.07 2.485 2.271 1.449.203 2.689-.975 2.768-1.539s-1.033-1.186-2.485-1.388-2.691.092-2.768.656m2.818 2.826-.407-.028c-.9-.125-1.81-.692-2.433-1.518-.219-.29-.576-.852-.505-1.354.101-.736.999-1.177 2.4-1.177.313 0 .639.023.967.069.766.106 1.477.327 2.002.62.91.508.977 1.075.936 1.368-.112.813-1.405 2.02-2.96 2.02m-2.289-2.732c.045.348.907 1.496 2.029 1.651l.261.018c1.036 0 1.81-.815 1.901-1.082-.096-.182-.762-.634-2.025-.81a6 6 0 0 0-.821-.059c-.812 0-1.243.183-1.345.282m43.605-1.245c.079.564-1.033 2.07-2.484 2.272-1.45.202-2.691-.975-2.771-1.539-.076-.564 1.036-1.187 2.486-1.388 1.45-.203 2.689.092 2.769.655m-2.819 2.56c-1.396 0-2.601-1.086-2.7-1.791-.115-.846 1.278-1.489 2.712-1.688.316-.044.629-.066.93-.066 1.238 0 2.058.363 2.14.949.053.379-.238.964-.739 1.492-.331.347-1.026.948-1.973 1.079zm.943-3.013q-.416 0-.856.061c-1.441.201-2.301.779-2.259 1.089.048.341.968 1.332 2.173 1.332l.297-.021c.787-.109 1.378-.623 1.66-.919.443-.465.619-.903.598-1.052-.028-.198-.56-.49-1.613-.49m3.965 32.843a1.594 1.594 0 0 1-1.324-2.483c3.398-5.075 2.776-10.25 2.175-15.255-.257-2.132-.521-4.337-.453-6.453.07-2.177.347-3.973.614-5.71.317-2.058.617-4.002.493-6.31a1.595 1.595 0 1 1 3.186-.172c.142 2.638-.197 4.838-.525 6.967-.253 1.643-.515 3.342-.578 5.327-.061 1.874.178 3.864.431 5.97.64 5.322 1.365 11.354-2.691 17.411a1.6 1.6 0 0 1-1.328.708"})]}),tnt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsx("path",{fill:"#e75225",d:"M63.66 2.477c33.477.007 60.957 27.296 60.914 60.5-.043 33.703-27.41 60.617-61.613 60.593-33.441-.023-60.477-27.343-60.453-61.086C2.53 29.488 30.066 2.47 63.66 2.477m-18.504 21.25c.766 3.777.024 7.3-1.113 10.765-.785 2.399-1.871 4.711-2.52 7.145-1.07 4.008-2.28 8.039-2.726 12.136-.64 5.895 1.676 11.086 5.64 16.25l-18.222-3.835c.031.574 0 .792.062.976 1.727 5.074 4.766 9.348 8.172 13.379.36.426 1.18.644 1.79.644 18.167.036 36.335.032 54.503.008.563 0 1.317-.105 1.66-.468 3.895-4.094 6.871-8.758 8.735-14.63l-19.29 3.778c1.274-2.496 2.723-4.688 3.56-7.098 2.855-8.242 1.671-16.21-2.427-23.726-3.289-6.031-6.324-12.035-4.683-19.305-3.473 3.434-4.809 7.8-5.656 12.3-.832 4.434-1.325 8.93-1.97 13.43-.093-.136-.21-.238-.23-.355a13 13 0 0 1-.168-1.422c-.394-7.367-1.832-14.465-4.87-21.246-1.786-3.988-3.758-8.07-1.915-12.832-1.246.66-2.375 1.313-3.183 2.246-2.41 2.785-3.407 6.13-3.664 9.793-.22 3.13-.52 6.274-1.102 9.352-.61 3.234-1.574 6.402-3.75 9.375-.875-6.348-.973-12.63-6.633-16.66M92 86.75H35.016v9.898H92zm-45.684 15.016c-.046 8.242 8.348 14.382 18.723 13.937 8.602-.371 16.211-7.137 15.559-13.937zm0 0"})}),rnt=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsxs("g",{fill:"#61DAFB",children:[y.jsx("circle",{cx:64,cy:64,r:11.4}),y.jsx("path",{d:"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8M92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9M81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4q-3.3-4.8-6-9.6c-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4q3.3 4.8 6 9.6c1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10m8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2M64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2s4.6-.1 6.9-.2c-2.2 2.9-4.5 5.7-6.9 8.3m-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1m-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2M64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2s-4.6.1-6.9.2c2.2-2.9 4.5-5.7 6.9-8.3m22.2 21-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2M31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6M7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64m28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9M96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6m9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4"})]})}),nnt=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:[y.jsx("path",{fill:"#A41E11",d:"M121.8 93.1c-6.7 3.5-41.4 17.7-48.8 21.6s-11.5 3.8-17.3 1S13 98.1 6.3 94.9c-3.3-1.6-5-2.9-5-4.2V78s48-10.5 55.8-13.2c7.8-2.8 10.4-2.9 17-.5s46.1 9.5 52.6 11.9v12.5c0 1.3-1.5 2.7-4.9 4.4"}),y.jsx("path",{fill:"#D82C20",d:"M121.8 80.5C115.1 84 80.4 98.2 73 102.1s-11.5 3.8-17.3 1S13 85.4 6.3 82.2C-.3 79-.5 76.8 6 74.3c6.5-2.6 43.2-17 51-19.7 7.8-2.8 10.4-2.9 17-.5s41.1 16.1 47.6 18.5c6.7 2.4 6.9 4.4.2 7.9"}),y.jsx("path",{fill:"#A41E11",d:"M121.8 72.5C115.1 76 80.4 90.2 73 94.1c-7.4 3.8-11.5 3.8-17.3 1S13 77.4 6.3 74.2c-3.3-1.6-5-2.9-5-4.2V57.3s48-10.5 55.8-13.2c7.8-2.8 10.4-2.9 17-.5s46.1 9.5 52.6 11.9V68c0 1.3-1.5 2.7-4.9 4.5"}),y.jsx("path",{fill:"#D82C20",d:"M121.8 59.8c-6.7 3.5-41.4 17.7-48.8 21.6-7.4 3.8-11.5 3.8-17.3 1S13 64.7 6.3 61.5s-6.8-5.4-.3-7.9c6.5-2.6 43.2-17 51-19.7 7.8-2.8 10.4-2.9 17-.5s41.1 16.1 47.6 18.5c6.7 2.4 6.9 4.4.2 7.9"}),y.jsx("path",{fill:"#A41E11",d:"M121.8 51c-6.7 3.5-41.4 17.7-48.8 21.6-7.4 3.8-11.5 3.8-17.3 1C49.9 70.9 13 56 6.3 52.8c-3.3-1.6-5.1-2.9-5.1-4.2V35.9s48-10.5 55.8-13.2c7.8-2.8 10.4-2.9 17-.5s46.1 9.5 52.6 11.9v12.5c.1 1.3-1.4 2.6-4.8 4.4"}),y.jsx("path",{fill:"#D82C20",d:"M121.8 38.3C115.1 41.8 80.4 56 73 59.9c-7.4 3.8-11.5 3.8-17.3 1S13 43.3 6.3 40.1s-6.8-5.4-.3-7.9c6.5-2.6 43.2-17 51-19.7 7.8-2.8 10.4-2.9 17-.5s41.1 16.1 47.6 18.5c6.7 2.4 6.9 4.4.2 7.8"}),y.jsx("path",{fill:"#fff",d:"m80.4 26.1-10.8 1.2-2.5 5.8-3.9-6.5-12.5-1.1 9.3-3.4-2.8-5.2 8.8 3.4 8.2-2.7L72 23zM66.5 54.5l-20.3-8.4 29.1-4.4z"}),y.jsx("ellipse",{cx:38.4,cy:35.4,fill:"#fff",rx:15.5,ry:6}),y.jsx("path",{fill:"#7A0C00",d:"m93.3 27.7 17.2 6.8-17.2 6.8z"}),y.jsx("path",{fill:"#AD2115",d:"m74.3 35.3 19-7.6v13.6l-1.9.8z"})]}),ont=e=>y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:y.jsx("path",{fill:"#e15919",d:"M57.646.004c-2.269.064-4.51 1.143-6.384 3.223-1.03 1.146-1.905 2.51-2.63 3.855-1.89 3.54-2.262 7.547-2.962 11.43l-3.852 21.81c-.148.856-.532 1.21-1.3 1.455l-28.268 8.98c-2.06.673-4.125 1.543-5.947 2.7-5.558 3.53-6.38 9.338-2.207 14.438 1.842 2.256 4.216 3.843 6.85 4.996l17.603 7.843c.147.08.304.132.463.162l3.717 2.682s-3.7 40.948 3.246 43.781c-.061-.01-.41-.082-.41-.082s.704.761 2.603.537c1.454.27 1.262.226.074-.01 2.583-.334 7.337-2.497 15.578-10.784a47 47 0 0 0 1.776-1.676l17.8-19.217 4.163 1.465c.15.207.367.34.714.443l19.823 6.031c2.709.836 5.389 1.448 8.277 1.026 5.156-.755 8.951-5 8.9-10.192-.02-2.28-.82-4.339-1.87-6.324l-13.128-24.898c-.418-.787-.405-1.296.196-2l22.054-25.922c1.428-1.703 2.717-3.529 3.465-5.645 1.643-4.67-.482-8.382-5.33-9.289-2.229-.398-4.427-.188-6.6.385l-31.597 8.395c-.93.25-1.39.075-1.895-.772l-12.9-21.434c-.975-1.615-2.14-3.194-3.477-4.527C62.212.89 59.915-.059 57.646.004m.944 19.736c.51.358.768.727 1.01 1.125l13.88 23.13c.382.628.725.85 1.485.648l24.443-6.497 5.885-1.54c-.087.493-.302.79-.537 1.068l-20.16 23.672c-.57.688-.623 1.17-.194 1.976l12.743 24.16.585 1.237-.015.02-22.727-6.264-.006-.018-4.298-1.205-25.493 28.256 4.663-37.15-4.184-1.82.008-.007-23.674-9.4c.454-.413.86-.585 1.285-.717l28.777-9.096c.676-.21 1.061-.47 1.125-1.242l.403-2.355 3.875-21.807 1.12-6.174z"})}),ant=e=>y.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",...e,children:[y.jsx("path",{fill:"#85ea2d",d:"M63.999 124.945c-33.607 0-60.95-27.34-60.95-60.949C3.05 30.388 30.392 3.048 64 3.048s60.95 27.342 60.95 60.95c0 33.607-27.343 60.946-60.95 60.946z"}),y.jsx("path",{fill:"#173647",d:"M40.3 43.311c-.198 2.19.072 4.454-.073 6.668-.173 2.217-.444 4.407-.888 6.596-.615 3.126-2.56 5.489-5.24 7.458 5.218 3.396 5.807 8.662 6.152 14.003.172 2.88.098 5.785.394 8.638.221 2.215 1.082 2.782 3.372 2.854.935.025 1.894 0 2.978 0v6.842c-6.768 1.156-12.354-.762-13.734-6.496a39.3 39.3 0 0 1-.836-6.4c-.148-2.287.097-4.577-.074-6.864-.492-6.277-1.305-8.393-7.308-8.689v-7.8c.441-.1.86-.174 1.302-.223 3.298-.172 4.701-1.182 5.414-4.43a37.5 37.5 0 0 0 .616-5.536c.247-3.569.148-7.21.763-10.754.86-5.094 4.01-7.556 9.254-7.852 1.476-.074 2.978 0 4.676 0v6.99c-.714.05-1.33.147-1.969.147-4.258-.148-4.48 1.304-4.8 4.848zm8.195 16.193h-.099c-2.462-.123-4.578 1.796-4.702 4.258-.122 2.485 1.797 4.603 4.259 4.724h.295c2.436.148 4.527-1.724 4.676-4.16v-.245c.05-2.486-1.944-4.527-4.43-4.577zm15.43 0c-2.386-.074-4.38 1.796-4.454 4.159 0 .149 0 .271.024.418 0 2.684 1.821 4.406 4.578 4.406 2.707 0 4.406-1.772 4.406-4.553-.025-2.682-1.823-4.455-4.554-4.43m15.801 0a4.596 4.596 0 0 0-4.676 4.454 4.515 4.515 0 0 0 4.528 4.528h.05c2.264.394 4.553-1.796 4.701-4.429.122-2.437-2.092-4.553-4.604-4.553Zm21.682.369c-2.855-.123-4.284-1.083-4.996-3.79a27.4 27.4 0 0 1-.811-5.292c-.198-3.298-.174-6.62-.395-9.918-.516-7.826-6.177-10.557-14.397-9.205v6.792c1.304 0 2.313 0 3.322.025 1.748.024 3.077.69 3.249 2.634.172 1.772.172 3.568.344 5.365.346 3.57.542 7.187 1.157 10.706.542 2.904 2.536 5.07 5.02 6.841-4.355 2.929-5.636 7.113-5.857 11.814-.122 3.223-.196 6.472-.368 9.721-.148 2.953-1.181 3.913-4.16 3.987-.835.024-1.648.098-2.583.148v6.964c1.748 0 3.347.1 4.946 0 4.971-.295 7.974-2.706 8.96-7.531.417-2.658.662-5.34.737-8.023.171-2.46.148-4.946.394-7.382.369-3.815 2.116-5.389 5.93-5.636a5 5 0 0 0 1.06-.245v-7.801c-.64-.074-1.084-.148-1.552-.173zM64 6.1c31.977 0 57.9 25.92 57.9 57.898 0 31.977-25.923 57.899-57.9 57.899-31.976 0-57.898-25.922-57.898-57.9C6.102 32.023 32.024 6.101 64 6.101m0-6.1C28.71 0 0 28.71 0 64c0 35.288 28.71 63.998 64 63.998s64-28.71 64-64S99.289.002 64 .002Z"})]});const int={"tech:elasticsearch":Urt,"tech:electron":Wrt,"tech:git":Yrt,"tech:github":Grt,"tech:go":Xrt,"tech:grafana":Krt,"tech:java":Zrt,"tech:kubernetes":Qrt,"tech:nginx":Jrt,"tech:postgresql":ent,"tech:prometheus":tnt,"tech:react":rnt,"tech:redis":nnt,"tech:spark":ont,"tech:swagger":ant};function snt(e){const r=int[e.node.icon??""];return r?y.jsx(r,e):null}function lnt(e,r,n){let o=a=>e(a,...r);return n===void 0?o:Object.assign(o,{lazy:n,lazyArgs:r})}function Lne(e,r,n){let o=e.length-r.length;if(o===0)return e(...r);if(o===1)return lnt(e,r,n);throw Error("Wrong number of arguments")}function cnt(...e){return Lne(unt,e)}function unt(e,r){let n={};for(let[o,a]of Object.entries(e))n[o]=r(a,o,e);return n}function Bne(...e){return Lne(tb,e)}function tb(e,r){if(e===r||Object.is(e,r))return!0;if(typeof e!="object"||typeof r!="object"||e===null||r===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(r))return!1;if(Array.isArray(e))return dnt(e,r);if(e instanceof Map)return pnt(e,r);if(e instanceof Set)return hnt(e,r);if(e instanceof Date)return e.getTime()===r.getTime();if(e instanceof RegExp)return e.toString()===r.toString();if(Object.keys(e).length!==Object.keys(r).length)return!1;for(let[n,o]of Object.entries(e))if(!(n in r)||!tb(o,r[n]))return!1;return!0}function dnt(e,r){if(e.length!==r.length)return!1;for(let[n,o]of e.entries())if(!tb(o,r[n]))return!1;return!0}function pnt(e,r){if(e.size!==r.size)return!1;for(let[n,o]of e.entries())if(!r.has(n)||!tb(o,r.get(n)))return!1;return!0}function hnt(e,r){if(e.size!==r.size)return!1;let n=[...r];for(let o of e){let a=!1;for(let[i,s]of n.entries())if(tb(o,s)){a=!0,n.splice(i,1);break}if(!a)return!1}return!0}let Ns=[],Ku=0;const F4=4;let H4=0,Fne=e=>{let r=[],n={get(){return n.lc||n.listen(()=>{})(),n.value},lc:0,listen(o){return n.lc=r.push(o),()=>{for(let i=Ku+F4;i(e.events=e.events||{},e.events[n+q4]||(e.events[n+q4]=o(a=>{e.events[n].reduceRight((i,s)=>(s(i),i),{shared:{},...a})})),e.events[n]=e.events[n]||[],e.events[n].push(r),()=>{let a=e.events[n],i=a.indexOf(r);a.splice(i,1),a.length||(delete e.events[n],e.events[n+q4](),delete e.events[n+q4])}),gnt=1e3,ynt=(e,r)=>mnt(e,n=>{let o=r(n);o&&e.events[V4].push(o)},fnt,n=>{let o=e.listen;e.listen=(...i)=>(!e.lc&&!e.active&&(e.active=!0,n()),o(...i));let a=e.off;return e.events[V4]=[],e.off=()=>{a(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let i of e.events[V4])i();e.events[V4]=[]}},gnt)},()=>{e.listen=o,e.off=a}}),bnt=(e,r,n)=>{Array.isArray(e)||(e=[e]);let o,a,i=()=>{if(a===H4)return;a=H4;let u=e.map(d=>d.get());if(!o||u.some((d,h)=>d!==o[h])){o=u;let d=r(...u);d&&d.then&&d.t?d.then(h=>{o===u&&s.set(h)}):(s.set(d),a=H4)}},s=Fne(void 0),l=s.get;s.get=()=>(i(),l());let c=i;return ynt(s,()=>{let u=e.map(d=>d.listen(c));return i(),()=>{for(let d of u)d()}}),s},Hne=(e,r)=>bnt(e,r);function vnt(e,r,n){let o=new Set(r).add(void 0);return e.listen((a,i,s)=>{o.has(s)&&n(a,i,s)})}let zR=(e,r)=>n=>{e.current!==n&&(e.current=n,r())};function Vne(e,{keys:r,deps:n=[e,r]}={}){let o=E.useRef();o.current=e.get();let a=E.useCallback(s=>(zR(o,s)(e.value),r?.length>0?vnt(e,r,zR(o,s)):e.listen(zR(o,s))),n),i=()=>o.current;return E.useSyncExternalStore(a,i,i)}const xnt=e=>{const r=Hne(e,l=>rp.create(l));function n(l){const c=e.get();if(Bne(c,l))return;const u={...l,views:cnt(l.views,d=>{const h=c.views[d.id];return Bne(h,d)?h:d})};e.set(u)}const o=Hne(e,l=>Object.values(l.views));function a(){return Vne(r)}function i(){return Vne(o)}function s(l){const[c,u]=E.useState(e.value?.views[l]??null);return E.useEffect(()=>e.subscribe(d=>{u(d.views[l]??null)}),[l]),c}return{updateModel:n,$likec4model:r,useLikeC4Model:a,useLikeC4Views:i,useLikeC4View:s}},wnt=Fne({_stage:"layouted",projectId:"architecture",project:{id:"architecture",title:"architecture"},specification:{tags:{internal:{color:"tomato"}},elements:{actor:{style:{shape:"person",color:"green"}},person:{style:{shape:"person",color:"green"}},component:{style:{}},container:{style:{opacity:20}},internalComponent:{style:{color:"muted",opacity:15}},schema:{style:{}},step:{style:{}},system:{style:{}},workflow:{style:{}},tool:{style:{}},process:{style:{}},repository:{style:{shape:"storage"}}},relationships:{},deployments:{cloud:{style:{}},environment:{style:{}},computeressource:{style:{}},paas:{style:{}},kubernetes:{style:{}},cluster:{style:{}},namespace:{style:{}}},customColors:{}},elements:{edfbuilder_workflow:{style:{},title:"EDFbuilder",kind:"workflow",id:"edfbuilder_workflow"},argocdworkflow:{style:{},title:"EDP ArgoCD Setup Workflow",kind:"workflow",id:"argocdworkflow"},edpworkflow:{style:{},title:"EDP Infrastructure Setup Workflow",kind:"workflow",id:"edpworkflow"},applicationspecification:{style:{},description:{txt:"The application specification describes the application and its components. It is used to generate the application and its components."},title:"application-specification",kind:"component",id:"applicationspecification"},forgejoRunner:{style:{},description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},title:"Forgejo Runner",kind:"component",id:"forgejoRunner"},forgejoRunnerWorker:{style:{},description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},title:"Forgejo Runner Worker",kind:"component",id:"forgejoRunnerWorker"},promtail:{style:{},description:{txt:"Log shipper agent for Loki"},title:"Promtail",kind:"component",id:"promtail"},edfbuilder:{style:{shape:"rectangle",icon:"tech:go"},technology:"Golang",description:{txt:"EDP Foundry Builder"},title:"edfbuilder",kind:"component",id:"edfbuilder"},elasticsearch:{style:{opacity:20,icon:"tech:elasticsearch"},technology:"Elasticsearch",description:{txt:`Elasticsearch is a distributed, RESTful search and analytics engine capable of +addressing a growing number of use cases. It centrally stores your data so you can +discover the expected and uncover the unexpected.`},title:"Elasticsearch",kind:"container",id:"elasticsearch"},objectstorage:{style:{opacity:20},technology:"S3 Object Storage",description:{txt:"s3 Object Storage"},title:"s3 Object Storage",kind:"container",id:"objectstorage"},postgres:{style:{opacity:20,icon:"tech:postgresql"},technology:"PostgreSQL",description:{txt:`PostgreSQL is a powerful, open source object-relational database system. +It has more than 15 years of active development and a proven architecture +that has earned it a strong reputation for reliability, data integrity, +and correctness.`},title:"PostgreSQL",kind:"container",id:"postgres"},redis:{style:{opacity:20,icon:"tech:redis"},technology:"Redis",description:{txt:"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker."},title:"Redis",kind:"container",id:"redis"},developer:{style:{shape:"person",color:"green"},description:{txt:"The regular user of the platform"},title:"Developer",kind:"actor",id:"developer"},platformdeveloper:{style:{shape:"person",color:"gray"},description:{txt:"The EDP engineer"},title:"Platform Developer",kind:"actor",id:"platformdeveloper"},otherProductLifecycleRoles:{style:{shape:"person",color:"green"},description:{txt:"Coworking roles in the outer loop"},title:"Reviewer, Tester, Auditors, Operators",kind:"actor",id:"otherProductLifecycleRoles"},customers:{style:{shape:"person",color:"amber"},description:{txt:"Consumers of your Application"},title:"End Customers",kind:"actor",id:"customers"},cloud:{style:{},technology:"IaaS/PaaS",description:{txt:"Cloud environments"},title:"Cloud",kind:"system",id:"cloud"},enterprise:{style:{},description:{txt:"The customers' enterprise systems"},title:"Customers' Enterprise Systems",kind:"system",id:"enterprise"},documentation:{style:{icon:"tech:electron"},technology:"Static Site Generator",description:{txt:"Documentation system for EDP LikeC4 platform."},title:"Documentation",kind:"system",id:"documentation"},edf:{style:{icon:"tech:kubernetes"},technology:"Kubernetes",description:{txt:"EDP Foundry is a platform for building and deploying EDPs tenantwise."},title:"EDF",kind:"system",id:"edf"},edp:{style:{icon:"tech:kubernetes"},technology:"Kubernetes",description:{txt:"EDP Edge Development Platform"},title:"EDP",kind:"system",id:"edp"},localbox:{style:{},technology:"Linux/Windows/Mac",description:{txt:"A local development system"},title:"localbox",kind:"system",id:"localbox"},"edfbuilder_workflow.runEDP":{style:{opacity:25},title:"Run edpbuilder script",kind:"step",id:"edfbuilder_workflow.runEDP"},"edfbuilder_workflow.applyEDFBuilder":{style:{opacity:15},title:"Applies EDFbuilder resource (and triggers creation)",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder"},"applicationspecification.application_gitrepo":{style:{icon:"tech:git"},technology:"Git",description:{txt:"Git Application Repository"},title:"Git App Repo",kind:"component",id:"applicationspecification.application_gitrepo"},"applicationspecification.applicationspec_gitrepo":{style:{icon:"tech:git"},technology:"Git",description:{txt:"Git Application Specification Repository"},title:"Git AppSpec Repo",kind:"component",id:"applicationspecification.applicationspec_gitrepo"},"edp.api":{style:{opacity:20,icon:"tech:swagger"},description:{txt:"API for the EDP platform"},title:"API",kind:"container",id:"edp.api"},"edp.argoCD":{style:{opacity:20},description:{txt:"GitOps Service"},title:"ArgoCD",kind:"container",id:"edp.argoCD"},"edp.ui":{style:{opacity:20},description:{txt:"Developer Portal"},title:"Backstage",kind:"container",id:"edp.ui"},"edp.crossplane":{style:{opacity:20},tags:["internal"],description:{txt:"Declarative management of ressources"},title:"Crossplane",kind:"container",id:"edp.crossplane"},"edp.externalSecrets":{style:{opacity:20},tags:["internal"],description:{txt:"Provider to access externally stored Kubernetes secrets"},title:"external-secrets",kind:"container",id:"edp.externalSecrets"},"edp.forgejo":{style:{opacity:20,icon:"tech:go"},technology:"Golang",description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},title:"Forgejo",kind:"container",id:"edp.forgejo"},"edp.forgejoActions":{style:{icon:"tech:go"},technology:"Golang",description:{txt:"Continuous Integration like Github Actions"},title:"Forgejo Actions",kind:"component",id:"edp.forgejoActions"},"edp.imageregistry":{style:{icon:"tech:go"},technology:"Golang",description:{txt:"Container Image Registry"},title:"Forgejo OCI Image Registry",kind:"component",id:"edp.imageregistry"},"edp.forgejogit":{style:{icon:"tech:git"},title:"ForgejoGit",kind:"component",id:"edp.forgejogit"},"edp.grafana":{style:{opacity:20,icon:"tech:grafana"},description:{txt:"Data visualization and monitoring"},title:"Grafana",kind:"container",id:"edp.grafana"},"edp.ingressNginx":{style:{opacity:20},tags:["internal"],description:{txt:"Ingress Controller for incoming http(s) traffic"},title:"Ingress",kind:"container",id:"edp.ingressNginx"},"edp.keycloak":{style:{opacity:20},description:{txt:"Single Sign On for all EDP products"},title:"Keycloak",kind:"container",id:"edp.keycloak"},"edp.kyverno":{style:{opacity:20},tags:["internal"],description:{txt:"Policy-as-Code"},title:"Kyverno",kind:"container",id:"edp.kyverno"},"edp.loki":{style:{opacity:20},description:{txt:"Log aggregation system"},title:"Loki",kind:"container",id:"edp.loki"},"edp.mailhog":{style:{opacity:20},description:{txt:"Web and API based SMTP testing"},title:"Mailhog",kind:"container",id:"edp.mailhog"},"edp.minio":{style:{opacity:20},description:{txt:"S3 compatible blob storage"},title:"Minio",kind:"container",id:"edp.minio"},"edp.monitoring":{style:{opacity:20},description:{txt:"Observability system to monitor deployed components"},title:"Monitoring",kind:"container",id:"edp.monitoring"},"edp.openbao":{style:{opacity:20},description:{txt:"Secure secret storage"},title:"OpenBao",kind:"container",id:"edp.openbao"},"edp.prometheus":{style:{opacity:20,icon:"tech:prometheus"},description:{txt:"Monitoring and alerting toolkit"},title:"Prometheus",kind:"container",id:"edp.prometheus"},"edp.spark":{style:{opacity:20},tags:["internal"],description:{txt:"Allows running Spark applications on K8s"},title:"Spark",kind:"container",id:"edp.spark"},"edp.velero":{style:{opacity:20},tags:["internal"],description:{txt:"Backup Kubernetes resources"},title:"Velero",kind:"container",id:"edp.velero"},"cloud.application":{style:{color:"primary"},technology:"DSL",description:{txt:"An application description"},title:"application",kind:"schema",id:"cloud.application"},"edp.application":{style:{color:"primary"},technology:"DSL",description:{txt:"An application description"},title:"application",kind:"schema",id:"edp.application"},"edp.testApp":{style:{opacity:20},description:{txt:"Testapp to validate deployments"},title:"Fibonacci",kind:"container",id:"edp.testApp"},"localbox.application":{style:{color:"primary"},technology:"DSL",description:{txt:"An application description"},title:"application",kind:"schema",id:"localbox.application"},"localbox.git":{style:{icon:"tech:git"},technology:"Git",description:{txt:"local git"},title:"git",kind:"component",id:"localbox.git"},"edfbuilder_workflow.runEDP.createCrossplaneNS":{style:{},title:"Create Crossplane namespace",kind:"step",id:"edfbuilder_workflow.runEDP.createCrossplaneNS"},"edfbuilder_workflow.runEDP.installCrossplaneHelm":{style:{},title:"Install Crossplane Helm Chart",kind:"step",id:"edfbuilder_workflow.runEDP.installCrossplaneHelm"},"edfbuilder_workflow.runEDP.installCrossplaneFunctionsAndProviders":{style:{},title:"Install Crossplane Functions and Providers",kind:"step",id:"edfbuilder_workflow.runEDP.installCrossplaneFunctionsAndProviders"},"edfbuilder_workflow.runEDP.waitForCrossplaneFunctionsAndProviders":{style:{},title:"Wait for Crossplane Functions and Providers to become available",kind:"step",id:"edfbuilder_workflow.runEDP.waitForCrossplaneFunctionsAndProviders"},"edfbuilder_workflow.runEDP.setupCrossplaneServiceAccount":{style:{},title:"Apply cluster-admin role to crossplane shell provider service account",kind:"step",id:"edfbuilder_workflow.runEDP.setupCrossplaneServiceAccount"},"edfbuilder_workflow.runEDP.createArgoCdNS":{style:{},title:"Create ArgoCD namespace",kind:"step",id:"edfbuilder_workflow.runEDP.createArgoCdNS"},"edfbuilder_workflow.runEDP.createGiteaNS":{style:{},title:"Create Gitea namespace",kind:"step",id:"edfbuilder_workflow.runEDP.createGiteaNS"},"edfbuilder_workflow.runEDP.createArgoCdTlsCert":{style:{},title:"Create TLS Cert for Argo",kind:"step",id:"edfbuilder_workflow.runEDP.createArgoCdTlsCert"},"edfbuilder_workflow.runEDP.createGiteaTlsCert":{style:{},title:"Create TLS Cert for Forgejo",kind:"step",id:"edfbuilder_workflow.runEDP.createGiteaTlsCert"},"edfbuilder_workflow.runEDP.createEDFBuilderDefinition":{style:{},title:"Create EDFbuilder crossplane definition (defines API)",kind:"step",id:"edfbuilder_workflow.runEDP.createEDFBuilderDefinition"},"edfbuilder_workflow.runEDP.createEDFBuilderComposition":{style:{},title:"Create EDFbuilder crossplane composition (defines what happens when EDFbuilder is applied)",kind:"step",id:"edfbuilder_workflow.runEDP.createEDFBuilderComposition"},"edfbuilder_workflow.applyEDFBuilder.setEnvVars":{style:{},title:"Set required environment variables",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.setEnvVars"},"edfbuilder_workflow.applyEDFBuilder.readWriteKubeConf":{style:{},title:"Make kube.conf write/readbale",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.readWriteKubeConf"},"edfbuilder_workflow.applyEDFBuilder.setWorkDir":{style:{},title:"Set workdir to /tmp/rundir",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.setWorkDir"},"edfbuilder_workflow.applyEDFBuilder.cloneStacksRepo":{style:{},title:"Clone steps repo and checkout desired branch",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.cloneStacksRepo"},"edfbuilder_workflow.applyEDFBuilder.hydrateStacksWithValues":{style:{},title:"Hydrate Stacks with values",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.hydrateStacksWithValues"},"edfbuilder_workflow.applyEDFBuilder.createNamespaces":{style:{},title:"Create all required namespaces",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.createNamespaces"},"edfbuilder_workflow.applyEDFBuilder.createGiteaAdminPass":{style:{},title:"Create Admin Password for Forgejo",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.createGiteaAdminPass"},"edfbuilder_workflow.applyEDFBuilder.createGrafanaPass":{style:{},title:"Create Grafana Admin Password",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.createGrafanaPass"},"edfbuilder_workflow.applyEDFBuilder.applyServiceMonitorCRD":{style:{},title:"Apply ServiceMonitor CRDs for Prometheus",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.applyServiceMonitorCRD"},"edfbuilder_workflow.applyEDFBuilder.cloneIngressNginxChart":{style:{},title:"Git clone ingress-nginx helm chart",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.cloneIngressNginxChart"},"edfbuilder_workflow.applyEDFBuilder.isntallIngressNginx":{style:{},title:"Install ingress-nginx from cloned chart",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.isntallIngressNginx"},"edfbuilder_workflow.applyEDFBuilder.waitForIngress":{style:{},title:"Wait till ingress-nginx is ready",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.waitForIngress"},"edfbuilder_workflow.applyEDFBuilder.cloneArgoCDHelm":{style:{},title:"Git clone ArgoCD Helm Chart",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.cloneArgoCDHelm"},"edfbuilder_workflow.applyEDFBuilder.installArgoCD":{style:{},title:"Install ArgoCD Helm Chart",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.installArgoCD"},"edfbuilder_workflow.applyEDFBuilder.installArgoCDIngress":{style:{},title:"Install ingress for ArgoCD",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.installArgoCDIngress"},"edfbuilder_workflow.applyEDFBuilder.cloneForgejoHelmChart":{style:{},title:"Git clone Forgejo Helm Chart",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.cloneForgejoHelmChart"},"edfbuilder_workflow.applyEDFBuilder.installForgejo":{style:{},title:"Install Forgejo Helm Chart",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.installForgejo"},"edfbuilder_workflow.applyEDFBuilder.installForgejoIngress":{style:{},title:"Install ingress for Forgejo",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.installForgejoIngress"},"edfbuilder_workflow.applyEDFBuilder.waitForArgoCD":{style:{},title:"Wait till ArgoCD is available",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.waitForArgoCD"},"edfbuilder_workflow.applyEDFBuilder.waitForForgejo":{style:{},title:"Wait till Forgejo is available",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.waitForForgejo"},"edfbuilder_workflow.applyEDFBuilder.createForgejoUser":{style:{},title:"Create technical user for Forgejo",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.createForgejoUser"},"edfbuilder_workflow.applyEDFBuilder.createForgejoRepo":{style:{},title:"Create repository for EDP state in Forgejo",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.createForgejoRepo"},"edfbuilder_workflow.applyEDFBuilder.installForgejoRunner":{style:{},title:"Install Forgejo Runner deployment",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.installForgejoRunner"},"edfbuilder_workflow.applyEDFBuilder.registerForgejoRunner":{style:{},title:"Create registration token secret for runner",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.registerForgejoRunner"},"edfbuilder_workflow.applyEDFBuilder.configGitIdentity":{style:{},title:"Configure Git identity",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.configGitIdentity"},"edfbuilder_workflow.applyEDFBuilder.configCrossplaneArgoCDProvider":{style:{},title:"Configure Crossplane ArgoCD provider",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.configCrossplaneArgoCDProvider"},"edfbuilder_workflow.applyEDFBuilder.configCrossplaneKindProvider":{style:{},title:"Configure Crossplane Kind provider",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.configCrossplaneKindProvider"},"edfbuilder_workflow.applyEDFBuilder.uploadStacksToForgjo":{style:{},title:"Git push hydrated stacks to Forgejo isntance",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.uploadStacksToForgjo"},"edfbuilder_workflow.applyEDFBuilder.configArgoDockerRegistry":{style:{},title:"Configure Docker Registry for Argo Workflows",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.configArgoDockerRegistry"},"edfbuilder_workflow.applyEDFBuilder.createPackagesForgejoUser":{style:{},title:"Create packages user and token in Forgejo (unused?)",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.createPackagesForgejoUser"},"edfbuilder_workflow.applyEDFBuilder.installArgoCDStacks":{style:{},title:"Apply all selected ArgoCD stacks",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.installArgoCDStacks"},"edfbuilder_workflow.applyEDFBuilder.cleanup":{style:{},title:"Cleanup work folder and unset all env vars",kind:"step",id:"edfbuilder_workflow.applyEDFBuilder.cleanup"},"edp.argoCD.argocdServer":{style:{},title:"ArgoCD Server",kind:"component",id:"edp.argoCD.argocdServer"},"edp.argoCD.argocdAppController":{style:{},title:"ApplicationController",kind:"component",id:"edp.argoCD.argocdAppController"},"edp.argoCD.argocdAppSetController":{style:{},title:"ApplicationSeetController",kind:"component",id:"edp.argoCD.argocdAppSetController"},"edp.argoCD.argocdRedis":{style:{icon:"tech:redis"},technology:"Redis",title:"Redis",kind:"component",id:"edp.argoCD.argocdRedis"},"edp.argoCD.argocdRepoServer":{style:{},title:"Repo Server",kind:"component",id:"edp.argoCD.argocdRepoServer"},"edp.ui.backstage":{style:{icon:"tech:react",shape:"browser"},title:"Backstage",kind:"component",id:"edp.ui.backstage"},"edp.ui.database":{style:{shape:"storage",icon:"tech:postgresql"},technology:"Postgresql",title:"Database",kind:"component",id:"edp.ui.database"},"edp.crossplane.crossplane":{style:{},title:"Crossplane",kind:"component",id:"edp.crossplane.crossplane"},"edp.crossplane.crossplaneFunction":{style:{},title:"Function Patch and Transform",kind:"component",id:"edp.crossplane.crossplaneFunction"},"edp.crossplane.crossplaneRbacManager":{style:{},title:"RBAC Manager",kind:"component",id:"edp.crossplane.crossplaneRbacManager"},"edp.crossplane.providerArgoCD":{style:{},title:"ArgoCD Provider",kind:"component",id:"edp.crossplane.providerArgoCD"},"edp.crossplane.providerKind":{style:{},title:"Kind Provider",kind:"component",id:"edp.crossplane.providerKind"},"edp.crossplane.providerShell":{style:{},title:"Shell Provider",kind:"component",id:"edp.crossplane.providerShell"},"edp.externalSecrets.externalSecrets":{style:{},title:"external-secrets controller",kind:"component",id:"edp.externalSecrets.externalSecrets"},"edp.externalSecrets.certController":{style:{},title:"cert-controller",kind:"component",id:"edp.externalSecrets.certController"},"edp.externalSecrets.webhook":{style:{},title:"webhook",kind:"component",id:"edp.externalSecrets.webhook"},"edp.forgejo.forgejocollaboration":{style:{icon:"tech:github"},title:"Collaboration",kind:"component",id:"edp.forgejo.forgejocollaboration"},"edp.forgejo.forgejoproject":{style:{icon:"tech:github"},title:"Project Mgmt",kind:"component",id:"edp.forgejo.forgejoproject"},"edp.ingressNginx.ingressNginx":{style:{icon:"tech:nginx"},technology:"Nginx",title:"ingress-nginx",kind:"component",id:"edp.ingressNginx.ingressNginx"},"edp.keycloak.keycloak":{style:{icon:"tech:java"},technology:"Java",title:"Keycloak",kind:"component",id:"edp.keycloak.keycloak"},"edp.keycloak.keycloakDB":{style:{shape:"storage",icon:"tech:postgresql"},technology:"Postgresql",title:"Database",kind:"component",id:"edp.keycloak.keycloakDB"},"edp.mailhog.mailhog":{style:{icon:"tech:go"},technology:"Golang",title:"Mailhog",kind:"component",id:"edp.mailhog.mailhog"},"edp.minio.minio":{style:{shape:"storage"},technology:"Minio",title:"S3 Blob Storage",kind:"component",id:"edp.minio.minio"},"edp.monitoring.alloy":{style:{icon:"tech:grafana",multiple:!0},description:{txt:"Open Telemetry Collector"},title:"Alloy",kind:"component",id:"edp.monitoring.alloy"},"edp.monitoring.loki":{style:{opacity:20,icon:"tech:grafana"},description:{txt:"Log aggregation system"},title:"Loki",kind:"container",id:"edp.monitoring.loki"},"edp.openbao.openbao":{style:{shape:"storage"},technology:"Openbao",title:"Openbao",kind:"component",id:"edp.openbao.openbao"},"edp.openbao.agentInjector":{style:{},title:"Agent Injector",kind:"component",id:"edp.openbao.agentInjector"},"edp.spark.sparkoperator":{style:{icon:"tech:spark"},technology:"Spark",title:"Spark Operator",kind:"component",id:"edp.spark.sparkoperator"},"edp.velero.velero":{style:{},title:"Velero",kind:"component",id:"edp.velero.velero"},"edp.testApp.fibonacci":{style:{icon:"tech:go"},technology:"Golang",title:"Fibonacci",kind:"component",id:"edp.testApp.fibonacci"},"edp.monitoring.loki.queryFrontend":{style:{},title:"Query Frontend",kind:"component",id:"edp.monitoring.loki.queryFrontend"},"edp.monitoring.loki.distributor":{style:{},title:"Distributor",kind:"component",id:"edp.monitoring.loki.distributor"},"edp.monitoring.loki.gateway":{style:{},title:"Gateway",kind:"component",id:"edp.monitoring.loki.gateway"},"edp.monitoring.loki.ingestor":{style:{},title:"Ingestor",kind:"component",id:"edp.monitoring.loki.ingestor"},"edp.monitoring.loki.querier":{style:{},title:"Querier",kind:"component",id:"edp.monitoring.loki.querier"}},relations:{zgprrj:{title:"",source:{model:"edfbuilder_workflow.runEDP.createCrossplaneNS"},target:{model:"edfbuilder_workflow.runEDP.installCrossplaneHelm"},id:"zgprrj"},hkqe1q:{title:"",source:{model:"edfbuilder_workflow.runEDP.installCrossplaneHelm"},target:{model:"edfbuilder_workflow.runEDP.installCrossplaneFunctionsAndProviders"},id:"hkqe1q"},"7hhs3w":{title:"",source:{model:"edfbuilder_workflow.runEDP.installCrossplaneFunctionsAndProviders"},target:{model:"edfbuilder_workflow.runEDP.waitForCrossplaneFunctionsAndProviders"},id:"7hhs3w"},xjeqlb:{title:"",source:{model:"edfbuilder_workflow.runEDP.waitForCrossplaneFunctionsAndProviders"},target:{model:"edfbuilder_workflow.runEDP.setupCrossplaneServiceAccount"},id:"xjeqlb"},"1nhvr49":{title:"",source:{model:"edfbuilder_workflow.runEDP.setupCrossplaneServiceAccount"},target:{model:"edfbuilder_workflow.runEDP.createArgoCdNS"},id:"1nhvr49"},i203to:{title:"",source:{model:"edfbuilder_workflow.runEDP.createArgoCdNS"},target:{model:"edfbuilder_workflow.runEDP.createGiteaNS"},id:"i203to"},"1b9cczp":{title:"",source:{model:"edfbuilder_workflow.runEDP.createGiteaNS"},target:{model:"edfbuilder_workflow.runEDP.createArgoCdTlsCert"},id:"1b9cczp"},i514he:{title:"",source:{model:"edfbuilder_workflow.runEDP.createArgoCdTlsCert"},target:{model:"edfbuilder_workflow.runEDP.createGiteaTlsCert"},id:"i514he"},"13ashxq":{title:"",source:{model:"edfbuilder_workflow.runEDP.createGiteaTlsCert"},target:{model:"edfbuilder_workflow.runEDP.createEDFBuilderDefinition"},id:"13ashxq"},"14kigg4":{title:"",source:{model:"edfbuilder_workflow.runEDP.createEDFBuilderDefinition"},target:{model:"edfbuilder_workflow.runEDP.createEDFBuilderComposition"},id:"14kigg4"},"1y9fees":{title:"",source:{model:"edfbuilder_workflow.runEDP.createEDFBuilderComposition"},target:{model:"edfbuilder_workflow.applyEDFBuilder"},id:"1y9fees"},"1pfgmn3":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.setEnvVars"},target:{model:"edfbuilder_workflow.applyEDFBuilder.readWriteKubeConf"},id:"1pfgmn3"},"11gwuq3":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.readWriteKubeConf"},target:{model:"edfbuilder_workflow.applyEDFBuilder.setWorkDir"},id:"11gwuq3"},"1ddvozk":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.setWorkDir"},target:{model:"edfbuilder_workflow.applyEDFBuilder.cloneStacksRepo"},id:"1ddvozk"},c4bphp:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.cloneStacksRepo"},target:{model:"edfbuilder_workflow.applyEDFBuilder.hydrateStacksWithValues"},id:"c4bphp"},"22u12c":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.hydrateStacksWithValues"},target:{model:"edfbuilder_workflow.applyEDFBuilder.createNamespaces"},id:"22u12c"},"1veymj5":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.createNamespaces"},target:{model:"edfbuilder_workflow.applyEDFBuilder.createGiteaAdminPass"},id:"1veymj5"},"1bx48yr":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.createGiteaAdminPass"},target:{model:"edfbuilder_workflow.applyEDFBuilder.createGrafanaPass"},id:"1bx48yr"},pbq0ly:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.createGrafanaPass"},target:{model:"edfbuilder_workflow.applyEDFBuilder.applyServiceMonitorCRD"},id:"pbq0ly"},"1tj029j":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.applyServiceMonitorCRD"},target:{model:"edfbuilder_workflow.applyEDFBuilder.cloneIngressNginxChart"},id:"1tj029j"},ukdpc6:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.cloneIngressNginxChart"},target:{model:"edfbuilder_workflow.applyEDFBuilder.isntallIngressNginx"},id:"ukdpc6"},tm63b8:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.isntallIngressNginx"},target:{model:"edfbuilder_workflow.applyEDFBuilder.waitForIngress"},id:"tm63b8"},mnqt5q:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.waitForIngress"},target:{model:"edfbuilder_workflow.applyEDFBuilder.cloneArgoCDHelm"},id:"mnqt5q"},c3zfur:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.cloneArgoCDHelm"},target:{model:"edfbuilder_workflow.applyEDFBuilder.installArgoCD"},id:"c3zfur"},"157ptzn":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.installArgoCD"},target:{model:"edfbuilder_workflow.applyEDFBuilder.installArgoCDIngress"},id:"157ptzn"},"8kcuka":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.installArgoCDIngress"},target:{model:"edfbuilder_workflow.applyEDFBuilder.cloneForgejoHelmChart"},id:"8kcuka"},"5sub2k":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.cloneForgejoHelmChart"},target:{model:"edfbuilder_workflow.applyEDFBuilder.installForgejo"},id:"5sub2k"},z8qrfi:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.installForgejo"},target:{model:"edfbuilder_workflow.applyEDFBuilder.installForgejoIngress"},id:"z8qrfi"},"1dqe9ri":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.installForgejoIngress"},target:{model:"edfbuilder_workflow.applyEDFBuilder.waitForArgoCD"},id:"1dqe9ri"},"12iu5vk":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.waitForArgoCD"},target:{model:"edfbuilder_workflow.applyEDFBuilder.waitForForgejo"},id:"12iu5vk"},"1xhuuis":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.waitForForgejo"},target:{model:"edfbuilder_workflow.applyEDFBuilder.createForgejoUser"},id:"1xhuuis"},vhezff:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.createForgejoUser"},target:{model:"edfbuilder_workflow.applyEDFBuilder.createForgejoRepo"},id:"vhezff"},"1dow3tq":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.createForgejoRepo"},target:{model:"edfbuilder_workflow.applyEDFBuilder.installForgejoRunner"},id:"1dow3tq"},"1k46mx8":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.installForgejoRunner"},target:{model:"edfbuilder_workflow.applyEDFBuilder.registerForgejoRunner"},id:"1k46mx8"},f5bybq:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.registerForgejoRunner"},target:{model:"edfbuilder_workflow.applyEDFBuilder.configGitIdentity"},id:"f5bybq"},"8g1uqn":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.configGitIdentity"},target:{model:"edfbuilder_workflow.applyEDFBuilder.configCrossplaneArgoCDProvider"},id:"8g1uqn"},"9c504z":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.configCrossplaneArgoCDProvider"},target:{model:"edfbuilder_workflow.applyEDFBuilder.configCrossplaneKindProvider"},id:"9c504z"},"19gp6kf":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.configCrossplaneKindProvider"},target:{model:"edfbuilder_workflow.applyEDFBuilder.uploadStacksToForgjo"},id:"19gp6kf"},h55zvp:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.uploadStacksToForgjo"},target:{model:"edfbuilder_workflow.applyEDFBuilder.configArgoDockerRegistry"},id:"h55zvp"},"1b7dj03":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.configArgoDockerRegistry"},target:{model:"edfbuilder_workflow.applyEDFBuilder.createPackagesForgejoUser"},id:"1b7dj03"},"1bk65oi":{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.createPackagesForgejoUser"},target:{model:"edfbuilder_workflow.applyEDFBuilder.installArgoCDStacks"},id:"1bk65oi"},rsncrl:{title:"",source:{model:"edfbuilder_workflow.applyEDFBuilder.installArgoCDStacks"},target:{model:"edfbuilder_workflow.applyEDFBuilder.cleanup"},id:"rsncrl"},"18dtot7":{title:"register",source:{model:"forgejoRunner"},target:{model:"edp.forgejoActions"},id:"18dtot7"},"1oxlsu0":{title:"boots one",source:{model:"edfbuilder"},target:{model:"edf"},id:"1oxlsu0"},s1l7g7:{title:"runs",source:{model:"platformdeveloper"},target:{model:"edfbuilder"},id:"s1l7g7"},yfhhi5:{title:"read/write",source:{model:"edp.argoCD.argocdServer"},target:{model:"edp.argoCD.argocdRedis"},id:"yfhhi5"},iullhy:{title:"read/write",source:{model:"edp.argoCD.argocdRepoServer"},target:{model:"edp.argoCD.argocdRedis"},id:"iullhy"},"10vkxaf":{title:"read/write",source:{model:"edp.argoCD.argocdAppController"},target:{model:"edp.argoCD.argocdRedis"},id:"10vkxaf"},i8z0mi:{title:"read/write",source:{model:"edp.argoCD.argocdAppSetController"},target:{model:"edp.argoCD.argocdRedis"},id:"i8z0mi"},"6mupa0":{title:"Syncs git repo",source:{model:"edp.argoCD.argocdRepoServer"},target:{model:"edp.forgejogit"},id:"6mupa0"},c23sak:{title:"reads/writes",source:{model:"edp.ui.backstage"},target:{model:"edp.ui.database"},id:"c23sak"},"1pbc22f":{title:"runs workflows",source:{model:"edp.forgejoActions"},target:{model:"forgejoRunner"},id:"1pbc22f"},"13uvtiq":{title:"get metrics and alerts",source:{model:"edp.grafana"},target:{model:"edp.prometheus"},id:"13uvtiq"},"1n1utzc":{title:"get logs",source:{model:"edp.grafana"},target:{model:"edp.loki"},id:"1n1utzc"},"123efwn":{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.forgejo"},id:"123efwn"},h3rut2:{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.keycloak.keycloak"},id:"h3rut2"},"1p30hav":{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.openbao.openbao"},id:"1p30hav"},"1yssos5":{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.argoCD.argocdServer"},id:"1yssos5"},v8c8aq:{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.ui.backstage"},id:"v8c8aq"},fe65w2:{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.minio.minio"},id:"fe65w2"},"1jvab2g":{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.monitoring.alloy"},id:"1jvab2g"},fs60l7:{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.monitoring.loki.queryFrontend"},id:"fs60l7"},"1i5f8um":{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.testApp.fibonacci"},id:"1i5f8um"},ofdedh:{title:"https",source:{model:"edp.ingressNginx.ingressNginx"},target:{model:"edp.mailhog.mailhog"},id:"ofdedh"},"18zxrhs":{title:"reads/writes",source:{model:"edp.keycloak.keycloak"},target:{model:"edp.keycloak.keycloakDB"},id:"18zxrhs"},"11ollyi":{title:"pushes logs",source:{model:"edp.monitoring.alloy"},target:{model:"edp.monitoring.loki.distributor"},id:"11ollyi"},"1mazt1x":{title:"store backups",source:{model:"edp.velero.velero"},target:{model:"edp.minio.minio"},id:"1mazt1x"},"5hkplj":{title:"inner loop development",source:{model:"developer"},target:{model:"localbox"},id:"5hkplj"},"1pp73vj":{title:"outer loop development",source:{model:"developer"},target:{model:"edp"},id:"1pp73vj"},yk9zv2:{title:"manages project",source:{model:"developer"},target:{model:"edp.ui"},id:"yk9zv2"},"12036hb":{title:"manages code",source:{model:"developer"},target:{model:"edp.forgejo"},id:"12036hb"},jpl8ll:{title:"authenticates",source:{model:"developer"},target:{model:"edp.keycloak"},id:"jpl8ll"},"1ghp31l":{title:"manages deployments",source:{model:"developer"},target:{model:"edp.argoCD"},id:"1ghp31l"},"1xiorre":{title:"monitors",source:{model:"developer"},target:{model:"edp.grafana"},id:"1xiorre"},"1woleh6":{title:"create and maintain apps",source:{model:"developer"},target:{model:"edp.ui.backstage"},id:"1woleh6"},"177bm2y":{title:"pushes and pull images",source:{model:"developer"},target:{model:"edp.imageregistry"},id:"177bm2y"},"1l9a3pd":{title:"uses API",source:{model:"developer"},target:{model:"edp.api"},id:"1l9a3pd"},"1uzzn9j":{title:"uses git",source:{model:"developer"},target:{model:"edp.forgejogit"},id:"1uzzn9j"},lb4xas:{title:"act according to responibility",source:{model:"otherProductLifecycleRoles"},target:{model:"edp"},id:"lb4xas"},"1g2ebwc":{title:"uses your app",source:{model:"customers"},target:{model:"cloud"},id:"1g2ebwc"},nc44l9:{title:"app specific dependencies",source:{model:"enterprise"},target:{model:"cloud"},id:"nc44l9"},xw0pne:{title:"provides documentation for",source:{model:"documentation"},target:{model:"edp"},id:"xw0pne"},"3sz3k3":{title:"creates and maintains documentation",source:{model:"platformdeveloper"},target:{model:"documentation"},id:"3sz3k3"},wsm3kf:{title:"builds many",source:{model:"edf"},target:{model:"edp"},id:"wsm3kf"},v8v12:{title:"develops EDP and EDF",source:{model:"platformdeveloper"},target:{model:"edf"},id:"v8v12"},"615gvx":{title:"integrates",source:{model:"edp"},target:{model:"enterprise"},id:"615gvx"},gerdx4:{title:"deploys and observes",source:{model:"edp"},target:{model:"cloud"},id:"gerdx4"},wvo8i:{title:"",source:{model:"edp"},target:{model:"localbox"},id:"wvo8i"},"1mp9fps":{title:"inner-outer-loop synchronization",source:{model:"localbox"},target:{model:"edp"},id:"1mp9fps"},"1abvxlh":{title:"company integration",source:{model:"localbox"},target:{model:"enterprise"},id:"1abvxlh"}},globals:{predicates:{},dynamicPredicates:{},styles:{text_large:[{targets:[{wildcard:!0}],style:{size:"xl"}}]}},views:{index:{_type:"deployment",tags:null,links:null,_stage:"layouted",sourcePath:"views/deployment/kind/kind.c4",description:null,title:"Local Kind Deployment",id:"index",autoLayout:{direction:"TB"},hash:"2567bb136f9a38fc393b5cf518bffb4ed976b0ed",bounds:{x:0,y:0,width:13187,height:1755},nodes:[{id:"local",parent:null,level:0,children:["local.ingressNginx","local.velero","local.crossplane","local.externalSecrets","local.monitoring","local.backstage","local.argocd","local.gitea","local.keycloak","local.openbao","local.fibonacci","local.mailhog","local.minio","local.spark.sparkoperator"],inEdges:[],outEdges:[],deploymentRef:"local",title:"Local kind-cluster",kind:"environment",technology:"Kind",color:"primary",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"Local kind-cluster environment for EDP, typically run by edpbuilder"},tags:[],style:{opacity:15,size:"md"},depth:2,x:2267,y:8,width:10912,height:1102,labelBBox:{x:6,y:0,width:127,height:15}},{id:"otc-faas",parent:null,level:0,children:[],inEdges:[],outEdges:[],deploymentRef:"otc-faas",title:"OTC prototype FaaS",kind:"cloud",technology:"OTC",color:"primary",shape:"rectangle",description:{txt:"OTC environments for Prototype faaS."},tags:[],style:{opacity:15,size:"md"},x:0,y:150,width:320,height:180,labelBBox:{x:30,y:54,width:259,height:67}},{id:"edge",parent:null,level:0,children:[],inEdges:[],outEdges:[],deploymentRef:"edge",title:"Edge Cloud",kind:"cloud",technology:"Edge",color:"primary",shape:"rectangle",description:{txt:"Edge environments for distributed workloads."},tags:[],style:{opacity:15,size:"md"},x:450,y:150,width:340,height:180,labelBBox:{x:18,y:54,width:304,height:67}},{id:"otc-edpFoundry",parent:null,level:0,children:["otc-edpFoundry.forgejoRunnerInfrastructure","otc-edpFoundry.cce","otc-edpFoundry.workflowSetupEDPInfrastructure","otc-edpFoundry.workflowSetupArgoCDInfrastructure"],inEdges:[],outEdges:["r3wxut","1sng0q0","e3benz"],deploymentRef:"otc-edpFoundry",title:"OTC EDP Foundry Central Service clusters",kind:"cloud",technology:"OTC",color:"primary",shape:"rectangle",description:{txt:`OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder. + +A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP. +Optionally we will have a WebUI/API/CLI`},tags:[],style:{opacity:15,size:"md"},depth:1,x:855,y:79,width:870,height:981,labelBBox:{x:6,y:0,width:280,height:15}},{id:"local.ingressNginx",parent:"local",level:1,children:["local.ingressNginx.ingressNginx"],inEdges:[],outEdges:["15juth8","p2br4p","o229dq","2vnvvg","4ix58c","1hr2s5j","1nksp5g","m2japo","4drflo","ihlgsc"],deploymentRef:"local.ingressNginx",title:"ingress-nginx",kind:"namespace",color:"primary",shape:"rectangle",modelRef:"edp.ingressNginx.ingressNginx",icon:"tech:nginx",tags:[],style:{opacity:15,size:"md"},depth:1,x:4970,y:97,width:384,height:265,labelBBox:{x:6,y:0,width:92,height:15}},{id:"local.velero",parent:"local",level:1,children:["local.velero.velero"],inEdges:[],outEdges:["3znaik"],deploymentRef:"local.velero",title:"Velero",kind:"namespace",color:"primary",shape:"rectangle",modelRef:"edp.velero.velero",tags:[],style:{opacity:15,size:"md"},depth:1,x:8255,y:97,width:384,height:265,labelBBox:{x:6,y:0,width:49,height:15}},{id:"otc-edpFoundry.forgejoRunnerInfrastructure",parent:"otc-edpFoundry",level:1,children:[],inEdges:[],outEdges:["109g3jm"],deploymentRef:"otc-edpFoundry.forgejoRunnerInfrastructure",title:"EDP ForgejoRunner infrastructure",kind:"computeressource",color:"primary",shape:"rectangle",modelRef:"forgejoRunner",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},tags:[],style:{opacity:15,size:"md"},x:920,y:150,width:342,height:180,labelBBox:{x:18,y:54,width:306,height:66}},{id:"local.crossplane",parent:"local",level:1,children:["local.crossplane.crossplane","local.crossplane.crossplaneFunction","local.crossplane.crossplaneRbacManager","local.crossplane.providerArgoCD","local.crossplane.providerKind","local.crossplane.providerShell"],inEdges:[],outEdges:[],deploymentRef:"local.crossplane",title:"crossplane-system",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:8689,y:79,width:2670,height:301,labelBBox:{x:6,y:0,width:129,height:15}},{id:"local.crossplane.crossplane",parent:"local.crossplane",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Crossplane",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.crossplane.crossplane",modelRef:"edp.crossplane.crossplane",x:8739,y:150,width:320,height:180,labelBBox:{x:107,y:74,width:105,height:24}},{id:"local.crossplane.crossplaneFunction",parent:"local.crossplane",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Function Patch and Transform",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.crossplane.crossplaneFunction",modelRef:"edp.crossplane.crossplaneFunction",x:9189,y:150,width:320,height:180,labelBBox:{x:24,y:74,width:273,height:24}},{id:"local.crossplane.crossplaneRbacManager",parent:"local.crossplane",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"RBAC Manager",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.crossplane.crossplaneRbacManager",modelRef:"edp.crossplane.crossplaneRbacManager",x:9639,y:150,width:320,height:180,labelBBox:{x:88,y:74,width:144,height:24}},{id:"local.crossplane.providerArgoCD",parent:"local.crossplane",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"ArgoCD Provider",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.crossplane.providerArgoCD",modelRef:"edp.crossplane.providerArgoCD",x:10089,y:150,width:320,height:180,labelBBox:{x:82,y:74,width:155,height:24}},{id:"local.crossplane.providerKind",parent:"local.crossplane",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Kind Provider",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.crossplane.providerKind",modelRef:"edp.crossplane.providerKind",x:10539,y:150,width:320,height:180,labelBBox:{x:98,y:74,width:124,height:24}},{id:"local.crossplane.providerShell",parent:"local.crossplane",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Shell Provider",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.crossplane.providerShell",modelRef:"edp.crossplane.providerShell",x:10989,y:150,width:320,height:180,labelBBox:{x:96,y:74,width:129,height:24}},{id:"local.externalSecrets",parent:"local",level:1,children:["local.externalSecrets.certController","local.externalSecrets.externalSecrets","local.externalSecrets.webhook"],inEdges:[],outEdges:[],deploymentRef:"local.externalSecrets",title:"external-secrets",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:11409,y:79,width:1320,height:301,labelBBox:{x:6,y:0,width:119,height:15}},{id:"local.externalSecrets.certController",parent:"local.externalSecrets",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"cert-controller",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.externalSecrets.certController",modelRef:"edp.externalSecrets.certController",x:11459,y:150,width:320,height:180,labelBBox:{x:97,y:74,width:126,height:24}},{id:"local.externalSecrets.externalSecrets",parent:"local.externalSecrets",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"external-secrets controller",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.externalSecrets.externalSecrets",modelRef:"edp.externalSecrets.externalSecrets",x:11909,y:150,width:320,height:180,labelBBox:{x:43,y:74,width:234,height:24}},{id:"local.externalSecrets.webhook",parent:"local.externalSecrets",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"webhook",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.externalSecrets.webhook",modelRef:"edp.externalSecrets.webhook",x:12359,y:150,width:320,height:180,labelBBox:{x:118,y:74,width:84,height:24}},{id:"local.monitoring",parent:"local",level:1,children:["local.monitoring.gateway","local.monitoring.ingestor","local.monitoring.querier","local.monitoring.alloy","local.monitoring.queryFrontend","local.monitoring.distributor"],inEdges:["1hr2s5j","1nksp5g"],outEdges:[],deploymentRef:"local.monitoring",title:"monitoring",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:2787,y:79,width:1320,height:981,labelBBox:{x:6,y:0,width:75,height:15}},{id:"local.monitoring.gateway",parent:"local.monitoring",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Gateway",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.monitoring.gateway",modelRef:"edp.monitoring.loki.gateway",x:2837,y:150,width:320,height:180,labelBBox:{x:119,y:74,width:83,height:24}},{id:"local.monitoring.ingestor",parent:"local.monitoring",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Ingestor",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.monitoring.ingestor",modelRef:"edp.monitoring.loki.ingestor",x:3287,y:150,width:320,height:180,labelBBox:{x:122,y:74,width:76,height:24}},{id:"local.monitoring.querier",parent:"local.monitoring",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Querier",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.monitoring.querier",modelRef:"edp.monitoring.loki.querier",x:3737,y:150,width:320,height:180,labelBBox:{x:125,y:74,width:71,height:24}},{id:"local.ingressNginx.ingressNginx",parent:"local.ingressNginx",level:2,children:[],inEdges:[],outEdges:["15juth8","p2br4p","o229dq","2vnvvg","4ix58c","1hr2s5j","1nksp5g","m2japo","4drflo","ihlgsc"],kind:"instance",title:"ingress-nginx",technology:"Nginx",tags:[],icon:"tech:nginx",color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.ingressNginx.ingressNginx",modelRef:"edp.ingressNginx.ingressNginx",x:5002,y:150,width:320,height:180,labelBBox:{x:85,y:65,width:181,height:45}},{id:"local.velero.velero",parent:"local.velero",level:2,children:[],inEdges:[],outEdges:["3znaik"],kind:"instance",title:"Velero",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.velero.velero",modelRef:"edp.velero.velero",x:8287,y:150,width:320,height:180,labelBBox:{x:129,y:74,width:62,height:24}},{id:"otc-edpFoundry.cce",parent:"otc-edpFoundry",level:1,children:[],inEdges:["109g3jm"],outEdges:["llfvob","fil3na"],deploymentRef:"otc-edpFoundry.cce",title:"OTC CCE",kind:"kubernetes",technology:"Kubernetes",color:"primary",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"OTC Container Cluster Engine"},tags:[],style:{opacity:15,size:"md"},x:927,y:497,width:327,height:180,labelBBox:{x:46,y:54,width:266,height:67}},{id:"local.backstage",parent:"local",level:1,children:["local.backstage.backstage","local.backstage.database"],inEdges:["15juth8"],outEdges:[],deploymentRef:"local.backstage",title:"backstage",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:5041,y:426,width:420,height:634,labelBBox:{x:6,y:0,width:74,height:15}},{id:"local.argocd",parent:"local",level:1,children:["local.argocd.argocdAppController","local.argocd.argocdAppSetController","local.argocd.argocdRepoServer","local.argocd.argocdServer","local.argocd.argocdRedis"],inEdges:["p2br4p"],outEdges:[],deploymentRef:"local.argocd",title:"argocd",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:5511,y:426,width:1770,height:634,labelBBox:{x:6,y:0,width:53,height:15}},{id:"local.gitea",parent:"local",level:1,children:["local.gitea.forgejo"],inEdges:["o229dq"],outEdges:[],deploymentRef:"local.gitea",title:"gitea",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:7331,y:444,width:404,height:265,labelBBox:{x:6,y:0,width:38,height:15}},{id:"local.keycloak",parent:"local",level:1,children:["local.keycloak.keycloak","local.keycloak.keycloakDB"],inEdges:["2vnvvg"],outEdges:[],deploymentRef:"local.keycloak",title:"keycloak",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:2317,y:426,width:420,height:634,labelBBox:{x:6,y:0,width:66,height:15}},{id:"local.openbao",parent:"local",level:1,children:["local.openbao.openbao","local.openbao.agentInjector"],inEdges:["m2japo"],outEdges:[],deploymentRef:"local.openbao",title:"openbao",kind:"namespace",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:7785,y:79,width:420,height:648,labelBBox:{x:6,y:0,width:60,height:15}},{id:"local.fibonacci",parent:"local",level:1,children:["local.fibonacci.fibonacci"],inEdges:["4drflo"],outEdges:[],deploymentRef:"local.fibonacci",title:"fibonacci-app",kind:"namespace",color:"primary",shape:"rectangle",modelRef:"edp.testApp.fibonacci",icon:"tech:go",tags:[],style:{opacity:15,size:"md"},depth:1,x:4157,y:444,width:384,height:265,labelBBox:{x:6,y:0,width:91,height:15}},{id:"local.mailhog",parent:"local",level:1,children:["local.mailhog.mailhog"],inEdges:["ihlgsc"],outEdges:[],deploymentRef:"local.mailhog",title:"Mailhog",kind:"namespace",color:"primary",shape:"rectangle",modelRef:"edp.mailhog.mailhog",icon:"tech:go",tags:[],style:{opacity:15,size:"md"},depth:1,x:4607,y:444,width:384,height:265,labelBBox:{x:6,y:0,width:56,height:15}},{id:"local.minio",parent:"local",level:1,children:["local.minio.minio"],inEdges:["3znaik","4ix58c"],outEdges:[],deploymentRef:"local.minio",title:"minio-backup",kind:"namespace",color:"primary",shape:"storage",modelRef:"edp.minio.minio",tags:[],style:{opacity:15,size:"md"},depth:1,x:8255,y:444,width:384,height:265,labelBBox:{x:6,y:0,width:86,height:15}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure",parent:"otc-edpFoundry",level:1,children:[],inEdges:["llfvob"],outEdges:["r3wxut","e3benz"],deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure",title:"EDP infrastructure Workflow",kind:"computeressource",color:"primary",shape:"rectangle",description:{txt:"EDP infrastructure Workflow"},tags:[],style:{opacity:15,size:"md"},x:905,y:830,width:320,height:180,labelBBox:{x:32,y:63,width:255,height:48}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",parent:"otc-edpFoundry",level:1,children:[],inEdges:["fil3na"],outEdges:["1sng0q0"],deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",title:"EDP ArgoCD Workflow",kind:"computeressource",color:"primary",shape:"rectangle",description:{txt:"EDP Setup ArgoCD Workflow"},tags:[],style:{opacity:15,size:"md"},x:1355,y:830,width:320,height:180,labelBBox:{x:55,y:63,width:210,height:48}},{id:"local.backstage.backstage",parent:"local.backstage",level:2,children:[],inEdges:["15juth8"],outEdges:["19kg5y"],kind:"instance",title:"Backstage",tags:[],icon:"tech:react",color:"primary",shape:"browser",style:{opacity:15,size:"md"},deploymentRef:"local.backstage.backstage",modelRef:"edp.ui.backstage",x:5091,y:497,width:320,height:180,labelBBox:{x:97,y:74,width:156,height:24}},{id:"local.argocd.argocdAppController",parent:"local.argocd",level:2,children:[],inEdges:[],outEdges:["1gfgfhk"],kind:"instance",title:"ApplicationController",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.argocd.argocdAppController",modelRef:"edp.argoCD.argocdAppController",x:5561,y:497,width:320,height:180,labelBBox:{x:66,y:74,width:189,height:24}},{id:"local.argocd.argocdAppSetController",parent:"local.argocd",level:2,children:[],inEdges:[],outEdges:["qfu5xm"],kind:"instance",title:"ApplicationSeetController",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.argocd.argocdAppSetController",modelRef:"edp.argoCD.argocdAppSetController",x:6011,y:497,width:320,height:180,labelBBox:{x:45,y:74,width:230,height:24}},{id:"local.argocd.argocdRepoServer",parent:"local.argocd",level:2,children:[],inEdges:[],outEdges:["g7xnzs"],kind:"instance",title:"Repo Server",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.argocd.argocdRepoServer",modelRef:"edp.argoCD.argocdRepoServer",x:6461,y:497,width:320,height:180,labelBBox:{x:102,y:74,width:116,height:24}},{id:"local.argocd.argocdServer",parent:"local.argocd",level:2,children:[],inEdges:["p2br4p"],outEdges:["fon3rk"],kind:"instance",title:"ArgoCD Server",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.argocd.argocdServer",modelRef:"edp.argoCD.argocdServer",x:6911,y:497,width:320,height:180,labelBBox:{x:90,y:74,width:140,height:24}},{id:"local.gitea.forgejo",parent:"local.gitea",level:2,children:[],inEdges:["o229dq"],outEdges:[],kind:"instance",title:"Forgejo",description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"local.gitea.forgejo",modelRef:"edp.forgejo",navigateTo:"forgejo",x:7363,y:497,width:340,height:180,labelBBox:{x:46,y:18,width:278,height:139}},{id:"local.keycloak.keycloak",parent:"local.keycloak",level:2,children:[],inEdges:["2vnvvg"],outEdges:["4zwy1m"],kind:"instance",title:"Keycloak",technology:"Java",tags:[],icon:"tech:java",color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.keycloak.keycloak",modelRef:"edp.keycloak.keycloak",x:2367,y:497,width:320,height:180,labelBBox:{x:104,y:65,width:143,height:45}},{id:"local.monitoring.alloy",parent:"local.monitoring",level:2,children:[],inEdges:["1hr2s5j"],outEdges:["sb2j38"],kind:"instance",title:"Alloy",description:{txt:"Open Telemetry Collector"},tags:[],icon:"tech:grafana",color:"primary",shape:"rectangle",style:{opacity:15,size:"md",multiple:!0},deploymentRef:"local.monitoring.alloy",modelRef:"edp.monitoring.alloy",x:3737,y:497,width:320,height:180,labelBBox:{x:59,y:63,width:233,height:48}},{id:"local.monitoring.queryFrontend",parent:"local.monitoring",level:2,children:[],inEdges:["1nksp5g"],outEdges:[],kind:"instance",title:"Query Frontend",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.monitoring.queryFrontend",modelRef:"edp.monitoring.loki.queryFrontend",x:3287,y:497,width:320,height:180,labelBBox:{x:88,y:74,width:144,height:24}},{id:"local.openbao.openbao",parent:"local.openbao",level:2,children:[],inEdges:["m2japo"],outEdges:[],kind:"instance",title:"Openbao",technology:"Openbao",tags:[],color:"primary",shape:"storage",style:{opacity:15,size:"md"},deploymentRef:"local.openbao.openbao",modelRef:"edp.openbao.openbao",x:7835,y:497,width:320,height:180,labelBBox:{x:117,y:65,width:86,height:45}},{id:"local.openbao.agentInjector",parent:"local.openbao",level:2,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Agent Injector",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.openbao.agentInjector",modelRef:"edp.openbao.agentInjector",x:7835,y:150,width:320,height:180,labelBBox:{x:96,y:74,width:127,height:24}},{id:"local.fibonacci.fibonacci",parent:"local.fibonacci",level:2,children:[],inEdges:["4drflo"],outEdges:[],kind:"instance",title:"Fibonacci",technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.fibonacci.fibonacci",modelRef:"edp.testApp.fibonacci",x:4189,y:497,width:320,height:180,labelBBox:{x:101,y:65,width:148,height:45}},{id:"local.mailhog.mailhog",parent:"local.mailhog",level:2,children:[],inEdges:["ihlgsc"],outEdges:[],kind:"instance",title:"Mailhog",technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.mailhog.mailhog",modelRef:"edp.mailhog.mailhog",x:4639,y:497,width:320,height:180,labelBBox:{x:109,y:65,width:132,height:45}},{id:"local.minio.minio",parent:"local.minio",level:2,children:[],inEdges:["3znaik","4ix58c"],outEdges:[],kind:"instance",title:"S3 Blob Storage",technology:"Minio",tags:[],color:"primary",shape:"storage",style:{opacity:15,size:"md"},deploymentRef:"local.minio.minio",modelRef:"edp.minio.minio",x:8287,y:497,width:320,height:180,labelBBox:{x:85,y:65,width:150,height:45}},{id:"otc-edp-per-tenant",parent:null,level:0,children:["otc-edp-per-tenant.forgejoRunnerInfrastructure","otc-edp-per-tenant.cce","otc-edp-per-tenant.cloudServices"],inEdges:["r3wxut","1sng0q0","e3benz"],outEdges:[],deploymentRef:"otc-edp-per-tenant",title:"OTC EDP per tenant cluster",kind:"cloud",technology:"OTC",color:"primary",shape:"rectangle",description:{txt:`OTC environment for EDP. EDP is the environment a customer gets from us. + + This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry.`},tags:[],style:{opacity:15,size:"md"},depth:1,x:1775,y:79,width:442,height:1668,labelBBox:{x:6,y:0,width:181,height:15}},{id:"local.backstage.database",parent:"local.backstage",level:2,children:[],inEdges:["19kg5y"],outEdges:[],kind:"instance",title:"Database",technology:"Postgresql",tags:[],icon:"tech:postgresql",color:"primary",shape:"storage",style:{opacity:15,size:"md"},deploymentRef:"local.backstage.database",modelRef:"edp.ui.database",x:5091,y:830,width:320,height:180,labelBBox:{x:101,y:64,width:148,height:46}},{id:"local.argocd.argocdRedis",parent:"local.argocd",level:2,children:[],inEdges:["1gfgfhk","qfu5xm","g7xnzs","fon3rk"],outEdges:[],kind:"instance",title:"Redis",technology:"Redis",tags:[],icon:"tech:redis",color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.argocd.argocdRedis",modelRef:"edp.argoCD.argocdRedis",x:6686,y:830,width:320,height:180,labelBBox:{x:119,y:64,width:113,height:46}},{id:"local.keycloak.keycloakDB",parent:"local.keycloak",level:2,children:[],inEdges:["4zwy1m"],outEdges:[],kind:"instance",title:"Database",technology:"Postgresql",tags:[],icon:"tech:postgresql",color:"primary",shape:"storage",style:{opacity:15,size:"md"},deploymentRef:"local.keycloak.keycloakDB",modelRef:"edp.keycloak.keycloakDB",x:2367,y:830,width:320,height:180,labelBBox:{x:101,y:64,width:148,height:46}},{id:"local.monitoring.distributor",parent:"local.monitoring",level:2,children:[],inEdges:["sb2j38"],outEdges:[],kind:"instance",title:"Distributor",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.monitoring.distributor",modelRef:"edp.monitoring.loki.distributor",x:3737,y:830,width:320,height:180,labelBBox:{x:112,y:74,width:95,height:24}},{id:"otc-edp-per-tenant.forgejoRunnerInfrastructure",parent:"otc-edp-per-tenant",level:1,children:[],inEdges:[],outEdges:["fkkf8y"],deploymentRef:"otc-edp-per-tenant.forgejoRunnerInfrastructure",title:"EDP ForgejoRunner infrastructure",kind:"computeressource",color:"primary",shape:"rectangle",modelRef:"forgejoRunner",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},tags:[],style:{opacity:15,size:"md"},x:1825,y:150,width:342,height:180,labelBBox:{x:18,y:54,width:306,height:66}},{id:"otc-edp-per-tenant.cce",parent:"otc-edp-per-tenant",level:1,children:[],inEdges:["fkkf8y","r3wxut","1sng0q0"],outEdges:["pit45i"],deploymentRef:"otc-edp-per-tenant.cce",title:"OTC CCE",kind:"kubernetes",technology:"Kubernetes",color:"primary",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"OTC Container Cluster Engine"},tags:[],style:{opacity:15,size:"md"},x:1828,y:1206,width:327,height:180,labelBBox:{x:46,y:53,width:266,height:67}},{id:"otc-edp-per-tenant.cloudServices",parent:"otc-edp-per-tenant",level:1,children:[],inEdges:["pit45i","e3benz"],outEdges:[],deploymentRef:"otc-edp-per-tenant.cloudServices",title:"EDP Cloud Services",kind:"paas",technology:"Cloud Services",color:"primary",shape:"rectangle",description:{txt:"EDP Cloud Services"},tags:[],style:{opacity:15,size:"md"},x:1832,y:1517,width:320,height:180,labelBBox:{x:67,y:53,width:185,height:67}},{id:"local.spark.sparkoperator",parent:"local",level:1,children:[],inEdges:[],outEdges:[],kind:"instance",title:"Spark Operator",technology:"Spark",tags:[],icon:"tech:spark",color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"local.spark.sparkoperator",modelRef:"edp.spark.sparkoperator",x:12809,y:150,width:320,height:180,labelBBox:{x:76,y:65,width:198,height:45}}],edges:[{id:"pit45i",source:"otc-edp-per-tenant.cce",target:"otc-edp-per-tenant.cloudServices",label:null,dotpos:"e,1992,1517.1 1992,1386 1992,1423.8 1992,1468 1992,1506.9",points:[[1992,1386],[1992,1424],[1992,1468],[1992,1507]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["1fzhjm9","15njmlz","hks76r","1w18ve8"],color:"gray",line:"dashed",head:"normal"},{id:"fkkf8y",source:"otc-edp-per-tenant.forgejoRunnerInfrastructure",target:"otc-edp-per-tenant.cce",label:"registers",dotpos:"e,1992.4,1206.3 1995.7,330.32 1994.9,525.74 1993.2,991.45 1992.4,1195.9",points:[[1996,330],[1995,526],[1993,991],[1992,1196]],labelBBox:{x:1995,y:742,width:58,height:18},parent:"otc-edp-per-tenant",relations:["g9oj4f"],color:"gray",line:"dashed",head:"normal"},{id:"r3wxut",source:"otc-edpFoundry.workflowSetupEDPInfrastructure",target:"otc-edp-per-tenant.cce",label:"deploys edp to otc.cce",dotpos:"e,1828.4,1241.5 1146.9,1010.2 1186.4,1047.4 1236.7,1087.3 1290,1110.2 1318.8,1122.6 1329.3,1112.2 1360,1118.2 1517.4,1149 1692.7,1199.3 1818.7,1238.5",points:[[1147,1010],[1186,1047],[1237,1087],[1290,1110],[1319,1123],[1329,1112],[1360,1118],[1517,1149],[1693,1199],[1819,1238]],labelBBox:{x:1466,y:1118,width:143,height:18},parent:null,relations:["uk77s5"],color:"gray",line:"dashed",head:"normal"},{id:"1sng0q0",source:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",target:"otc-edp-per-tenant.cce",label:null,dotpos:"e,1869.5,1206.1 1619.9,1010.1 1658.3,1042.1 1702.3,1078.2 1743,1110.2 1781,1140 1822.9,1171.6 1861.3,1200",points:[[1620,1010],[1658,1042],[1702,1078],[1743,1110],[1781,1140],[1823,1172],[1861,1200]],labelBBox:null,parent:null,relations:["jde35l"],color:"gray",line:"dashed",head:"normal"},{id:"e3benz",source:"otc-edpFoundry.workflowSetupEDPInfrastructure",target:"otc-edp-per-tenant.cloudServices",label:"deploys edp to otc.paas",dotpos:"e,1832.4,1523 1157.9,1010 1262.9,1108 1441.1,1267.5 1609.1,1386 1676.6,1433.6 1755,1480 1823.3,1517.9",points:[[1158,1010],[1263,1108],[1441,1268],[1609,1386],[1677,1434],[1755,1480],[1823,1518]],labelBBox:{x:1610,y:1284,width:152,height:18},parent:null,relations:["1pfc6bl"],color:"gray",line:"dashed",head:"normal"},{id:"llfvob",source:"otc-edpFoundry.cce",target:"otc-edpFoundry.workflowSetupEDPInfrastructure",label:"invokes",dotpos:"e,1072,830.31 1084.1,677.05 1080.6,721.08 1076.4,774.44 1072.8,819.85",points:[[1084,677],[1081,721],[1076,774],[1073,820]],labelBBox:{x:1080,y:742,width:51,height:18},parent:"otc-edpFoundry",relations:["dola40"],color:"gray",line:"dashed",head:"normal"},{id:"fil3na",source:"otc-edpFoundry.cce",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",label:"invokes",dotpos:"e,1401.2,830.42 1204.9,677.27 1263,722.59 1333.7,777.76 1392.9,823.96",points:[[1205,677],[1263,723],[1334,778],[1393,824]],labelBBox:{x:1317,y:742,width:51,height:18},parent:"otc-edpFoundry",relations:["1f5y9gc"],color:"gray",line:"dashed",head:"normal"},{id:"109g3jm",source:"otc-edpFoundry.forgejoRunnerInfrastructure",target:"otc-edpFoundry.cce",label:"registers",dotpos:"e,1091,497.56 1091,330.25 1091,378.24 1091,437.64 1091,487.15",points:[[1091,330],[1091,378],[1091,438],[1091,487]],labelBBox:{x:1092,y:395,width:58,height:18},parent:"otc-edpFoundry",relations:["1umzqdy"],color:"gray",line:"dashed",head:"normal"},{id:"19kg5y",source:"local.backstage.backstage",target:"local.backstage.database",label:"reads/writes",dotpos:"e,5251,829.44 5251,677.05 5251,720.81 5251,773.79 5251,819.02",points:[[5251,677],[5251,721],[5251,774],[5251,819]],labelBBox:{x:5252,y:742,width:79,height:18},parent:"local.backstage",relations:["c23sak"],color:"gray",line:"dashed",head:"normal"},{id:"1gfgfhk",source:"local.argocd.argocdAppController",target:"local.argocd.argocdRedis",label:"read/write",dotpos:"e,6686.3,901.97 5848.2,677.38 5879.1,696.06 5912.9,714.1 5946,727.4 6189.6,825.15 6491.1,876.43 6676,900.62",points:[[5848,677],[5879,696],[5913,714],[5946,727],[6190,825],[6491,876],[6676,901]],labelBBox:{x:6040,y:742,width:65,height:18},parent:"local.argocd",relations:["10vkxaf"],color:"gray",line:"dashed",head:"normal"},{id:"qfu5xm",source:"local.argocd.argocdAppSetController",target:"local.argocd.argocdRedis",label:"read/write",dotpos:"e,6686.1,857.88 6307.8,677.39 6336.5,694.78 6366.9,712.29 6396,727.4 6486.5,774.29 6591,819.37 6676.6,854.03",points:[[6308,677],[6336,695],[6367,712],[6396,727],[6487,774],[6591,819],[6677,854]],labelBBox:{x:6469,y:742,width:65,height:18},parent:"local.argocd",relations:["i8z0mi"],color:"gray",line:"dashed",head:"normal"},{id:"g7xnzs",source:"local.argocd.argocdRepoServer",target:"local.argocd.argocdRedis",label:"read/write",dotpos:"e,6785.6,830.31 6681.3,677.05 6711.7,721.73 6748.6,776.01 6779.8,821.85",points:[[6681,677],[6712,722],[6749,776],[6780,822]],labelBBox:{x:6741,y:742,width:65,height:18},parent:"local.argocd",relations:["iullhy"],color:"gray",line:"dashed",head:"normal"},{id:"fon3rk",source:"local.argocd.argocdServer",target:"local.argocd.argocdRedis",label:"read/write",dotpos:"e,6906.5,830.31 7010.7,677.05 6980.3,721.73 6943.4,776.01 6912.2,821.85",points:[[7011,677],[6980,722],[6943,776],[6912,822]],labelBBox:{x:6966,y:742,width:65,height:18},parent:"local.argocd",relations:["yfhhi5"],color:"gray",line:"dashed",head:"normal"},{id:"4zwy1m",source:"local.keycloak.keycloak",target:"local.keycloak.keycloakDB",label:"reads/writes",dotpos:"e,2527,829.44 2527,677.05 2527,720.81 2527,773.79 2527,819.02",points:[[2527,677],[2527,721],[2527,774],[2527,819]],labelBBox:{x:2528,y:742,width:79,height:18},parent:"local.keycloak",relations:["18zxrhs"],color:"gray",line:"dashed",head:"normal"},{id:"sb2j38",source:"local.monitoring.alloy",target:"local.monitoring.distributor",label:"pushes logs",dotpos:"e,3897,830.31 3897,677.05 3897,721.08 3897,774.44 3897,819.85",points:[[3897,677],[3897,721],[3897,774],[3897,820]],labelBBox:{x:3898,y:742,width:79,height:18},parent:"local.monitoring",relations:["11ollyi"],color:"gray",line:"dashed",head:"normal"},{id:"15juth8",source:"local.ingressNginx.ingressNginx",target:"local.backstage.backstage",label:"https",dotpos:"e,5228.1,497.56 5184.9,330.25 5197.3,378.34 5212.7,437.89 5225.5,487.46",points:[[5185,330],[5197,378],[5213,438],[5226,487]],labelBBox:{x:5208,y:395,width:34,height:18},parent:"local",relations:["v8c8aq"],color:"gray",line:"dashed",head:"normal"},{id:"p2br4p",source:"local.ingressNginx.ingressNginx",target:"local.argocd.argocdServer",label:"https",dotpos:"e,6969.6,497.57 5321.9,248.67 5686.5,266.89 6569.4,320.8 6846,426.2 6886.6,441.65 6926.6,466.2 6961.3,491.48",points:[[5322,249],[5686,267],[6569,321],[6846,426],[6887,442],[6927,466],[6961,491]],labelBBox:{x:6800,y:395,width:34,height:18},parent:"local",relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"o229dq",source:"local.ingressNginx.ingressNginx",target:"local.gitea.forgejo",label:"https",dotpos:"e,7435.2,497.59 5322,244.07 5756.1,253.04 6947.9,289.78 7313,426.2 7353.4,441.28 7392.9,465.94 7427.1,491.45",points:[[5322,244],[5756,253],[6948,290],[7313,426],[7353,441],[7393,466],[7427,491]],labelBBox:{x:7286,y:395,width:34,height:18},parent:"local",relations:["123efwn"],color:"gray",line:"dashed",head:"normal"},{id:"2vnvvg",source:"local.ingressNginx.ingressNginx",target:"local.keycloak.keycloak",label:"https",dotpos:"e,2625.6,497.46 5002.3,279.97 4813.6,323.42 4489.7,391.47 4207,418.2 4166.9,422 2793.4,413.93 2755,426.2 2711.9,439.98 2669.8,465.12 2633.7,491.47",points:[[5002,280],[4814,323],[4490,391],[4207,418],[4167,422],[2793,414],[2755,426],[2712,440],[2670,465],[2634,491]],labelBBox:{x:4392,y:395,width:34,height:18},parent:"local",relations:["h3rut2"],color:"gray",line:"dashed",head:"normal"},{id:"3znaik",source:"local.velero.velero",target:"local.minio.minio",label:"store backups",dotpos:"e,8447,496.66 8447,330.25 8447,377.96 8447,436.95 8447,486.28",points:[[8447,330],[8447,378],[8447,437],[8447,486]],labelBBox:{x:8448,y:395,width:91,height:18},parent:"local",relations:["1mazt1x"],color:"gray",line:"dashed",head:"normal"},{id:"4ix58c",source:"local.ingressNginx.ingressNginx",target:"local.minio.minio",label:"https",dotpos:"e,8354.4,496.97 5321.9,249.75 5943.5,282.35 8168,400.56 8237,426.2 8276.1,440.71 8313.8,465.08 8346.3,490.49",points:[[5322,250],[5944,282],[8168,401],[8237,426],[8276,441],[8314,465],[8346,490]],labelBBox:{x:8166,y:395,width:34,height:18},parent:"local",relations:["fe65w2"],color:"gray",line:"dashed",head:"normal"},{id:"1hr2s5j",source:"local.ingressNginx.ingressNginx",target:"local.monitoring.alloy",label:"https",dotpos:"e,3996,497.55 5002.2,304.14 4889.1,345.23 4732.7,395.4 4590,418.2 4539,426.36 4174.2,410.2 4125,426.2 4082,440.2 4040.1,465.32 4004.1,491.58",points:[[5002,304],[4889,345],[4733,395],[4590,418],[4539,426],[4174,410],[4125,426],[4082,440],[4040,465],[4004,492]],labelBBox:{x:4703,y:395,width:34,height:18},parent:"local",relations:["1jvab2g"],color:"gray",line:"dashed",head:"normal"},{id:"1nksp5g",source:"local.ingressNginx.ingressNginx",target:"local.monitoring.queryFrontend",label:"https",dotpos:"e,3544.5,497.4 5002.1,289.49 4850.2,332.64 4614.4,392.92 4405,418.2 4364.6,423.08 3710.7,413.59 3672,426.2 3629.6,440.02 3588.3,464.95 3552.9,491.09",points:[[5002,289],[4850,333],[4614,393],[4405,418],[4365,423],[3711,414],[3672,426],[3630,440],[3588,465],[3553,491]],labelBBox:{x:4553,y:395,width:34,height:18},parent:"local",relations:["fs60l7"],color:"gray",line:"dashed",head:"normal"},{id:"m2japo",source:"local.ingressNginx.ingressNginx",target:"local.openbao.openbao",label:"https",dotpos:"e,7894.1,497.86 5321.9,241.61 5816.1,243.99 7312.9,264.7 7767,426.2 7808.9,441.09 7850.1,465.93 7885.7,491.66",points:[[5322,242],[5816,244],[7313,265],[7767,426],[7809,441],[7850,466],[7886,492]],labelBBox:{x:7733,y:395,width:34,height:18},parent:"local",relations:["1p30hav"],color:"gray",line:"dashed",head:"normal"},{id:"4drflo",source:"local.ingressNginx.ingressNginx",target:"local.fibonacci.fibonacci",label:"https",dotpos:"e,4448.1,497.54 5002.1,329.85 4932.3,363.96 4848.3,399.27 4768,418.2 4726.2,428.05 4615.6,412.33 4575,426.2 4533,440.55 4491.9,465.39 4456.5,491.29",points:[[5002,330],[4932,364],[4848,399],[4768,418],[4726,428],[4616,412],[4575,426],[4533,441],[4492,465],[4456,491]],labelBBox:{x:4837,y:395,width:34,height:18},parent:"local",relations:["1i5f8um"],color:"gray",line:"dashed",head:"normal"},{id:"ihlgsc",source:"local.ingressNginx.ingressNginx",target:"local.mailhog.mailhog",label:"https",dotpos:"e,4892.5,497.56 5068.5,330.25 5016.9,379.35 4952.7,440.38 4899.9,490.55",points:[[5069,330],[5017,379],[4953,440],[4900,491]],labelBBox:{x:4992,y:395,width:34,height:18},parent:"local",relations:["ofdedh"],color:"gray",line:"dashed",head:"normal"}]},"edp-per-tenant":{_type:"deployment",tags:null,links:null,_stage:"layouted",sourcePath:"views/deployment/otc/edp.c4",description:null,title:"EDP per tenant",id:"edp-per-tenant",autoLayout:{direction:"TB"},hash:"e666149b946cddee8281b75a555e7577841d84ba",bounds:{x:0,y:0,width:2010,height:1175},nodes:[{id:"otc-edp-per-tenant",parent:null,level:0,children:["otc-edp-per-tenant.forgejoRunnerInfrastructure","otc-edp-per-tenant.cce","otc-edp-per-tenant.cloudServices"],inEdges:[],outEdges:[],deploymentRef:"otc-edp-per-tenant",title:"OTC EDP per tenant cluster",kind:"cloud",technology:"OTC",color:"slate",shape:"rectangle",description:{txt:`OTC environment for EDP. EDP is the environment a customer gets from us. + + This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry.`},tags:[],style:{opacity:15,size:"md"},depth:3,x:8,y:8,width:1994,height:1159,labelBBox:{x:6,y:0,width:181,height:15}},{id:"otc-edp-per-tenant.forgejoRunnerInfrastructure",parent:"otc-edp-per-tenant",level:1,children:["otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner"],inEdges:[],outEdges:["1dcszi5"],deploymentRef:"otc-edp-per-tenant.forgejoRunnerInfrastructure",title:"EDP ForgejoRunner infrastructure",kind:"computeressource",color:"primary",shape:"rectangle",modelRef:"forgejoRunner",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},tags:[],style:{opacity:15,size:"md"},depth:1,x:321,y:150,width:384,height:266,labelBBox:{x:6,y:0,width:235,height:15}},{id:"otc-edp-per-tenant.cce",parent:"otc-edp-per-tenant",level:1,children:["otc-edp-per-tenant.cce.edp"],inEdges:["1dcszi5"],outEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],deploymentRef:"otc-edp-per-tenant.cce",title:"OTC CCE",kind:"kubernetes",technology:"Kubernetes",color:"red",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"OTC Container Cluster Engine"},tags:[],style:{opacity:15,size:"md"},depth:2,x:755,y:79,width:954,height:719,labelBBox:{x:6,y:0,width:54,height:15}},{id:"otc-edp-per-tenant.cce.edp",parent:"otc-edp-per-tenant.cce",level:2,children:["otc-edp-per-tenant.cce.edp.externalSecrets","otc-edp-per-tenant.cce.edp.ingressNginx","otc-edp-per-tenant.cce.edp.argoCD","otc-edp-per-tenant.cce.edp.forgejo"],inEdges:["1dcszi5"],outEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],deploymentRef:"otc-edp-per-tenant.cce.edp",title:"EDP",kind:"cluster",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:787,y:132,width:890,height:634,labelBBox:{x:6,y:0,width:27,height:15}},{id:"otc-edp-per-tenant.cce.edp.externalSecrets",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:[],outEdges:[],kind:"instance",title:"external-secrets",description:{txt:"Provider to access externally stored Kubernetes secrets"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.externalSecrets",modelRef:"edp.externalSecrets",navigateTo:"externalSecrets",x:837,y:204,width:320,height:180,labelBBox:{x:39,y:54,width:242,height:65}},{id:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",parent:"otc-edp-per-tenant.forgejoRunnerInfrastructure",level:2,children:[],inEdges:[],outEdges:["1dcszi5"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:353,y:204,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edp-per-tenant.cce.edp.ingressNginx",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:[],outEdges:["1ir70dd","1kr1wg1"],kind:"instance",title:"Ingress",description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.ingressNginx",modelRef:"edp.ingressNginx",navigateTo:"ingressNginx",x:1287,y:204,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:65}},{id:"otc-edp-per-tenant.cce.edp.argoCD",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:["1ir70dd"],outEdges:[],kind:"instance",title:"ArgoCD",description:{txt:"GitOps Service"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.argoCD",modelRef:"edp.argoCD",navigateTo:"argoCD",x:1307,y:536,width:320,height:180,labelBBox:{x:108,y:63,width:105,height:48}},{id:"otc-edp-per-tenant.cce.edp.forgejo",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:["1kr1wg1","1dcszi5"],outEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],kind:"instance",title:"Forgejo",description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.forgejo",modelRef:"edp.forgejo",navigateTo:"forgejo",x:837,y:536,width:340,height:180,labelBBox:{x:46,y:18,width:278,height:139}},{id:"otc-edp-per-tenant.cloudServices",parent:"otc-edp-per-tenant",level:1,children:["otc-edp-per-tenant.cloudServices.postgres","otc-edp-per-tenant.cloudServices.redis","otc-edp-per-tenant.cloudServices.objectstorage","otc-edp-per-tenant.cloudServices.elasticsearch"],inEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],outEdges:[],deploymentRef:"otc-edp-per-tenant.cloudServices",title:"EDP Cloud Services",kind:"paas",technology:"Cloud Services",color:"primary",shape:"rectangle",description:{txt:"EDP Cloud Services"},tags:[],style:{opacity:15,size:"md"},depth:1,x:58,y:815,width:1894,height:302,labelBBox:{x:6,y:0,width:127,height:15}},{id:"otc-edp-per-tenant.cloudServices.postgres",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["8msu1q"],outEdges:[],kind:"instance",title:"PostgreSQL",description:{txt:`PostgreSQL is a powerful, open source object-relational database system. +It has more than 15 years of active development and a proven architecture +that has earned it a strong reputation for reliability, data integrity, +and correctness.`},technology:"PostgreSQL",tags:[],icon:"tech:postgresql",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.postgres",modelRef:"postgres",x:108,y:887,width:354,height:180,labelBBox:{x:46,y:17,width:292,height:139}},{id:"otc-edp-per-tenant.cloudServices.redis",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["120qe5o"],outEdges:[],kind:"instance",title:"Redis",description:{txt:"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker."},technology:"Redis",tags:[],icon:"tech:redis",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.redis",modelRef:"redis",x:592,y:887,width:359,height:180,labelBBox:{x:47,y:26,width:297,height:121}},{id:"otc-edp-per-tenant.cloudServices.objectstorage",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["ealiax"],outEdges:[],kind:"instance",title:"s3 Object Storage",description:{txt:"s3 Object Storage"},technology:"S3 Object Storage",tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.objectstorage",modelRef:"objectstorage",x:1082,y:887,width:320,height:180,labelBBox:{x:78,y:53,width:164,height:67}},{id:"otc-edp-per-tenant.cloudServices.elasticsearch",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["1trj5u6"],outEdges:[],kind:"instance",title:"Elasticsearch",description:{txt:`Elasticsearch is a distributed, RESTful search and analytics engine capable of +addressing a growing number of use cases. It centrally stores your data so you can +discover the expected and uncover the unexpected.`},technology:"Elasticsearch",tags:[],icon:"tech:elasticsearch",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.elasticsearch",modelRef:"elasticsearch",x:1532,y:887,width:370,height:180,labelBBox:{x:46,y:17,width:308,height:139}}],edges:[{id:"1ir70dd",source:"otc-edp-per-tenant.cce.edp.ingressNginx",target:"otc-edp-per-tenant.cce.edp.argoCD",label:"https",dotpos:"e,1461.6,536.51 1452.4,383.25 1455,427.28 1458.2,480.64 1461,526.05",points:[[1452,383],[1455,427],[1458,481],[1461,526]],labelBBox:{x:1459,y:448,width:34,height:18},parent:"otc-edp-per-tenant.cce.edp",relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"1kr1wg1",source:"otc-edp-per-tenant.cce.edp.ingressNginx",target:"otc-edp-per-tenant.cce.edp.forgejo",label:"https",dotpos:"e,1125.1,536.62 1328.8,383.47 1268.4,428.89 1194.8,484.19 1133.3,530.44",points:[[1329,383],[1268,429],[1195,484],[1133,530]],labelBBox:{x:1241,y:448,width:34,height:18},parent:"otc-edp-per-tenant.cce.edp",relations:["123efwn"],color:"gray",line:"dashed",head:"normal"},{id:"1dcszi5",source:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",target:"otc-edp-per-tenant.cce.edp.forgejo",label:"registers",dotpos:"e,874.42,536.62 645.71,383.47 713.81,429.07 796.79,484.64 866.04,531.01",points:[[646,383],[714,429],[797,485],[866,531]],labelBBox:{x:776,y:448,width:58,height:18},parent:"otc-edp-per-tenant",relations:["g9oj4f"],color:"gray",line:"dashed",head:"normal"},{id:"8msu1q",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.postgres",label:null,dotpos:"e,408.47,886.62 836.84,684.1 743.28,717.71 626.38,763.79 527,815.4 490.05,834.59 451.75,858.08 416.81,881.1",points:[[837,684],[743,718],[626,764],[527,815],[490,835],[452,858],[417,881]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["hks76r"],color:"gray",line:"dashed",head:"normal"},{id:"120qe5o",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.redis",label:null,dotpos:"e,832,886.69 947.09,716.17 913.73,765.59 872.15,827.21 837.87,877.99",points:[[947,716],[914,766],[872,827],[838,878]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["1w18ve8"],color:"gray",line:"dashed",head:"normal"},{id:"ealiax",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.objectstorage",label:null,dotpos:"e,1182,886.69 1066.9,716.17 1100.3,765.59 1141.9,827.21 1176.1,877.99",points:[[1067,716],[1100,766],[1142,827],[1176,878]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["15njmlz"],color:"gray",line:"dashed",head:"normal"},{id:"1trj5u6",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.elasticsearch",label:null,dotpos:"e,1604.5,886.79 1103.6,716.4 1143.6,747.92 1192.2,780.08 1242,798.4 1336.1,833 1371.9,783.6 1467,815.4 1512.1,830.47 1557.1,855.46 1596.3,881.27",points:[[1104,716],[1144,748],[1192,780],[1242,798],[1336,833],[1372,784],[1467,815],[1512,830],[1557,855],[1596,881]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["1fzhjm9"],color:"gray",line:"dashed",head:"normal"}]},"edp-foundry-central-service":{_type:"deployment",tags:null,links:null,_stage:"layouted",sourcePath:"views/deployment/otc/foundry.c4",description:null,title:"EDP Foundry Central Service",id:"edp-foundry-central-service",autoLayout:{direction:"TB"},hash:"8f8eb235b0e8ff555a22ed61d124ba68e67e5ee2",bounds:{x:0,y:0,width:3894,height:1218},nodes:[{id:"otc-edpFoundry",parent:null,level:0,children:["otc-edpFoundry.cce","otc-edpFoundry.forgejoRunnerInfrastructure","otc-edpFoundry.workflowSetupEDPInfrastructure","otc-edpFoundry.workflowSetupArgoCDInfrastructure"],inEdges:[],outEdges:[],deploymentRef:"otc-edpFoundry",title:"OTC EDP Foundry Central Service clusters",kind:"cloud",technology:"OTC",color:"slate",shape:"rectangle",description:{txt:`OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder. + +A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP. +Optionally we will have a WebUI/API/CLI`},tags:[],style:{opacity:15,size:"md"},depth:3,x:8,y:8,width:3878,height:1202,labelBBox:{x:6,y:0,width:280,height:15}},{id:"otc-edpFoundry.cce",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.cce.internalServices","otc-edpFoundry.cce.centralObservability"],inEdges:["628xl1"],outEdges:["84397w","1oz2va9"],deploymentRef:"otc-edpFoundry.cce",title:"OTC CCE",kind:"kubernetes",technology:"Kubernetes",color:"red",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"OTC Container Cluster Engine"},tags:[],style:{opacity:15,size:"md"},depth:2,x:58,y:79,width:2360,height:755,labelBBox:{x:6,y:0,width:54,height:15}},{id:"otc-edpFoundry.cce.internalServices",parent:"otc-edpFoundry.cce",level:2,children:["otc-edpFoundry.cce.internalServices.externalSecrets","otc-edpFoundry.cce.internalServices.ingressNginx","otc-edpFoundry.cce.internalServices.argoCD","otc-edpFoundry.cce.internalServices.forgejo","otc-edpFoundry.cce.internalServices.openbao"],inEdges:["628xl1"],outEdges:["84397w","1oz2va9"],deploymentRef:"otc-edpFoundry.cce.internalServices",title:"EDP Foundry Internal Services",kind:"cluster",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:1028,y:150,width:1340,height:634,labelBBox:{x:6,y:0,width:201,height:15}},{id:"otc-edpFoundry.cce.internalServices.externalSecrets",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:[],outEdges:[],kind:"instance",title:"external-secrets",description:{txt:"Provider to access externally stored Kubernetes secrets"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.externalSecrets",modelRef:"edp.externalSecrets",navigateTo:"externalSecrets",x:1308,y:222,width:320,height:180,labelBBox:{x:39,y:54,width:242,height:65}},{id:"otc-edpFoundry.cce.centralObservability",parent:"otc-edpFoundry.cce",level:2,children:["otc-edpFoundry.cce.centralObservability.grafana","otc-edpFoundry.cce.centralObservability.prometheus","otc-edpFoundry.cce.centralObservability.loki"],inEdges:[],outEdges:[],deploymentRef:"otc-edpFoundry.cce.centralObservability",title:"EDP Foundry Central Observability",kind:"cluster",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:108,y:150,width:870,height:634,labelBBox:{x:6,y:0,width:232,height:15}},{id:"otc-edpFoundry.forgejoRunnerInfrastructure",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner"],inEdges:[],outEdges:["628xl1"],deploymentRef:"otc-edpFoundry.forgejoRunnerInfrastructure",title:"EDP ForgejoRunner infrastructure",kind:"computeressource",color:"green",shape:"rectangle",modelRef:"forgejoRunner",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},tags:[],style:{opacity:15,size:"md"},depth:1,x:2468,y:168,width:384,height:266,labelBBox:{x:6,y:0,width:235,height:15}},{id:"otc-edpFoundry.cce.centralObservability.grafana",parent:"otc-edpFoundry.cce.centralObservability",level:3,children:[],inEdges:[],outEdges:["qykxlm","yv49z5"],kind:"instance",title:"Grafana",description:{txt:"Data visualization and monitoring"},tags:[],icon:"tech:grafana",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.centralObservability.grafana",modelRef:"edp.grafana",x:289,y:222,width:345,height:180,labelBBox:{x:47,y:63,width:283,height:47}},{id:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",parent:"otc-edpFoundry.forgejoRunnerInfrastructure",level:2,children:[],inEdges:[],outEdges:["628xl1"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:2500,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edpFoundry.cce.centralObservability.prometheus",parent:"otc-edpFoundry.cce.centralObservability",level:3,children:[],inEdges:["qykxlm"],outEdges:[],kind:"instance",title:"Prometheus",description:{txt:"Monitoring and alerting toolkit"},tags:[],icon:"tech:prometheus",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.centralObservability.prometheus",modelRef:"edp.prometheus",x:158,y:554,width:320,height:180,labelBBox:{x:46,y:63,width:258,height:48}},{id:"otc-edpFoundry.cce.centralObservability.loki",parent:"otc-edpFoundry.cce.centralObservability",level:3,children:[],inEdges:["yv49z5"],outEdges:[],kind:"instance",title:"Loki",description:{txt:"Log aggregation system"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.centralObservability.loki",modelRef:"edp.loki",x:608,y:554,width:320,height:180,labelBBox:{x:78,y:63,width:164,height:48}},{id:"otc-edpFoundry.cce.internalServices.ingressNginx",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:[],outEdges:["17kru01","170pc3l","u5oqat"],kind:"instance",title:"Ingress",description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.ingressNginx",modelRef:"edp.ingressNginx",navigateTo:"ingressNginx",x:1988,y:222,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:65}},{id:"otc-edpFoundry.cce.internalServices.argoCD",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:["17kru01"],outEdges:[],kind:"instance",title:"ArgoCD",description:{txt:"GitOps Service"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.argoCD",modelRef:"edp.argoCD",navigateTo:"argoCD",x:1078,y:554,width:320,height:180,labelBBox:{x:108,y:63,width:105,height:48}},{id:"otc-edpFoundry.cce.internalServices.forgejo",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:["170pc3l","628xl1"],outEdges:["84397w","1oz2va9"],kind:"instance",title:"Forgejo",description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.forgejo",modelRef:"edp.forgejo",navigateTo:"forgejo",x:1978,y:554,width:340,height:180,labelBBox:{x:46,y:18,width:278,height:139}},{id:"otc-edpFoundry.cce.internalServices.openbao",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:["u5oqat"],outEdges:[],kind:"instance",title:"OpenBao",description:{txt:"Secure secret storage"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.openbao",modelRef:"edp.openbao",x:1528,y:554,width:320,height:180,labelBBox:{x:85,y:63,width:151,height:48}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner","otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker","otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow"],inEdges:["84397w"],outEdges:[],deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure",title:"EDP infrastructure Workflow",kind:"computeressource",color:"amber",shape:"rectangle",description:{txt:"EDP infrastructure Workflow"},tags:[],style:{opacity:15,size:"md"},depth:1,x:2902,y:150,width:442,height:1010,labelBBox:{x:6,y:0,width:201,height:15}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner","otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker","otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow"],inEdges:["1oz2va9"],outEdges:[],deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",title:"EDP ArgoCD Workflow",kind:"computeressource",color:"amber",shape:"rectangle",description:{txt:"EDP Setup ArgoCD Workflow"},tags:[],style:{opacity:15,size:"md"},depth:1,x:3394,y:150,width:442,height:1010,labelBBox:{x:6,y:0,width:149,height:15}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",level:2,children:[],inEdges:["84397w"],outEdges:["1hnil62"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:2961,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",level:2,children:[],inEdges:["1oz2va9"],outEdges:["1gtxobu"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:3466,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",level:2,children:[],inEdges:["1hnil62"],outEdges:["ekzztw"],kind:"instance",title:"Forgejo Runner Worker",description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",modelRef:"forgejoRunnerWorker",x:2954,y:554,width:333,height:180,labelBBox:{x:18,y:45,width:297,height:84}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",level:2,children:[],inEdges:["1gtxobu"],outEdges:["b9ntr8"],kind:"instance",title:"Forgejo Runner Worker",description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",modelRef:"forgejoRunnerWorker",x:3452,y:554,width:333,height:180,labelBBox:{x:18,y:45,width:297,height:84}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",level:2,children:[],inEdges:["ekzztw"],outEdges:[],kind:"instance",title:"EDP Infrastructure Setup Workflow",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",modelRef:"edpworkflow",x:2952,y:930,width:342,height:180,labelBBox:{x:14,y:74,width:314,height:24}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",level:2,children:[],inEdges:["b9ntr8"],outEdges:[],kind:"instance",title:"EDP Infrastructure Setup Workflow",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",modelRef:"edpworkflow",x:3444,y:930,width:342,height:180,labelBBox:{x:14,y:74,width:314,height:24}}],edges:[{id:"17kru01",source:"otc-edpFoundry.cce.internalServices.ingressNginx",target:"otc-edpFoundry.cce.internalServices.argoCD",label:"https",dotpos:"e,1397.8,579.34 1988.2,367.11 1849,415.06 1642,487.45 1463,554.4 1445,561.14 1426.2,568.31 1407.6,575.55",points:[[1988,367],[1849,415],[1642,487],[1463,554],[1445,561],[1426,568],[1408,576]],labelBBox:{x:1689,y:466,width:34,height:18},parent:"otc-edpFoundry.cce.internalServices",relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"170pc3l",source:"otc-edpFoundry.cce.internalServices.ingressNginx",target:"otc-edpFoundry.cce.internalServices.forgejo",label:"https",dotpos:"e,2148,554.51 2148,401.25 2148,445.28 2148,498.64 2148,544.05",points:[[2148,401],[2148,445],[2148,499],[2148,544]],labelBBox:{x:2149,y:466,width:34,height:18},parent:"otc-edpFoundry.cce.internalServices",relations:["123efwn"],color:"gray",line:"dashed",head:"normal"},{id:"u5oqat",source:"otc-edpFoundry.cce.internalServices.ingressNginx",target:"otc-edpFoundry.cce.internalServices.openbao",label:"https",dotpos:"e,1811.5,554.62 2024.4,401.47 1961.1,446.98 1884.1,502.41 1819.6,548.73",points:[[2024,401],[1961,447],[1884,502],[1820,549]],labelBBox:{x:1933,y:466,width:34,height:18},parent:"otc-edpFoundry.cce.internalServices",relations:["1p30hav"],color:"gray",line:"dashed",head:"normal"},{id:"qykxlm",source:"otc-edpFoundry.cce.centralObservability.grafana",target:"otc-edpFoundry.cce.centralObservability.prometheus",label:"get metrics and alerts",dotpos:"e,356.7,554.51 423.41,401.25 404.12,445.56 380.72,499.31 360.87,544.91",points:[[423,401],[404,446],[381,499],[361,545]],labelBBox:{x:395,y:466,width:138,height:18},parent:"otc-edpFoundry.cce.centralObservability",relations:["13uvtiq"],color:"gray",line:"dashed",head:"normal"},{id:"yv49z5",source:"otc-edpFoundry.cce.centralObservability.grafana",target:"otc-edpFoundry.cce.centralObservability.loki",label:"get logs",dotpos:"e,685.77,554.51 544,401.25 585.59,446.21 636.17,500.89 678.74,546.91",points:[[544,401],[586,446],[636,501],[679,547]],labelBBox:{x:625,y:466,width:53,height:18},parent:"otc-edpFoundry.cce.centralObservability",relations:["1n1utzc"],color:"gray",line:"dashed",head:"normal"},{id:"84397w",source:"otc-edpFoundry.cce.internalServices.forgejo",target:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",label:"invokes",dotpos:"e,2961,399.55 2318.4,604.81 2469.6,568.24 2695.1,507.91 2884,433.6 2906.3,424.83 2929.3,414.65 2951.8,403.98",points:[[2318,605],[2470,568],[2695,508],[2884,434],[2906,425],[2929,415],[2952,404]],labelBBox:{x:2787,y:466,width:51,height:18},parent:"otc-edpFoundry",relations:["dola40"],color:"gray",line:"dashed",head:"normal"},{id:"1hnil62",source:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",target:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",label:"runs",dotpos:"e,3121,554.51 3121,401.25 3121,445.28 3121,498.64 3121,544.05",points:[[3121,401],[3121,445],[3121,499],[3121,544]],labelBBox:{x:3122,y:466,width:31,height:18},parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",relations:["7kqly3"],color:"gray",line:"dashed",head:"normal"},{id:"ekzztw",source:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",target:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",label:"executes",dotpos:"e,3122.5,930.28 3121.5,733.99 3121.8,789.89 3122.2,862.2 3122.5,920.03",points:[[3121,734],[3122,790],[3122,862],[3122,920]],labelBBox:{x:3123,y:842,width:60,height:18},parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",relations:["12hf1w4"],color:"gray",line:"dashed",head:"normal"},{id:"1oz2va9",source:"otc-edpFoundry.cce.internalServices.forgejo",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",label:"invokes",dotpos:"e,3524.7,401.42 2318.4,622.3 2654.2,580.67 3369.9,491.78 3376,489.4 3425.8,470.06 3475.1,438.64 3516.5,407.61",points:[[2318,622],[2654,581],[3370,492],[3376,489],[3426,470],[3475,439],[3517,408]],labelBBox:{x:3422,y:466,width:51,height:18},parent:"otc-edpFoundry",relations:["1f5y9gc"],color:"gray",line:"dashed",head:"normal"},{id:"1gtxobu",source:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",label:"runs",dotpos:"e,3620.9,554.51 3624.1,401.25 3623.2,445.28 3622.1,498.64 3621.1,544.05",points:[[3624,401],[3623,445],[3622,499],[3621,544]],labelBBox:{x:3624,y:466,width:31,height:18},parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",relations:["hqie0"],color:"gray",line:"dashed",head:"normal"},{id:"b9ntr8",source:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",label:"executes",dotpos:"e,3616,930.28 3618.1,733.99 3617.5,789.89 3616.7,862.2 3616.1,920.03",points:[[3618,734],[3617,790],[3617,862],[3616,920]],labelBBox:{x:3618,y:842,width:60,height:18},parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",relations:["1j16hqv"],color:"gray",line:"dashed",head:"normal"},{id:"628xl1",source:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",target:"otc-edpFoundry.cce.internalServices.forgejo",label:"registers",dotpos:"e,2285.4,554.62 2522.5,401.47 2451.9,447.07 2365.9,502.64 2294.1,549.01",points:[[2522,401],[2452,447],[2366,503],[2294,549]],labelBBox:{x:2420,y:466,width:58,height:18},parent:"otc-edpFoundry",relations:["1umzqdy"],color:"gray",line:"dashed",head:"normal"}]},"forgejo-as-a-service":{_type:"deployment",tags:null,links:null,_stage:"layouted",sourcePath:"views/deployment/otc/foundry-and-edp.c4",description:null,title:"Forgejo as a Service",id:"forgejo-as-a-service",autoLayout:{direction:"TB"},hash:"04b470ef03e0995fc0d9fa8ac4c4c0a494f74722",bounds:{x:0,y:0,width:5468,height:1994},nodes:[{id:"otc-edpFoundry",parent:null,level:0,children:["otc-edpFoundry.cce","otc-edpFoundry.forgejoRunnerInfrastructure","otc-edpFoundry.workflowSetupEDPInfrastructure","otc-edpFoundry.workflowSetupArgoCDInfrastructure"],inEdges:[],outEdges:["1asm38z","1or831y","ejqwjt"],deploymentRef:"otc-edpFoundry",title:"OTC EDP Foundry Central Service clusters",kind:"cloud",technology:"OTC",color:"slate",shape:"rectangle",description:{txt:`OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder. + +A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP. +Optionally we will have a WebUI/API/CLI`},tags:[],style:{opacity:15,size:"md"},depth:3,x:2052,y:8,width:3408,height:1609,labelBBox:{x:6,y:0,width:280,height:15}},{id:"otc-edpFoundry.cce",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.cce.internalServices","otc-edpFoundry.cce.centralObservability"],inEdges:["628xl1"],outEdges:["84397w","1oz2va9"],deploymentRef:"otc-edpFoundry.cce",title:"OTC CCE",kind:"kubernetes",technology:"Kubernetes",color:"red",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"OTC Container Cluster Engine"},tags:[],style:{opacity:15,size:"md"},depth:2,x:2594,y:79,width:1890,height:1488,labelBBox:{x:6,y:0,width:54,height:15}},{id:"otc-edpFoundry.cce.internalServices",parent:"otc-edpFoundry.cce",level:2,children:["otc-edpFoundry.cce.internalServices.externalSecrets","otc-edpFoundry.cce.internalServices.ingressNginx","otc-edpFoundry.cce.internalServices.argoCD","otc-edpFoundry.cce.internalServices.forgejo","otc-edpFoundry.cce.internalServices.openbao"],inEdges:["628xl1"],outEdges:["84397w","1oz2va9"],deploymentRef:"otc-edpFoundry.cce.internalServices",title:"EDP Foundry Internal Services",kind:"cluster",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:2644,y:883,width:1790,height:634,labelBBox:{x:6,y:0,width:201,height:15}},{id:"otc-edpFoundry.cce.internalServices.externalSecrets",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:[],outEdges:[],kind:"instance",title:"external-secrets",description:{txt:"Provider to access externally stored Kubernetes secrets"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.externalSecrets",modelRef:"edp.externalSecrets",navigateTo:"externalSecrets",x:2694,y:1287,width:320,height:180,labelBBox:{x:39,y:54,width:242,height:66}},{id:"otc-edpFoundry.cce.centralObservability",parent:"otc-edpFoundry.cce",level:2,children:["otc-edpFoundry.cce.centralObservability.grafana","otc-edpFoundry.cce.centralObservability.prometheus","otc-edpFoundry.cce.centralObservability.loki"],inEdges:[],outEdges:[],deploymentRef:"otc-edpFoundry.cce.centralObservability",title:"EDP Foundry Central Observability",kind:"cluster",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:3349,y:150,width:870,height:634,labelBBox:{x:6,y:0,width:232,height:15}},{id:"otc-edpFoundry.forgejoRunnerInfrastructure",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner"],inEdges:[],outEdges:["628xl1"],deploymentRef:"otc-edpFoundry.forgejoRunnerInfrastructure",title:"EDP ForgejoRunner infrastructure",kind:"computeressource",color:"green",shape:"rectangle",modelRef:"forgejoRunner",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},tags:[],style:{opacity:15,size:"md"},depth:1,x:5026,y:168,width:384,height:266,labelBBox:{x:6,y:0,width:235,height:15}},{id:"otc-edp-per-tenant",parent:null,level:0,children:["otc-edp-per-tenant.forgejoRunnerInfrastructure","otc-edp-per-tenant.cce","otc-edp-per-tenant.cloudServices"],inEdges:["1asm38z","1or831y","ejqwjt"],outEdges:[],deploymentRef:"otc-edp-per-tenant",title:"OTC EDP per tenant cluster",kind:"cloud",technology:"OTC",color:"slate",shape:"rectangle",description:{txt:`OTC environment for EDP. EDP is the environment a customer gets from us. + + This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry.`},tags:[],style:{opacity:15,size:"md"},depth:3,x:8,y:97,width:1994,height:1889,labelBBox:{x:6,y:0,width:181,height:15}},{id:"otc-edp-per-tenant.forgejoRunnerInfrastructure",parent:"otc-edp-per-tenant",level:1,children:["otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner"],inEdges:[],outEdges:["1dcszi5"],deploymentRef:"otc-edp-per-tenant.forgejoRunnerInfrastructure",title:"EDP ForgejoRunner infrastructure",kind:"computeressource",color:"primary",shape:"rectangle",modelRef:"forgejoRunner",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},tags:[],style:{opacity:15,size:"md"},depth:1,x:608,y:168,width:384,height:266,labelBBox:{x:6,y:0,width:235,height:15}},{id:"otc-edpFoundry.cce.centralObservability.grafana",parent:"otc-edpFoundry.cce.centralObservability",level:3,children:[],inEdges:[],outEdges:["qykxlm","yv49z5"],kind:"instance",title:"Grafana",description:{txt:"Data visualization and monitoring"},tags:[],icon:"tech:grafana",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.centralObservability.grafana",modelRef:"edp.grafana",x:3530,y:222,width:345,height:180,labelBBox:{x:47,y:63,width:283,height:47}},{id:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",parent:"otc-edpFoundry.forgejoRunnerInfrastructure",level:2,children:[],inEdges:[],outEdges:["628xl1"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:5058,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edp-per-tenant.cce",parent:"otc-edp-per-tenant",level:1,children:["otc-edp-per-tenant.cce.edp"],inEdges:["1or831y","ejqwjt","1dcszi5"],outEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],deploymentRef:"otc-edp-per-tenant.cce",title:"OTC CCE",kind:"kubernetes",technology:"Kubernetes",color:"red",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"OTC Container Cluster Engine"},tags:[],style:{opacity:15,size:"md"},depth:2,x:548,y:830,width:1404,height:719,labelBBox:{x:6,y:0,width:54,height:15}},{id:"otc-edp-per-tenant.cce.edp",parent:"otc-edp-per-tenant.cce",level:2,children:["otc-edp-per-tenant.cce.edp.externalSecrets","otc-edp-per-tenant.cce.edp.ingressNginx","otc-edp-per-tenant.cce.edp.argoCD","otc-edp-per-tenant.cce.edp.forgejo"],inEdges:["1or831y","ejqwjt","1dcszi5"],outEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],deploymentRef:"otc-edp-per-tenant.cce.edp",title:"EDP",kind:"cluster",color:"primary",shape:"rectangle",tags:[],style:{opacity:15,size:"md"},depth:1,x:580,y:883,width:1340,height:634,labelBBox:{x:6,y:0,width:27,height:15}},{id:"otc-edp-per-tenant.cce.edp.externalSecrets",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:[],outEdges:[],kind:"instance",title:"external-secrets",description:{txt:"Provider to access externally stored Kubernetes secrets"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.externalSecrets",modelRef:"edp.externalSecrets",navigateTo:"externalSecrets",x:1550,y:1287,width:320,height:180,labelBBox:{x:39,y:54,width:242,height:66}},{id:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",parent:"otc-edp-per-tenant.forgejoRunnerInfrastructure",level:2,children:[],inEdges:[],outEdges:["1dcszi5"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:640,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edpFoundry.cce.centralObservability.prometheus",parent:"otc-edpFoundry.cce.centralObservability",level:3,children:[],inEdges:["qykxlm"],outEdges:[],kind:"instance",title:"Prometheus",description:{txt:"Monitoring and alerting toolkit"},tags:[],icon:"tech:prometheus",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.centralObservability.prometheus",modelRef:"edp.prometheus",x:3399,y:554,width:320,height:180,labelBBox:{x:46,y:63,width:258,height:48}},{id:"otc-edpFoundry.cce.centralObservability.loki",parent:"otc-edpFoundry.cce.centralObservability",level:3,children:[],inEdges:["yv49z5"],outEdges:[],kind:"instance",title:"Loki",description:{txt:"Log aggregation system"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.centralObservability.loki",modelRef:"edp.loki",x:3849,y:554,width:320,height:180,labelBBox:{x:78,y:63,width:164,height:48}},{id:"otc-edpFoundry.cce.internalServices.ingressNginx",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:[],outEdges:["17kru01","170pc3l","u5oqat"],kind:"instance",title:"Ingress",description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.ingressNginx",modelRef:"edp.ingressNginx",navigateTo:"ingressNginx",x:4054,y:955,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:65}},{id:"otc-edpFoundry.cce.internalServices.argoCD",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:["17kru01"],outEdges:[],kind:"instance",title:"ArgoCD",description:{txt:"GitOps Service"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.argoCD",modelRef:"edp.argoCD",navigateTo:"argoCD",x:3144,y:1287,width:320,height:180,labelBBox:{x:108,y:63,width:105,height:48}},{id:"otc-edpFoundry.cce.internalServices.forgejo",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:["170pc3l","628xl1"],outEdges:["84397w","1oz2va9"],kind:"instance",title:"Forgejo",description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.forgejo",modelRef:"edp.forgejo",navigateTo:"forgejo",x:4044,y:1287,width:340,height:180,labelBBox:{x:46,y:18,width:278,height:139}},{id:"otc-edpFoundry.cce.internalServices.openbao",parent:"otc-edpFoundry.cce.internalServices",level:3,children:[],inEdges:["u5oqat"],outEdges:[],kind:"instance",title:"OpenBao",description:{txt:"Secure secret storage"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edpFoundry.cce.internalServices.openbao",modelRef:"edp.openbao",x:3594,y:1287,width:320,height:180,labelBBox:{x:85,y:63,width:151,height:48}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner","otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker","otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow"],inEdges:["84397w"],outEdges:["1asm38z","1or831y"],deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure",title:"EDP infrastructure Workflow",kind:"computeressource",color:"amber",shape:"rectangle",description:{txt:"EDP infrastructure Workflow"},tags:[],style:{opacity:15,size:"md"},depth:1,x:4534,y:150,width:442,height:1035,labelBBox:{x:6,y:0,width:201,height:15}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",parent:"otc-edpFoundry",level:1,children:["otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner","otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker","otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow"],inEdges:["1oz2va9"],outEdges:["ejqwjt"],deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",title:"EDP ArgoCD Workflow",kind:"computeressource",color:"amber",shape:"rectangle",description:{txt:"EDP Setup ArgoCD Workflow"},tags:[],style:{opacity:15,size:"md"},depth:1,x:2102,y:150,width:442,height:1035,labelBBox:{x:6,y:0,width:149,height:15}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",level:2,children:[],inEdges:["84397w"],outEdges:["1hnil62"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:4595,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",level:2,children:[],inEdges:["1oz2va9"],outEdges:["1gtxobu"],kind:"instance",title:"Forgejo Runner",description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",modelRef:"forgejoRunner",x:2163,y:222,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:101}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",level:2,children:[],inEdges:["1hnil62"],outEdges:["ekzztw"],kind:"instance",title:"Forgejo Runner Worker",description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",modelRef:"forgejoRunnerWorker",x:4588,y:554,width:333,height:180,labelBBox:{x:18,y:45,width:297,height:84}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",level:2,children:[],inEdges:["1gtxobu"],outEdges:["b9ntr8"],kind:"instance",title:"Forgejo Runner Worker",description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",modelRef:"forgejoRunnerWorker",x:2156,y:554,width:333,height:180,labelBBox:{x:18,y:45,width:297,height:84}},{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",level:2,children:[],inEdges:["ekzztw"],outEdges:["1asm38z","1or831y"],kind:"instance",title:"EDP Infrastructure Setup Workflow",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",modelRef:"edpworkflow",x:4584,y:955,width:342,height:180,labelBBox:{x:14,y:74,width:314,height:24}},{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",level:2,children:[],inEdges:["b9ntr8"],outEdges:["ejqwjt"],kind:"instance",title:"EDP Infrastructure Setup Workflow",tags:[],color:"primary",shape:"rectangle",style:{opacity:15,size:"md"},deploymentRef:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",modelRef:"edpworkflow",x:2152,y:955,width:342,height:180,labelBBox:{x:14,y:74,width:314,height:24}},{id:"otc-edp-per-tenant.cce.edp.ingressNginx",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:[],outEdges:["1ir70dd","1kr1wg1"],kind:"instance",title:"Ingress",description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.ingressNginx",modelRef:"edp.ingressNginx",navigateTo:"ingressNginx",x:1100,y:955,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:65}},{id:"otc-edp-per-tenant.cce.edp.argoCD",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:["ejqwjt","1ir70dd"],outEdges:[],kind:"instance",title:"ArgoCD",description:{txt:"GitOps Service"},tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.argoCD",modelRef:"edp.argoCD",navigateTo:"argoCD",x:1100,y:1287,width:320,height:180,labelBBox:{x:108,y:63,width:105,height:48}},{id:"otc-edp-per-tenant.cce.edp.forgejo",parent:"otc-edp-per-tenant.cce.edp",level:3,children:[],inEdges:["1kr1wg1","1dcszi5"],outEdges:["8msu1q","120qe5o","ealiax","1trj5u6"],kind:"instance",title:"Forgejo",description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},technology:"Golang",tags:[],icon:"tech:go",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cce.edp.forgejo",modelRef:"edp.forgejo",navigateTo:"forgejo",x:630,y:1287,width:340,height:180,labelBBox:{x:46,y:18,width:278,height:139}},{id:"otc-edp-per-tenant.cloudServices",parent:"otc-edp-per-tenant",level:1,children:["otc-edp-per-tenant.cloudServices.postgres","otc-edp-per-tenant.cloudServices.redis","otc-edp-per-tenant.cloudServices.objectstorage","otc-edp-per-tenant.cloudServices.elasticsearch"],inEdges:["1asm38z","8msu1q","120qe5o","ealiax","1trj5u6"],outEdges:[],deploymentRef:"otc-edp-per-tenant.cloudServices",title:"EDP Cloud Services",kind:"paas",technology:"Cloud Services",color:"primary",shape:"rectangle",description:{txt:"EDP Cloud Services"},tags:[],style:{opacity:15,size:"md"},depth:1,x:58,y:1634,width:1894,height:302,labelBBox:{x:6,y:0,width:127,height:15}},{id:"otc-edp-per-tenant.cloudServices.postgres",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["8msu1q"],outEdges:[],kind:"instance",title:"PostgreSQL",description:{txt:`PostgreSQL is a powerful, open source object-relational database system. +It has more than 15 years of active development and a proven architecture +that has earned it a strong reputation for reliability, data integrity, +and correctness.`},technology:"PostgreSQL",tags:[],icon:"tech:postgresql",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.postgres",modelRef:"postgres",x:1548,y:1706,width:354,height:180,labelBBox:{x:46,y:17,width:292,height:139}},{id:"otc-edp-per-tenant.cloudServices.redis",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["120qe5o"],outEdges:[],kind:"instance",title:"Redis",description:{txt:"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker."},technology:"Redis",tags:[],icon:"tech:redis",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.redis",modelRef:"redis",x:608,y:1706,width:359,height:180,labelBBox:{x:47,y:26,width:297,height:121}},{id:"otc-edp-per-tenant.cloudServices.objectstorage",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["ealiax"],outEdges:[],kind:"instance",title:"s3 Object Storage",description:{txt:"s3 Object Storage"},technology:"S3 Object Storage",tags:[],color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.objectstorage",modelRef:"objectstorage",x:1098,y:1706,width:320,height:180,labelBBox:{x:78,y:53,width:164,height:67}},{id:"otc-edp-per-tenant.cloudServices.elasticsearch",parent:"otc-edp-per-tenant.cloudServices",level:2,children:[],inEdges:["1trj5u6"],outEdges:[],kind:"instance",title:"Elasticsearch",description:{txt:`Elasticsearch is a distributed, RESTful search and analytics engine capable of +addressing a growing number of use cases. It centrally stores your data so you can +discover the expected and uncover the unexpected.`},technology:"Elasticsearch",tags:[],icon:"tech:elasticsearch",color:"primary",shape:"rectangle",style:{opacity:20,size:"md"},deploymentRef:"otc-edp-per-tenant.cloudServices.elasticsearch",modelRef:"elasticsearch",x:108,y:1706,width:370,height:180,labelBBox:{x:46,y:17,width:308,height:139}}],edges:[{id:"17kru01",source:"otc-edpFoundry.cce.internalServices.ingressNginx",target:"otc-edpFoundry.cce.internalServices.argoCD",label:"https",dotpos:"e,3463.8,1312.3 4054.2,1100.1 3915,1148.1 3708,1220.4 3529,1287.4 3511,1294.1 3492.2,1301.3 3473.6,1308.5",points:[[4054,1100],[3915,1148],[3708,1220],[3529,1287],[3511,1294],[3492,1301],[3474,1309]],labelBBox:{x:3755,y:1199,width:34,height:18},parent:"otc-edpFoundry.cce.internalServices",relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"170pc3l",source:"otc-edpFoundry.cce.internalServices.ingressNginx",target:"otc-edpFoundry.cce.internalServices.forgejo",label:"https",dotpos:"e,4214,1287.5 4214,1134.2 4214,1178.3 4214,1231.6 4214,1277",points:[[4214,1134],[4214,1178],[4214,1232],[4214,1277]],labelBBox:{x:4215,y:1199,width:34,height:18},parent:"otc-edpFoundry.cce.internalServices",relations:["123efwn"],color:"gray",line:"dashed",head:"normal"},{id:"u5oqat",source:"otc-edpFoundry.cce.internalServices.ingressNginx",target:"otc-edpFoundry.cce.internalServices.openbao",label:"https",dotpos:"e,3877.5,1287.6 4090.4,1134.5 4027.1,1180 3950.1,1235.4 3885.6,1281.7",points:[[4090,1134],[4027,1180],[3950,1235],[3886,1282]],labelBBox:{x:3999,y:1199,width:34,height:18},parent:"otc-edpFoundry.cce.internalServices",relations:["1p30hav"],color:"gray",line:"dashed",head:"normal"},{id:"qykxlm",source:"otc-edpFoundry.cce.centralObservability.grafana",target:"otc-edpFoundry.cce.centralObservability.prometheus",label:"get metrics and alerts",dotpos:"e,3597.7,554.51 3664.4,401.25 3645.1,445.56 3621.7,499.31 3601.9,544.91",points:[[3664,401],[3645,446],[3622,499],[3602,545]],labelBBox:{x:3636,y:466,width:138,height:18},parent:"otc-edpFoundry.cce.centralObservability",relations:["13uvtiq"],color:"gray",line:"dashed",head:"normal"},{id:"yv49z5",source:"otc-edpFoundry.cce.centralObservability.grafana",target:"otc-edpFoundry.cce.centralObservability.loki",label:"get logs",dotpos:"e,3926.8,554.51 3785,401.25 3826.6,446.21 3877.2,500.89 3919.7,546.91",points:[[3785,401],[3827,446],[3877,501],[3920,547]],labelBBox:{x:3866,y:466,width:53,height:18},parent:"otc-edpFoundry.cce.centralObservability",relations:["1n1utzc"],color:"gray",line:"dashed",head:"normal"},{id:"84397w",source:"otc-edpFoundry.cce.internalServices.forgejo",target:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",label:"invokes",dotpos:"e,4871.9,401.35 4384,1358.7 4589.5,1333.3 4917.1,1279 4991,1184.6 5006.1,1165.4 5006.3,601.48 4987,554.4 4964.1,498.68 4921.8,448.48 4879.5,408.45",points:[[4384,1359],[4590,1333],[4917,1279],[4991,1185],[5006,1165],[5006,601],[4987,554],[4964,499],[4922,448],[4880,408]],labelBBox:{x:5002,y:799,width:51,height:18},parent:"otc-edpFoundry",relations:["dola40"],color:"gray",line:"dashed",head:"normal"},{id:"1hnil62",source:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",target:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",label:"runs",dotpos:"e,4755,554.51 4755,401.25 4755,445.28 4755,498.64 4755,544.05",points:[[4755,401],[4755,445],[4755,499],[4755,544]],labelBBox:{x:4756,y:466,width:31,height:18},parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",relations:["7kqly3"],color:"gray",line:"dashed",head:"normal"},{id:"ekzztw",source:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",target:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",label:"executes",dotpos:"e,4755,954.66 4755,734.27 4755,796.6 4755,879.99 4755,944.48",points:[[4755,734],[4755,797],[4755,880],[4755,944]],labelBBox:{x:4756,y:799,width:60,height:18},parent:"otc-edpFoundry.workflowSetupEDPInfrastructure",relations:["12hf1w4"],color:"gray",line:"dashed",head:"normal"},{id:"1oz2va9",source:"otc-edpFoundry.cce.internalServices.forgejo",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",label:"invokes",dotpos:"e,2425.7,401.35 4043.6,1308.6 4022,1301 4000.1,1293.7 3979,1287.4 3850.3,1249.1 3807.5,1275.1 3684,1222.4 3176,1005.8 2655,593.8 2433.5,407.87",points:[[4044,1309],[4022,1301],[4e3,1294],[3979,1287],[3850,1249],[3808,1275],[3684,1222],[3176,1006],[2655,594],[2433,408]],labelBBox:{x:2970,y:799,width:51,height:18},parent:"otc-edpFoundry",relations:["1f5y9gc"],color:"gray",line:"dashed",head:"normal"},{id:"1gtxobu",source:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",label:"runs",dotpos:"e,2323,554.51 2323,401.25 2323,445.28 2323,498.64 2323,544.05",points:[[2323,401],[2323,445],[2323,499],[2323,544]],labelBBox:{x:2324,y:466,width:31,height:18},parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",relations:["hqie0"],color:"gray",line:"dashed",head:"normal"},{id:"b9ntr8",source:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",target:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",label:"executes",dotpos:"e,2323,954.66 2323,734.27 2323,796.6 2323,879.99 2323,944.48",points:[[2323,734],[2323,797],[2323,880],[2323,944]],labelBBox:{x:2324,y:799,width:60,height:18},parent:"otc-edpFoundry.workflowSetupArgoCDInfrastructure",relations:["1j16hqv"],color:"gray",line:"dashed",head:"normal"},{id:"628xl1",source:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",target:"otc-edpFoundry.cce.internalServices.forgejo",label:"registers",dotpos:"e,4384.3,1373.5 5231.3,401.47 5254.9,597.41 5277.7,1061.9 4995,1222.4 4808.3,1328.4 4560.5,1362.5 4394.6,1372.9",points:[[5231,401],[5255,597],[5278,1062],[4995,1222],[4808,1328],[4561,1362],[4395,1373]],labelBBox:{x:5232,y:799,width:58,height:18},parent:"otc-edpFoundry",relations:["1umzqdy"],color:"gray",line:"dashed",head:"normal"},{id:"ejqwjt",source:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",target:"otc-edp-per-tenant.cce.edp.argoCD",label:null,dotpos:"e,1419.9,1309.5 2152,1115.5 2089.7,1139.4 2018.3,1165 1952,1184.6 1748.2,1244.9 1688.2,1225.3 1485,1287.4 1466.9,1292.9 1448.1,1299.3 1429.6,1306",points:[[2152,1115],[2090,1139],[2018,1165],[1952,1185],[1748,1245],[1688,1225],[1485,1287],[1467,1293],[1448,1299],[1430,1306]],labelBBox:null,parent:null,relations:["jde35l"],color:"gray",line:"dashed",head:"normal"},{id:"1ir70dd",source:"otc-edp-per-tenant.cce.edp.ingressNginx",target:"otc-edp-per-tenant.cce.edp.argoCD",label:"https",dotpos:"e,1260,1287.5 1260,1134.2 1260,1178.3 1260,1231.6 1260,1277",points:[[1260,1134],[1260,1178],[1260,1232],[1260,1277]],labelBBox:{x:1261,y:1199,width:34,height:18},parent:"otc-edp-per-tenant.cce.edp",relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"1kr1wg1",source:"otc-edp-per-tenant.cce.edp.ingressNginx",target:"otc-edp-per-tenant.cce.edp.forgejo",label:"https",dotpos:"e,923.46,1287.6 1136.4,1134.5 1073.1,1180 996.05,1235.4 931.65,1281.7",points:[[1136,1134],[1073,1180],[996,1235],[932,1282]],labelBBox:{x:1045,y:1199,width:34,height:18},parent:"otc-edp-per-tenant.cce.edp",relations:["123efwn"],color:"gray",line:"dashed",head:"normal"},{id:"1dcszi5",source:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",target:"otc-edp-per-tenant.cce.edp.forgejo",label:"registers",dotpos:"e,800,1287.4 800,401.47 800,598.41 800,1070.4 800,1276.9",points:[[800,401],[800,598],[800,1070],[800,1277]],labelBBox:{x:801,y:799,width:58,height:18},parent:"otc-edp-per-tenant",relations:["g9oj4f"],color:"gray",line:"dashed",head:"normal"},{id:"8msu1q",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.postgres",label:null,dotpos:"e,1618.1,1705.6 859.94,1467.1 901.94,1521.2 963.27,1585.7 1035,1617.4 1080.6,1637.5 1435.6,1619.1 1483,1634.4 1527.5,1648.7 1571.5,1673.7 1609.5,1699.7",points:[[860,1467],[902,1521],[963,1586],[1035,1617],[1081,1638],[1436,1619],[1483,1634],[1527,1649],[1571,1674],[1610,1700]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["hks76r"],color:"gray",line:"dashed",head:"normal"},{id:"120qe5o",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.redis",label:null,dotpos:"e,790.57,1705.6 797.44,1467.2 795.51,1534 792.87,1625.8 790.87,1695.1",points:[[797,1467],[796,1534],[793,1626],[791,1695]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["1w18ve8"],color:"gray",line:"dashed",head:"normal"},{id:"ealiax",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.objectstorage",label:null,dotpos:"e,1140.6,1705.7 882.38,1467.3 926.38,1513.4 982.22,1569.9 1035,1617.4 1065.7,1645 1100,1673.4 1132.4,1699.2",points:[[882,1467],[926,1513],[982,1570],[1035,1617],[1066,1645],[1100,1673],[1132,1699]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["15njmlz"],color:"gray",line:"dashed",head:"normal"},{id:"1trj5u6",source:"otc-edp-per-tenant.cce.edp.forgejo",target:"otc-edp-per-tenant.cloudServices.elasticsearch",label:null,dotpos:"e,401.41,1705.6 691.86,1467.2 608.89,1535.3 494.54,1629.2 409.54,1698.9",points:[[692,1467],[609,1535],[495,1629],[410,1699]],labelBBox:null,parent:"otc-edp-per-tenant",relations:["1fzhjm9"],color:"gray",line:"dashed",head:"normal"},{id:"1asm38z",source:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",target:"otc-edp-per-tenant.cloudServices",label:"deploys edp to otc.paas",dotpos:"e,1952,1792.7 4738.6,1134.4 4709.3,1265.2 4634.5,1506.1 4466,1617.4 4259.7,1753.6 2589.5,1785.4 1962.1,1792.6",points:[[4739,1134],[4709,1265],[4634,1506],[4466,1617],[4260,1754],[2590,1785],[1962,1793]],labelBBox:{x:3219,y:1730,width:152,height:18},parent:null,relations:["1pfc6bl"],color:"gray",line:"dashed",head:"normal"},{id:"1or831y",source:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",target:"otc-edp-per-tenant.cce.edp",label:"deploys edp to otc.cce",dotpos:"e,1920,1323.8 4602.1,1134.5 4559.4,1155 4512.1,1173.9 4466,1184.6 4365.7,1207.9 2714.5,1189.2 2612,1199.6 2376.8,1223.4 2111.8,1278.8 1930.2,1321.4",points:[[4602,1134],[4559,1155],[4512,1174],[4466,1185],[4366,1208],[2714,1189],[2612,1200],[2377,1223],[2112,1279],[1930,1321]],labelBBox:{x:3117,y:1173,width:143,height:18},parent:null,relations:["uk77s5"],color:"gray",line:"dashed",head:"normal"}]},"otc-faas":{_type:"deployment",tags:null,links:null,_stage:"layouted",sourcePath:"views/deployment/otc/otc-faas.c4",description:null,title:"OTC Prototype FaaS",id:"otc-faas",autoLayout:{direction:"TB"},hash:"e4aa9cf8218ee52688aa6e4b51a564a0b34f7773",bounds:{x:0,y:0,width:2086,height:802},nodes:[{id:"otc-faas",parent:null,level:0,children:["otc-faas.dev","otc-faas.prod"],inEdges:[],outEdges:[],deploymentRef:"otc-faas",title:"OTC prototype FaaS",kind:"cloud",technology:"OTC",color:"primary",shape:"rectangle",description:{txt:"OTC environments for Prototype faaS."},tags:[],style:{opacity:15,size:"md"},depth:3,x:8,y:8,width:2070,height:786,labelBBox:{x:6,y:0,width:131,height:15}},{id:"otc-faas.dev",parent:"otc-faas",level:1,children:["otc-faas.dev.cce","otc-faas.dev.observability","otc-faas.dev.cloudServices"],inEdges:[],outEdges:[],deploymentRef:"otc-faas.dev",title:"tenant Dev",kind:"environment",technology:"OTC",color:"primary",shape:"rectangle",description:{txt:"*.t09.de"},tags:[],style:{opacity:15,size:"md"},depth:2,x:58,y:79,width:972,height:665,labelBBox:{x:6,y:0,width:74,height:15}},{id:"otc-faas.dev.cce",parent:"otc-faas.dev",level:2,children:["otc-faas.dev.cce.edp"],inEdges:[],outEdges:["p747qx"],deploymentRef:"otc-faas.dev.cce",title:"Central Forgejo",kind:"kubernetes",technology:"Kubernetes",color:"primary",shape:"rectangle",modelRef:"edp.forgejo",icon:"tech:kubernetes",description:{txt:"*.t09.de"},tags:[],style:{opacity:15,size:"md"},depth:1,navigateTo:"forgejo",x:108,y:150,width:454,height:266,labelBBox:{x:6,y:0,width:113,height:15}},{id:"otc-faas.dev.observability",parent:"otc-faas.dev",level:2,children:[],inEdges:[],outEdges:[],deploymentRef:"otc-faas.dev.observability",title:"Observability",kind:"kubernetes",technology:"Kubernetes",color:"primary",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"*.t09.de"},tags:[],style:{opacity:15,size:"md"},x:660,y:204,width:320,height:180,labelBBox:{x:86,y:53,width:178,height:67}},{id:"otc-faas.prod",parent:"otc-faas",level:1,children:["otc-faas.prod.cce","otc-faas.prod.observability","otc-faas.prod.cloudServices"],inEdges:[],outEdges:[],deploymentRef:"otc-faas.prod",title:"Tenant Prod",kind:"environment",technology:"OTC",color:"primary",shape:"rectangle",description:{txt:"*.buildth.ing"},tags:[],style:{opacity:15,size:"md"},depth:2,x:1080,y:79,width:948,height:665,labelBBox:{x:6,y:0,width:83,height:15}},{id:"otc-faas.prod.cce",parent:"otc-faas.prod",level:2,children:["otc-faas.prod.cce.edp"],inEdges:[],outEdges:["tb8sk9"],deploymentRef:"otc-faas.prod.cce",title:"Central Forgejo",kind:"kubernetes",technology:"Kubernetes",color:"primary",shape:"rectangle",modelRef:"edp.forgejo",icon:"tech:kubernetes",description:{txt:"*.buildth.ing"},tags:[],style:{opacity:15,size:"md"},depth:1,navigateTo:"forgejo",x:1130,y:150,width:430,height:266,labelBBox:{x:6,y:0,width:113,height:15}},{id:"otc-faas.dev.cce.edp",parent:"otc-faas.dev.cce",level:3,children:[],inEdges:[],outEdges:["p747qx"],deploymentRef:"otc-faas.dev.cce.edp",title:"Forgejo Dev for platform team",kind:"cluster",color:"primary",shape:"rectangle",modelRef:"edp.forgejo",icon:"tech:go",description:{txt:"t09.de"},tags:[],style:{opacity:15,size:"md"},navigateTo:"forgejo",x:140,y:204,width:389,height:180,labelBBox:{x:46,y:63,width:328,height:47}},{id:"otc-faas.prod.observability",parent:"otc-faas.prod",level:2,children:[],inEdges:[],outEdges:[],deploymentRef:"otc-faas.prod.observability",title:"Observability",kind:"kubernetes",technology:"Kubernetes",color:"primary",shape:"rectangle",icon:"tech:kubernetes",description:{txt:"*.buildth.ing"},tags:[],style:{opacity:15,size:"md"},x:1658,y:204,width:320,height:180,labelBBox:{x:86,y:53,width:178,height:67}},{id:"otc-faas.prod.cce.edp",parent:"otc-faas.prod.cce",level:3,children:[],inEdges:[],outEdges:["tb8sk9"],deploymentRef:"otc-faas.prod.cce.edp",title:"Forgejo for all EDP-tenants",kind:"cluster",color:"primary",shape:"rectangle",modelRef:"edp.forgejo",icon:"tech:go",description:{txt:"buildth.ing"},tags:[],style:{opacity:15,size:"md"},navigateTo:"forgejo",x:1162,y:204,width:365,height:180,labelBBox:{x:46,y:63,width:304,height:47}},{id:"otc-faas.dev.cloudServices",parent:"otc-faas.dev",level:2,children:[],inEdges:["p747qx"],outEdges:[],deploymentRef:"otc-faas.dev.cloudServices",title:"EDP Cloud Services",kind:"paas",technology:"Cloud Services",color:"primary",shape:"rectangle",description:{txt:"EDP Cloud Services (Postgres, Redis, etc."},tags:[],style:{opacity:15,size:"md"},x:173,y:514,width:323,height:180,labelBBox:{x:18,y:53,width:287,height:67}},{id:"otc-faas.prod.cloudServices",parent:"otc-faas.prod",level:2,children:[],inEdges:["tb8sk9"],outEdges:[],deploymentRef:"otc-faas.prod.cloudServices",title:"EDP Cloud Services",kind:"paas",technology:"Cloud Services",color:"primary",shape:"rectangle",description:{txt:"EDP Cloud Services (Postgres, Redis, etc."},tags:[],style:{opacity:15,size:"md"},x:1183,y:514,width:323,height:180,labelBBox:{x:18,y:53,width:287,height:67}}],edges:[{id:"p747qx",source:"otc-faas.dev.cce.edp",target:"otc-faas.dev.cloudServices",label:null,dotpos:"e,335,513.75 335,383.27 335,420.88 335,464.86 335,503.52",points:[[335,383],[335,421],[335,465],[335,504]],labelBBox:null,parent:"otc-faas.dev",relations:["dz2rdn"],color:"gray",line:"dashed",head:"normal"},{id:"tb8sk9",source:"otc-faas.prod.cce.edp",target:"otc-faas.prod.cloudServices",label:null,dotpos:"e,1345,513.75 1345,383.27 1345,420.88 1345,464.86 1345,503.52",points:[[1345,383],[1345,421],[1345,465],[1345,504]],labelBBox:null,parent:"otc-faas.prod",relations:["2shw6y"],color:"gray",line:"dashed",head:"normal"}]},"components-template-documentation":{_type:"element",tags:null,links:null,viewOf:"documentation",_stage:"layouted",sourcePath:"views/documentation/d1.c4",description:{txt:"Documentation System Context View"},title:"Documentation",id:"components-template-documentation",autoLayout:{direction:"TB"},hash:"b411a2274eea9b4e4f881a62211880ca09920b61",bounds:{x:0,y:0,width:431,height:503},nodes:[{id:"platformdeveloper",parent:null,level:0,children:[],inEdges:[],outEdges:["1kjl8ep"],title:"Technical Writer",modelRef:"platformdeveloper",shape:"person",color:"gray",style:{opacity:15,size:"md"},description:{txt:"Could be an engineer, but in this case it's the Technical Writer"},tags:[],kind:"actor",isCustomized:!0,x:32,y:0,width:320,height:180,labelBBox:{x:21,y:54,width:278,height:66}},{id:"documentation",parent:null,level:0,children:[],inEdges:["1kjl8ep"],outEdges:[],title:"Documentation",modelRef:"documentation",shape:"rectangle",color:"primary",icon:"tech:electron",style:{opacity:15,size:"md"},description:{txt:"Documentation system for EDP LikeC4 platform."},tags:[],technology:"Static Site Generator",kind:"system",x:0,y:323,width:384,height:180,labelBBox:{x:46,y:44,width:322,height:85}}],edges:[{id:"1kjl8ep",source:"platformdeveloper",target:"documentation",label:"creates and maintains documentation",dotpos:"e,192.12,322.97 192.12,179.93 192.12,221.13 192.12,270.24 192.12,312.63",points:[[192,180],[192,221],[192,270],[192,313]],labelBBox:{x:193,y:240,width:237,height:18},parent:null,relations:["3sz3k3"],color:"gray",line:"dashed",head:"normal"}]},"view_gitops-inner-outer-loop_15":{_type:"dynamic",tags:null,links:null,_stage:"layouted",sourcePath:"views/dynamic/cicd/gitops-inner-outer-loop.c4",description:null,title:"outer-ci-loop",id:"view_gitops-inner-outer-loop_15",variant:"diagram",autoLayout:{direction:"LR"},hash:"d85bdffdca5f49220457db75761ae8ba47744c16",sequenceLayout:{actors:[{id:"localbox.git",x:32,y:52,width:320,height:180,ports:[{id:"step-01_source",cx:160,cy:338,height:40,type:"source",position:"right"}]},{id:"edp.forgejogit",x:448,y:52,width:320,height:180,ports:[{id:"step-01_target",cx:160,cy:338,height:24,type:"target",position:"left"},{id:"step-02_source",cx:160,cy:360,height:40,type:"source",position:"right"},{id:"step-04_target",cx:160,cy:475,height:24,type:"target",position:"right"},{id:"step-05_source",cx:160,cy:568,height:40,type:"source",position:"right"}]},{id:"forgejoRunner",x:832,y:52,width:320,height:180,ports:[{id:"step-02_target",cx:160,cy:360,height:24,type:"target",position:"left"},{id:"step-03_source",cx:160,cy:382,height:40,type:"source",position:"right"},{id:"step-04_source",cx:160,cy:475,height:40,type:"source",position:"left"}]},{id:"edp.imageregistry",x:1216,y:52,width:373,height:180,ports:[{id:"step-03_target",cx:187,cy:382,height:24,type:"target",position:"left"},{id:"step-07_target",cx:187,cy:683,height:24,type:"target",position:"right"}]},{id:"edp.argoCD",x:1649,y:52,width:320,height:180,ports:[{id:"step-05_target",cx:160,cy:568,height:24,type:"target",position:"left"},{id:"step-06_source",cx:160,cy:590,height:40,type:"source",position:"right"}]},{id:"cloud",x:2033,y:52,width:320,height:180,ports:[{id:"step-06_target",cx:160,cy:590,height:24,type:"target",position:"left"},{id:"step-07_source",cx:160,cy:683,height:40,type:"source",position:"left"}]}],compounds:[{depth:0,x:0,y:0,width:384,height:527,id:"localbox",origin:"localbox"},{depth:0,x:416,y:0,width:384,height:735,id:"edp-1",origin:"edp"},{depth:0,x:1184,y:0,width:817,height:828,id:"edp-2",origin:"edp"}],steps:[{id:"step-01",sourceHandle:"step-01_source",targetHandle:"step-01_target",labelBBox:{width:91,height:27}},{id:"step-02",sourceHandle:"step-02_source",targetHandle:"step-02_target",labelBBox:{width:92,height:27}},{id:"step-03",sourceHandle:"step-03_source",targetHandle:"step-03_target",labelBBox:{width:159,height:27}},{id:"step-04",sourceHandle:"step-04_source",targetHandle:"step-04_target",labelBBox:{width:174,height:27}},{id:"step-05",sourceHandle:"step-05_source",targetHandle:"step-05_target",labelBBox:{width:164,height:27}},{id:"step-06",sourceHandle:"step-06_source",targetHandle:"step-06_target",labelBBox:{width:161,height:27}},{id:"step-07",sourceHandle:"step-07_source",targetHandle:"step-07_target",labelBBox:{width:113,height:27}}],parallelAreas:[],bounds:{x:0,y:0,width:2353,height:828}},bounds:{x:0,y:0,width:2150,height:1243},nodes:[{id:"localbox",parent:null,level:0,children:["localbox.git"],inEdges:[],outEdges:["step-01"],title:"localbox",modelRef:"localbox",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"A local development system"},tags:[],technology:"Linux/Windows/Mac",kind:"system",depth:1,x:8,y:306,width:384,height:265,labelBBox:{x:6,y:0,width:66,height:15}},{id:"localbox.git",parent:"localbox",level:1,children:[],inEdges:[],outEdges:["step-01"],title:"git",modelRef:"localbox.git",shape:"rectangle",color:"primary",icon:"tech:git",style:{opacity:15,size:"md"},description:{txt:"local git"},tags:[],technology:"Git",kind:"component",x:40,y:359,width:320,height:180,labelBBox:{x:119,y:53,width:113,height:67}},{id:"edp",parent:null,level:0,children:["edp.forgejogit","edp.imageregistry","edp.argoCD","edp.forgejo"],inEdges:["step-01","step-03","step-04","step-07"],outEdges:["step-02","step-06"],title:"EDP",modelRef:"edp",shape:"rectangle",color:"secondary",icon:"tech:kubernetes",style:{opacity:15,size:"md"},description:{txt:"EDP Edge Development Platform"},tags:[],technology:"Kubernetes",kind:"system",depth:1,navigateTo:"edp",x:528,y:8,width:1064,height:861,labelBBox:{x:6,y:0,width:27,height:15}},{id:"edp.forgejogit",parent:"edp",level:1,children:[],inEdges:["step-01","step-04"],outEdges:["step-02","step-05"],title:"ForgejoGit",modelRef:"edp.forgejogit",shape:"rectangle",color:"secondary",icon:"tech:git",style:{opacity:15,size:"md"},tags:[],kind:"component",x:595,y:359,width:320,height:180,labelBBox:{x:97,y:74,width:155,height:24}},{id:"forgejoRunner",parent:null,level:0,children:[],inEdges:["step-02"],outEdges:["step-03","step-04"],title:"Forgejo Runner",modelRef:"forgejoRunner",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],kind:"component",x:1232,y:909,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:102}},{id:"edp.imageregistry",parent:"edp",level:1,children:[],inEdges:["step-03","step-07"],outEdges:[],title:"Forgejo OCI Image Registry",modelRef:"edp.imageregistry",shape:"rectangle",color:"secondary",icon:"tech:go",style:{opacity:15,size:"md"},description:{txt:"Container Image Registry"},tags:[],technology:"Golang",kind:"component",x:568,y:649,width:373,height:180,labelBBox:{x:46,y:53,width:311,height:67}},{id:"edp.argoCD",parent:"edp",level:1,children:[],inEdges:["step-05"],outEdges:["step-06"],title:"ArgoCD",modelRef:"edp.argoCD",shape:"rectangle",color:"secondary",style:{opacity:20,size:"md"},description:{txt:"GitOps Service"},tags:[],kind:"container",navigateTo:"argoCD",x:1232,y:495,width:320,height:180,labelBBox:{x:107,y:63,width:105,height:48}},{id:"cloud",parent:null,level:0,children:[],inEdges:["step-06"],outEdges:["step-07"],title:"Cloud",modelRef:"cloud",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"Cloud environments"},tags:[],technology:"IaaS/PaaS",kind:"system",x:1830,y:1063,width:320,height:180,labelBBox:{x:91,y:53,width:137,height:67}},{id:"edp.forgejo",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"Forgejo",modelRef:"edp.forgejo",shape:"rectangle",color:"gray",icon:"tech:go",style:{opacity:20,size:"md"},description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},tags:[],technology:"Golang",kind:"container",isCustomized:!0,navigateTo:"forgejo",x:585,y:69,width:340,height:180,labelBBox:{x:45,y:17,width:279,height:139}}],edges:[{id:"step-01",source:"localbox.git",target:"edp.forgejogit",label:"git push",dotpos:"e,594.97,449 359.74,449 430.11,449 512.98,449 584.5,449",points:[[360,449],[430,449],[513,449],[585,449]],labelBBox:{x:429,y:417,width:75,height:19},parent:null,relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@0"},{id:"step-02",source:"edp.forgejogit",target:"forgejoRunner",label:"on push",dotpos:"e,1243.2,909.08 895.71,538.9 1008.4,612.21 1151.2,707.77 1171.7,734 1218.9,794.54 1183.7,836.08 1231.7,896 1233.2,897.83 1234.7,899.63 1236.2,901.41",points:[[896,539],[1008,612],[1151,708],[1172,734],[1219,795],[1184,836],[1232,896],[1233,898],[1235,900],[1236,901]],labelBBox:{x:1051,y:582,width:76,height:19},parent:null,relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@1"},{id:"step-03",source:"forgejoRunner",target:"edp.imageregistry",label:"pushes new image",dotpos:"e,823.44,828.86 1231.8,1011.9 1158.8,1011.9 1072.7,1003.2 1001.2,971.8 934.18,942.34 874.24,886.42 830.35,836.77",points:[[1232,1012],[1159,1012],[1073,1003],[1001,972],[934,942],[874,886],[830,837]],labelBBox:{x:1018,y:940,width:143,height:19},parent:null,relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@2"},{id:"step-04",source:"forgejoRunner",target:"edp.forgejogit",label:"pushes new appspec",dotpos:"s,892.11,538.97 899.79,546.08 915.25,560.79 929.55,576.84 941.18,594 994.62,672.87 940.47,726.37 1001.2,799.8 1033.6,839.02 1138.8,891.76 1231.7,933.12",points:[[900,546],[915,561],[930,577],[941,594],[995,673],[940,726],[1001,800],[1034,839],[1139,892],[1232,933]],labelBBox:{x:1010,y:768,width:158,height:19},dir:"back",parent:null,relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@3"},{id:"step-05",source:"edp.forgejogit",target:"edp.argoCD",label:"triggers deployment",dotpos:"e,1231.9,550.99 914.25,482.97 1007.9,503.03 1126.5,528.41 1221.9,548.84",points:[[914,483],[1008,503],[1126,528],[1222,549]],labelBBox:{x:1015,y:473,width:148,height:19},parent:"edp",relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@4"},{id:"step-06",source:"edp.argoCD",target:"cloud",label:"deploys application",dotpos:"e,1894.7,1063.3 1486.9,674.69 1596,778.69 1775.3,949.49 1887.4,1056.4",points:[[1487,675],[1596,779],[1775,949],[1887,1056]],labelBBox:{x:1621,y:769,width:145,height:19},parent:null,relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@5"},{id:"step-07",source:"cloud",target:"edp.imageregistry",label:"pulls image",dotpos:"s,812.1,828.53 817.94,836.93 897.44,950.49 1047,1129 1231.7,1182.8 1431.9,1241.1 1674.4,1215.8 1830.1,1188.1",points:[[818,837],[897,950],[1047,1129],[1232,1183],[1432,1241],[1674,1216],[1830,1188]],labelBBox:{x:1346,y:1151,width:97,height:19},dir:"back",parent:null,relations:[],color:"gray",line:"dashed",head:"normal",tags:[],astPath:"/steps@6"}]},edpbuilderworkflow:{_type:"element",tags:null,links:null,viewOf:"edfbuilder",_stage:"layouted",sourcePath:"views/edp/edfbuilder.c4",description:{txt:"Describes the process how to create an EDP instance"},title:"edfbuilder",id:"edpbuilderworkflow",autoLayout:{direction:"LR",nodeSep:110,rankSep:120},hash:"40921acf4f52bd8d6d2ac3a0d1810b3b7bc13b2a",bounds:{x:0,y:0,width:320,height:180},nodes:[{id:"edfbuilder",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"edfbuilder",modelRef:"edfbuilder",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:15,size:"md"},description:{txt:"EDP Foundry Builder"},tags:[],technology:"Golang",kind:"component",x:0,y:0,width:320,height:180,labelBBox:{x:74,y:53,width:203,height:67}}],edges:[]},edp:{_type:"element",tags:null,links:null,viewOf:"edp",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Context view",id:"edp",autoLayout:{direction:"TB"},hash:"28d4204eb300a4296f82769be0ee6d6ba8d0882b",bounds:{x:0,y:0,width:5229,height:943},nodes:[{id:"forgejoRunner",parent:null,level:0,children:[],inEdges:["stl3mw"],outEdges:["1cy1y20"],title:"Forgejo Runner",modelRef:"forgejoRunner",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],kind:"component",x:0,y:392,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:102}},{id:"developer",parent:null,level:0,children:[],inEdges:[],outEdges:["1y3lcyj","1ttqc1r","170qzun","1bt83vj","1nv0w41","1agven9","3nxrq7","bfgapq"],title:"Developer",modelRef:"developer",shape:"person",color:"green",style:{opacity:25,size:"md"},description:{txt:"The regular user of the platform"},tags:[],kind:"actor",x:4909,y:69,width:320,height:180,labelBBox:{x:53,y:63,width:214,height:48}},{id:"edp",parent:null,level:0,children:["edp.forgejoActions","edp.api","edp.argoCD","edp.ui","edp.forgejo","edp.imageregistry","edp.grafana","edp.keycloak","edp.forgejogit","edp.loki","edp.prometheus","edp.mailhog","edp.minio","edp.monitoring","edp.openbao","edp.testApp","edp.application"],inEdges:["1cy1y20","1y3lcyj","1ttqc1r","170qzun","1bt83vj","1nv0w41","1agven9","3nxrq7","bfgapq"],outEdges:["stl3mw"],title:"EDP",modelRef:"edp",shape:"rectangle",color:"primary",icon:"tech:kubernetes",style:{opacity:25,size:"md"},description:{txt:"EDP Edge Development Platform"},tags:[],technology:"Kubernetes",kind:"system",depth:1,navigateTo:"idp",x:390,y:8,width:4479,height:927,labelBBox:{x:6,y:0,width:27,height:15}},{id:"edp.forgejoActions",parent:"edp",level:1,children:[],inEdges:["1cy1y20"],outEdges:["stl3mw"],title:"Forgejo Actions",modelRef:"edp.forgejoActions",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:25,size:"md"},description:{txt:"Continuous Integration like Github Actions"},tags:[],technology:"Golang",kind:"component",x:430,y:69,width:350,height:180,labelBBox:{x:46,y:44,width:288,height:86}},{id:"edp.api",parent:"edp",level:1,children:[],inEdges:["1y3lcyj"],outEdges:[],title:"API",modelRef:"edp.api",shape:"rectangle",color:"primary",icon:"tech:swagger",style:{opacity:25,size:"md"},description:{txt:"API for the EDP platform"},tags:[],kind:"container",x:3649,y:392,width:320,height:180,labelBBox:{x:62,y:63,width:226,height:48}},{id:"edp.argoCD",parent:"edp",level:1,children:[],inEdges:["1ttqc1r"],outEdges:["f6xyb4"],title:"ArgoCD",modelRef:"edp.argoCD",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"GitOps Service"},tags:[],kind:"container",navigateTo:"argoCD",x:4079,y:392,width:320,height:180,labelBBox:{x:108,y:63,width:105,height:48}},{id:"edp.ui",parent:"edp",level:1,children:[],inEdges:["170qzun"],outEdges:[],title:"Backstage",modelRef:"edp.ui",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Developer Portal"},tags:[],kind:"container",x:4509,y:392,width:320,height:180,labelBBox:{x:102,y:63,width:116,height:48}},{id:"edp.forgejo",parent:"edp",level:1,children:[],inEdges:["1bt83vj"],outEdges:[],title:"Forgejo",modelRef:"edp.forgejo",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:25,size:"md"},description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},tags:[],technology:"Golang",kind:"container",navigateTo:"forgejo",x:1830,y:392,width:340,height:180,labelBBox:{x:46,y:17,width:278,height:139}},{id:"edp.imageregistry",parent:"edp",level:1,children:[],inEdges:["1nv0w41"],outEdges:[],title:"Forgejo OCI Image Registry",modelRef:"edp.imageregistry",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:25,size:"md"},description:{txt:"Container Image Registry"},tags:[],technology:"Golang",kind:"component",x:2280,y:392,width:373,height:180,labelBBox:{x:47,y:53,width:311,height:67}},{id:"edp.grafana",parent:"edp",level:1,children:[],inEdges:["3nxrq7"],outEdges:["1tfxhhz","1adt45o"],title:"Grafana",modelRef:"edp.grafana",shape:"rectangle",color:"primary",icon:"tech:grafana",style:{opacity:25,size:"md"},description:{txt:"Data visualization and monitoring"},tags:[],kind:"container",x:2763,y:392,width:345,height:180,labelBBox:{x:47,y:63,width:283,height:48}},{id:"edp.keycloak",parent:"edp",level:1,children:[],inEdges:["bfgapq"],outEdges:[],title:"Keycloak",modelRef:"edp.keycloak",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Single Sign On for all EDP products"},tags:[],kind:"container",navigateTo:"keycloak",x:3219,y:392,width:320,height:180,labelBBox:{x:39,y:63,width:242,height:48}},{id:"edp.forgejogit",parent:"edp",level:1,children:[],inEdges:["1agven9","f6xyb4"],outEdges:[],title:"ForgejoGit",modelRef:"edp.forgejogit",shape:"rectangle",color:"primary",icon:"tech:git",style:{opacity:25,size:"md"},tags:[],kind:"component",x:4079,y:715,width:320,height:180,labelBBox:{x:97,y:74,width:156,height:24}},{id:"edp.loki",parent:"edp",level:1,children:[],inEdges:["1tfxhhz"],outEdges:[],title:"Loki",modelRef:"edp.loki",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Log aggregation system"},tags:[],kind:"container",x:2561,y:715,width:320,height:180,labelBBox:{x:78,y:63,width:164,height:47}},{id:"edp.prometheus",parent:"edp",level:1,children:[],inEdges:["1adt45o"],outEdges:[],title:"Prometheus",modelRef:"edp.prometheus",shape:"rectangle",color:"primary",icon:"tech:prometheus",style:{opacity:25,size:"md"},description:{txt:"Monitoring and alerting toolkit"},tags:[],kind:"container",x:2991,y:715,width:320,height:180,labelBBox:{x:46,y:63,width:258,height:47}},{id:"edp.mailhog",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"Mailhog",modelRef:"edp.mailhog",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Web and API based SMTP testing"},tags:[],kind:"container",navigateTo:"mailhog",x:890,y:69,width:320,height:180,labelBBox:{x:44,y:63,width:232,height:48}},{id:"edp.minio",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"Minio",modelRef:"edp.minio",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"S3 compatible blob storage"},tags:[],kind:"container",navigateTo:"minio",x:1320,y:69,width:320,height:180,labelBBox:{x:67,y:63,width:186,height:48}},{id:"edp.monitoring",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"Monitoring",modelRef:"edp.monitoring",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Observability system to monitor deployed components"},tags:[],kind:"container",navigateTo:"monitoring",x:1860,y:69,width:320,height:180,labelBBox:{x:21,y:54,width:278,height:66}},{id:"edp.openbao",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"OpenBao",modelRef:"edp.openbao",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Secure secret storage"},tags:[],kind:"container",x:430,y:392,width:320,height:180,labelBBox:{x:85,y:63,width:151,height:48}},{id:"edp.testApp",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"Fibonacci",modelRef:"edp.testApp",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"Testapp to validate deployments"},tags:[],kind:"container",navigateTo:"testapp",x:860,y:392,width:320,height:180,labelBBox:{x:50,y:63,width:220,height:48}},{id:"edp.application",parent:"edp",level:1,children:[],inEdges:[],outEdges:[],title:"application",modelRef:"edp.application",shape:"rectangle",color:"primary",style:{opacity:25,size:"md"},description:{txt:"An application description"},tags:[],technology:"DSL",kind:"schema",x:1400,y:392,width:320,height:180,labelBBox:{x:73,y:53,width:175,height:67}}],edges:[{id:"1cy1y20",source:"forgejoRunner",target:"edp.forgejoActions",label:"register",dotpos:"e,430.23,247.69 241.41,392.19 269.67,363.9 302.52,333.63 335.34,309.2 362.09,289.28 391.8,270.23 421.45,252.8",points:[[241,392],[270,364],[303,334],[335,309],[362,289],[392,270],[421,253]],labelBBox:{x:336,y:309,width:51,height:18},parent:null,relations:["18dtot7"],color:"gray",line:"dashed",head:"normal"},{id:"1y3lcyj",source:"developer",target:"edp.api",label:"uses API",dotpos:"e,3968.7,410.28 4909.1,244.68 4904.7,246.27 4900.4,247.79 4896,249.2 4732.6,302.52 4683.6,281.55 4514,309.2 4296,344.73 4236.3,330.98 4024,392 4009,396.32 3993.6,401.37 3978.3,406.83",points:[[4909,245],[4905,246],[4900,248],[4896,249],[4733,303],[4684,282],[4514,309],[4296,345],[4236,331],[4024,392],[4009,396],[3994,401],[3978,407]],labelBBox:{x:4515,y:309,width:60,height:18},parent:null,relations:["1l9a3pd"],color:"gray",line:"dashed",head:"normal"},{id:"1ttqc1r",source:"developer",target:"edp.argoCD",label:"manages deployments",dotpos:"e,4398.9,414.45 4909.4,243.91 4904.9,245.75 4900.4,247.51 4896,249.2 4797,287.01 4766,276.46 4665.2,309.2 4569.3,340.33 4547.5,354.32 4454,392 4439.2,397.97 4423.8,404.22 4408.4,410.52",points:[[4909,244],[4905,246],[4900,248],[4896,249],[4797,287],[4766,276],[4665,309],[4569,340],[4548,354],[4454,392],[4439,398],[4424,404],[4408,411]],labelBBox:{x:4666,y:309,width:145,height:18},parent:null,relations:["1ghp31l"],color:"gray",line:"dashed",head:"normal"},{id:"170qzun",source:"developer",target:"edp.ui",label:"manages project",dotpos:"e,4767.9,392.21 4944.9,249.03 4918.7,268.47 4891.5,289.22 4866.5,309.2 4836.5,333.25 4804.7,360.19 4775.6,385.47",points:[[4945,249],[4919,268],[4891,289],[4867,309],[4836,333],[4805,360],[4776,385]],labelBBox:{x:4868,y:309,width:108,height:18},parent:null,relations:["yk9zv2","1woleh6"],color:"gray",line:"dashed",head:"normal"},{id:"1bt83vj",source:"developer",target:"edp.forgejo",label:"manages code",dotpos:"e,2170.2,408.41 4909.3,245.41 4904.9,246.79 4900.4,248.06 4896,249.2 4470.7,359.05 3358.2,276.52 2920.2,309.2 2609.9,332.34 2526.7,315.74 2225,392 2210.2,395.74 2195.1,400.2 2180.1,405.12",points:[[4909,245],[4905,247],[4900,248],[4896,249],[4471,359],[3358,277],[2920,309],[2610,332],[2527,316],[2225,392],[2210,396],[2195,400],[2180,405]],labelBBox:{x:2921,y:309,width:96,height:18},parent:null,relations:["12036hb"],color:"gray",line:"dashed",head:"normal"},{id:"1nv0w41",source:"developer",target:"edp.imageregistry",label:"pushes and pull images",dotpos:"e,2653.6,407.48 4909.3,245.36 4904.9,246.76 4900.4,248.04 4896,249.2 4562.4,336.85 3688.7,280.27 3344.9,309.2 3060.5,333.14 2985.2,323.73 2708,392 2693.4,395.61 2678.4,399.82 2663.4,404.41",points:[[4909,245],[4905,247],[4900,248],[4896,249],[4562,337],[3689,280],[3345,309],[3060,333],[2985,324],[2708,392],[2693,396],[2678,400],[2663,404]],labelBBox:{x:3346,y:309,width:151,height:18},parent:null,relations:["177bm2y"],color:"gray",line:"dashed",head:"normal"},{id:"1agven9",source:"developer",target:"edp.forgejogit",label:"uses git",dotpos:"e,4398.8,781.42 5051.3,249 5028.2,341.96 4979.1,486.12 4884,572 4750.9,692.23 4550.9,751.24 4408.9,779.44",points:[[5051,249],[5028,342],[4979,486],[4884,572],[4751,692],[4551,751],[4409,779]],labelBBox:{x:5005,y:470,width:52,height:18},parent:null,relations:["1uzzn9j"],color:"gray",line:"dashed",head:"normal"},{id:"3nxrq7",source:"developer",target:"edp.grafana",label:"monitors",dotpos:"e,3108.5,408.4 4909.3,245.25 4904.8,246.68 4900.4,248 4896,249.2 4675.3,309.5 4096.2,289.17 3868.3,309.2 3554.4,336.8 3469.8,315.67 3164,392 3148.9,395.77 3133.5,400.29 3118.1,405.25",points:[[4909,245],[4905,247],[4900,248],[4896,249],[4675,310],[4096,289],[3868,309],[3554,337],[3470,316],[3164,392],[3149,396],[3133,400],[3118,405]],labelBBox:{x:3869,y:309,width:58,height:18},parent:null,relations:["1xiorre"],color:"gray",line:"dashed",head:"normal"},{id:"bfgapq",source:"developer",target:"edp.keycloak",label:"authenticates",dotpos:"e,3538.8,409.46 4909.2,245.06 4904.8,246.54 4900.4,247.93 4896,249.2 4613.1,331.45 4528.6,277.01 4235.7,309.2 3949.9,340.62 3871.9,317.96 3594,392 3579.1,395.97 3563.9,400.73 3548.8,405.96",points:[[4909,245],[4905,247],[4900,248],[4896,249],[4613,331],[4529,277],[4236,309],[3950,341],[3872,318],[3594,392],[3579,396],[3564,401],[3549,406]],labelBBox:{x:4237,y:309,width:87,height:18},parent:null,relations:["jpl8ll"],color:"gray",line:"dashed",head:"normal"},{id:"f6xyb4",source:"edp.argoCD",target:"edp.forgejogit",label:"Syncs git repo",dotpos:"e,4239,714.97 4239,571.93 4239,613.13 4239,662.24 4239,704.63",points:[[4239,572],[4239,613],[4239,662],[4239,705]],labelBBox:{x:4240,y:632,width:93,height:18},parent:"edp",relations:["6mupa0"],color:"gray",line:"dashed",head:"normal"},{id:"1tfxhhz",source:"edp.grafana",target:"edp.loki",label:"get logs",dotpos:"e,2780.6,714.97 2876.4,571.93 2848.5,613.66 2815.1,663.49 2786.4,706.24",points:[[2876,572],[2848,614],[2815,663],[2786,706]],labelBBox:{x:2836,y:632,width:53,height:18},parent:"edp",relations:["1n1utzc"],color:"gray",line:"dashed",head:"normal"},{id:"1adt45o",source:"edp.grafana",target:"edp.prometheus",label:"get metrics and alerts",dotpos:"e,3091.5,714.97 2995.6,571.93 3023.6,613.66 3057,663.49 3085.6,706.24",points:[[2996,572],[3024,614],[3057,663],[3086,706]],labelBBox:{x:3051,y:632,width:138,height:18},parent:"edp",relations:["13uvtiq"],color:"gray",line:"dashed",head:"normal"},{id:"stl3mw",source:"edp.forgejoActions",target:"forgejoRunner",label:"runs workflows",dotpos:"e,319.93,392.23 511.82,249.14 480.79,276.98 445.37,306.94 411.02,332 385.14,350.88 356.74,369.52 328.64,386.89",points:[[512,249],[481,277],[445,307],[411,332],[385,351],[357,370],[329,387]],labelBBox:{x:440,y:309,width:97,height:18},parent:null,relations:["1pbc22f"],color:"gray",line:"dashed",head:"normal"}]},keycloak:{_type:"element",tags:null,links:null,viewOf:"edp.keycloak",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Keycloak",id:"keycloak",autoLayout:{direction:"TB"},hash:"528a426001df41ee3034ded0cc7ae02a1bd96842",bounds:{x:0,y:0,width:927,height:560},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["119ru5h"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:48,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.keycloak",parent:null,level:0,children:["edp.keycloak.keycloak","edp.keycloak.keycloakDB"],inEdges:["119ru5h"],outEdges:[],title:"Keycloak",modelRef:"edp.keycloak",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Single Sign On for all EDP products"},tags:[],kind:"container",depth:1,x:8,y:271,width:911,height:281,labelBBox:{x:6,y:0,width:66,height:15}},{id:"edp.keycloak.keycloak",parent:"edp.keycloak",level:1,children:[],inEdges:["119ru5h"],outEdges:["kn0x70"],title:"Keycloak",modelRef:"edp.keycloak.keycloak",shape:"rectangle",color:"primary",icon:"tech:java",style:{opacity:15,size:"md"},tags:[],technology:"Java",kind:"component",x:48,y:332,width:320,height:180,labelBBox:{x:103,y:64,width:144,height:46}},{id:"edp.keycloak.keycloakDB",parent:"edp.keycloak",level:1,children:[],inEdges:["kn0x70"],outEdges:[],title:"Database",modelRef:"edp.keycloak.keycloakDB",shape:"storage",color:"primary",icon:"tech:postgresql",style:{opacity:15,size:"md"},tags:[],technology:"Postgresql",kind:"component",x:559,y:332,width:320,height:180,labelBBox:{x:101,y:64,width:148,height:46}}],edges:[{id:"119ru5h",source:"edp.ingressNginx",target:"edp.keycloak.keycloak",label:"https",dotpos:"e,208,332.26 208,179.87 208,223.7 208,276.72 208,321.86",points:[[208,180],[208,224],[208,277],[208,322]],labelBBox:{x:209,y:240,width:34,height:18},parent:null,relations:["h3rut2"],color:"gray",line:"dashed",head:"normal"},{id:"kn0x70",source:"edp.keycloak.keycloak",target:"edp.keycloak.keycloakDB",label:"reads/writes",dotpos:"e,558.2,422 367.93,422 425.1,422 489.73,422 547.81,422",points:[[368,422],[425,422],[490,422],[548,422]],labelBBox:{x:424,y:396,width:79,height:18},parent:"edp.keycloak",relations:["18zxrhs"],color:"gray",line:"dashed",head:"normal"}]},forgejo:{_type:"element",tags:null,links:null,viewOf:"edp.forgejo",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Forgejo",id:"forgejo",autoLayout:{direction:"TB"},hash:"e58fa1188b5809568e6fb20b5adc1584fef396d8",bounds:{x:0,y:0,width:846,height:528},nodes:[{id:"edp.forgejo",parent:null,level:0,children:["edp.forgejo.forgejocollaboration","edp.forgejo.forgejoproject"],inEdges:["1dgzzfb"],outEdges:[],title:"Forgejo",modelRef:"edp.forgejo",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:20,size:"md"},description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},tags:[],technology:"Golang",kind:"container",depth:1,x:8,y:239,width:830,height:281,labelBBox:{x:6,y:0,width:58,height:15}},{id:"edp.forgejo.forgejocollaboration",parent:"edp.forgejo",level:1,children:[],inEdges:[],outEdges:[],title:"Collaboration",modelRef:"edp.forgejo.forgejocollaboration",shape:"rectangle",color:"primary",icon:"tech:github",style:{opacity:15,size:"md"},tags:[],kind:"component",x:48,y:300,width:320,height:180,labelBBox:{x:85,y:74,width:180,height:24}},{id:"edp.forgejo.forgejoproject",parent:"edp.forgejo",level:1,children:[],inEdges:[],outEdges:[],title:"Project Mgmt",modelRef:"edp.forgejo.forgejoproject",shape:"rectangle",color:"primary",icon:"tech:github",style:{opacity:15,size:"md"},tags:[],kind:"component",x:478,y:300,width:320,height:180,labelBBox:{x:85,y:74,width:180,height:24}},{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["1dgzzfb"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:48,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}}],edges:[{id:"1dgzzfb",source:"edp.ingressNginx",target:"edp.forgejo",label:"https",dotpos:"e,208,238.8 208,179.6 208,195.09 208,211.63 208,228.36",points:[[208,180],[208,195],[208,212],[208,228]],labelBBox:{x:173,y:186,width:34,height:18},parent:null,relations:["123efwn"],color:"gray",line:"dashed",head:"normal"}]},crossplane:{_type:"element",tags:null,links:null,viewOf:"edp.crossplane",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Crossplane",id:"crossplane",autoLayout:{direction:"TB"},hash:"21cafdc6d03bbe02437c3a01524d368cfd652a88",bounds:{x:0,y:0,width:1276,height:597},nodes:[{id:"edp.crossplane",parent:null,level:0,children:["edp.crossplane.crossplane","edp.crossplane.crossplaneFunction","edp.crossplane.crossplaneRbacManager","edp.crossplane.providerArgoCD","edp.crossplane.providerKind","edp.crossplane.providerShell"],inEdges:[],outEdges:[],title:"Crossplane",modelRef:"edp.crossplane",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Declarative management of ressources"},tags:["internal"],kind:"container",depth:1,x:8,y:8,width:1260,height:581,labelBBox:{x:6,y:0,width:80,height:15}},{id:"edp.crossplane.crossplane",parent:"edp.crossplane",level:1,children:[],inEdges:[],outEdges:[],title:"Crossplane",modelRef:"edp.crossplane.crossplane",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:48,y:69,width:320,height:180,labelBBox:{x:107,y:74,width:105,height:24}},{id:"edp.crossplane.crossplaneFunction",parent:"edp.crossplane",level:1,children:[],inEdges:[],outEdges:[],title:"Function Patch and Transform",modelRef:"edp.crossplane.crossplaneFunction",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:478,y:69,width:320,height:180,labelBBox:{x:23,y:74,width:273,height:24}},{id:"edp.crossplane.crossplaneRbacManager",parent:"edp.crossplane",level:1,children:[],inEdges:[],outEdges:[],title:"RBAC Manager",modelRef:"edp.crossplane.crossplaneRbacManager",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:908,y:69,width:320,height:180,labelBBox:{x:88,y:74,width:144,height:24}},{id:"edp.crossplane.providerArgoCD",parent:"edp.crossplane",level:1,children:[],inEdges:[],outEdges:[],title:"ArgoCD Provider",modelRef:"edp.crossplane.providerArgoCD",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:48,y:369,width:320,height:180,labelBBox:{x:82,y:74,width:155,height:24}},{id:"edp.crossplane.providerKind",parent:"edp.crossplane",level:1,children:[],inEdges:[],outEdges:[],title:"Kind Provider",modelRef:"edp.crossplane.providerKind",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:478,y:369,width:320,height:180,labelBBox:{x:98,y:74,width:124,height:24}},{id:"edp.crossplane.providerShell",parent:"edp.crossplane",level:1,children:[],inEdges:[],outEdges:[],title:"Shell Provider",modelRef:"edp.crossplane.providerShell",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:908,y:369,width:320,height:180,labelBBox:{x:96,y:74,width:129,height:24}}],edges:[]},externalSecrets:{_type:"element",tags:null,links:null,viewOf:"edp.externalSecrets",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"external-secrets",id:"externalSecrets",autoLayout:{direction:"TB"},hash:"b3af3338d1f389aa939be93f7233de72e9cf818b",bounds:{x:0,y:0,width:846,height:597},nodes:[{id:"edp.externalSecrets",parent:null,level:0,children:["edp.externalSecrets.externalSecrets","edp.externalSecrets.certController","edp.externalSecrets.webhook"],inEdges:[],outEdges:[],title:"external-secrets",modelRef:"edp.externalSecrets",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Provider to access externally stored Kubernetes secrets"},tags:["internal"],kind:"container",depth:1,x:8,y:8,width:830,height:581,labelBBox:{x:6,y:0,width:119,height:15}},{id:"edp.externalSecrets.externalSecrets",parent:"edp.externalSecrets",level:1,children:[],inEdges:[],outEdges:[],title:"external-secrets controller",modelRef:"edp.externalSecrets.externalSecrets",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:48,y:69,width:320,height:180,labelBBox:{x:43,y:74,width:234,height:24}},{id:"edp.externalSecrets.certController",parent:"edp.externalSecrets",level:1,children:[],inEdges:[],outEdges:[],title:"cert-controller",modelRef:"edp.externalSecrets.certController",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:478,y:69,width:320,height:180,labelBBox:{x:97,y:74,width:126,height:24}},{id:"edp.externalSecrets.webhook",parent:"edp.externalSecrets",level:1,children:[],inEdges:[],outEdges:[],title:"webhook",modelRef:"edp.externalSecrets.webhook",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:48,y:369,width:320,height:180,labelBBox:{x:118,y:74,width:84,height:24}}],edges:[]},velero:{_type:"element",tags:null,links:null,viewOf:"edp.velero",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Velero",id:"velero",autoLayout:{direction:"TB"},hash:"31cb339645f3556f63935e842bc8b051e3e17e78",bounds:{x:0,y:0,width:826,height:564},nodes:[{id:"edp.velero",parent:null,level:0,children:["edp.velero.velero"],inEdges:[],outEdges:["13dald4"],title:"Velero",modelRef:"edp.velero",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Backup Kubernetes resources"},tags:["internal"],kind:"container",depth:1,x:434,y:8,width:384,height:265,labelBBox:{x:6,y:0,width:49,height:15}},{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["mcc3r"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:0,y:384,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.velero.velero",parent:"edp.velero",level:1,children:[],inEdges:[],outEdges:["13dald4"],title:"Velero",modelRef:"edp.velero.velero",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:466,y:61,width:320,height:180,labelBBox:{x:129,y:74,width:62,height:24}},{id:"edp.minio",parent:null,level:0,children:[],inEdges:["13dald4","mcc3r"],outEdges:[],title:"Minio",modelRef:"edp.minio",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"S3 compatible blob storage"},tags:[],kind:"container",navigateTo:"minio",x:466,y:384,width:320,height:180,labelBBox:{x:67,y:63,width:186,height:48}}],edges:[{id:"13dald4",source:"edp.velero.velero",target:"edp.minio",label:"store backups",dotpos:"e,626.02,384.17 626.02,241.13 626.02,282.33 626.02,331.44 626.02,373.83",points:[[626,241],[626,282],[626,331],[626,374]],labelBBox:{x:627,y:301,width:91,height:18},parent:null,relations:["1mazt1x"],color:"gray",line:"dashed",head:"normal"},{id:"mcc3r",source:"edp.ingressNginx",target:"edp.minio",label:"https",dotpos:"e,466.11,474 319.74,474 363.61,474 411.35,474 455.79,474",points:[[320,474],[364,474],[411,474],[456,474]],labelBBox:{x:376,y:448,width:34,height:18},parent:null,relations:["fe65w2"],color:"gray",line:"dashed",head:"normal"}]},minio:{_type:"element",tags:null,links:null,viewOf:"edp.minio",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Minio",id:"minio",autoLayout:{direction:"TB"},hash:"0fb400499e182662d442885af28e9f6c9738a4da",bounds:{x:0,y:0,width:750,height:544},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["jfb4ud"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:0,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.velero",parent:null,level:0,children:[],inEdges:[],outEdges:["wqj1c3"],title:"Velero",modelRef:"edp.velero",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Backup Kubernetes resources"},tags:["internal"],kind:"container",navigateTo:"velero",x:430,y:0,width:320,height:180,labelBBox:{x:58,y:63,width:205,height:48}},{id:"edp.minio",parent:null,level:0,children:["edp.minio.minio"],inEdges:["jfb4ud","wqj1c3"],outEdges:[],title:"Minio",modelRef:"edp.minio",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"S3 compatible blob storage"},tags:[],kind:"container",depth:1,x:183,y:271,width:384,height:265,labelBBox:{x:6,y:0,width:36,height:15}},{id:"edp.minio.minio",parent:"edp.minio",level:1,children:[],inEdges:["jfb4ud","wqj1c3"],outEdges:[],title:"S3 Blob Storage",modelRef:"edp.minio.minio",shape:"storage",color:"primary",style:{opacity:15,size:"md"},tags:[],technology:"Minio",kind:"component",x:215,y:324,width:320,height:180,labelBBox:{x:85,y:64,width:150,height:46}}],edges:[{id:"jfb4ud",source:"edp.ingressNginx",target:"edp.minio.minio",label:"https",dotpos:"e,314.96,323.05 219.34,179.84 247.25,221.64 280.62,271.62 309.29,314.56",points:[[219,180],[247,222],[281,272],[309,315]],labelBBox:{x:275,y:240,width:34,height:18},parent:null,relations:["fe65w2"],color:"gray",line:"dashed",head:"normal"},{id:"wqj1c3",source:"edp.velero",target:"edp.minio.minio",label:"store backups",dotpos:"e,435.08,323.05 530.7,179.84 502.79,221.64 469.42,271.62 440.75,314.56",points:[[531,180],[503,222],[469,272],[441,315]],labelBBox:{x:490,y:240,width:91,height:18},parent:null,relations:["1mazt1x"],color:"gray",line:"dashed",head:"normal"}]},monitoring:{_type:"element",tags:null,links:null,viewOf:"edp.monitoring",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Monitoring",id:"monitoring",autoLayout:{direction:"TB"},hash:"0eedaf64b05f32fb962d9b885c9c7febad53741c",bounds:{x:0,y:0,width:878,height:645},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["j52jq6","15c9gki"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:510,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.monitoring",parent:null,level:0,children:["edp.monitoring.loki","edp.monitoring.alloy"],inEdges:["j52jq6","15c9gki"],outEdges:[],title:"Monitoring",modelRef:"edp.monitoring",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Observability system to monitor deployed components"},tags:[],kind:"container",depth:2,x:8,y:271,width:862,height:366,labelBBox:{x:6,y:0,width:75,height:15}},{id:"edp.monitoring.loki",parent:"edp.monitoring",level:1,children:["edp.monitoring.loki.queryFrontend"],inEdges:["15c9gki"],outEdges:[],title:"Loki",modelRef:"edp.monitoring.loki",shape:"rectangle",color:"primary",icon:"tech:grafana",style:{opacity:20,size:"md"},description:{txt:"Log aggregation system"},tags:[],kind:"container",depth:1,x:48,y:332,width:384,height:265,labelBBox:{x:6,y:0,width:30,height:15}},{id:"edp.monitoring.alloy",parent:"edp.monitoring",level:1,children:[],inEdges:["j52jq6"],outEdges:[],title:"Alloy",modelRef:"edp.monitoring.alloy",shape:"rectangle",color:"primary",icon:"tech:grafana",style:{opacity:15,size:"md",multiple:!0},description:{txt:"Open Telemetry Collector"},tags:[],kind:"component",x:510,y:385,width:320,height:180,labelBBox:{x:59,y:63,width:233,height:48}},{id:"edp.monitoring.loki.queryFrontend",parent:"edp.monitoring.loki",level:2,children:[],inEdges:["15c9gki"],outEdges:[],title:"Query Frontend",modelRef:"edp.monitoring.loki.queryFrontend",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:80,y:385,width:320,height:180,labelBBox:{x:88,y:74,width:144,height:24}}],edges:[{id:"j52jq6",source:"edp.ingressNginx",target:"edp.monitoring.alloy",label:"https",dotpos:"e,670,385.47 670,179.88 670,238.29 670,314.8 670,375.17",points:[[670,180],[670,238],[670,315],[670,375]],labelBBox:{x:671,y:240,width:34,height:18},parent:null,relations:["1jvab2g"],color:"gray",line:"dashed",head:"normal"},{id:"15c9gki",source:"edp.ingressNginx",target:"edp.monitoring.loki.queryFrontend",label:"https",dotpos:"e,302.37,385.41 521.62,179.94 481.62,206.88 439.6,238.08 404,270.8 369.46,302.55 336.06,341.85 308.52,377.41",points:[[522,180],[482,207],[440,238],[404,271],[369,303],[336,342],[309,377]],labelBBox:{x:438,y:240,width:34,height:18},parent:null,relations:["fs60l7"],color:"gray",line:"dashed",head:"normal"}]},ingressNginx:{_type:"element",tags:null,links:null,viewOf:"edp.ingressNginx",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Ingress",id:"ingressNginx",autoLayout:{direction:"TB"},hash:"7a821addac59ba362551aa1d990ed1be9968679c",bounds:{x:0,y:0,width:3780,height:564},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:["edp.ingressNginx.ingressNginx"],inEdges:[],outEdges:["1poylyw","llqgvs","75xltk","dh7ut5","1bv0wod","68hu20","nx2xew","momp7g","8cmkj7"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",depth:1,x:1708,y:8,width:384,height:265,labelBBox:{x:6,y:0,width:54,height:15}},{id:"edp.ingressNginx.ingressNginx",parent:"edp.ingressNginx",level:1,children:[],inEdges:[],outEdges:["1poylyw","llqgvs","75xltk","dh7ut5","1bv0wod","68hu20","nx2xew","momp7g","8cmkj7"],title:"ingress-nginx",modelRef:"edp.ingressNginx.ingressNginx",shape:"rectangle",color:"primary",icon:"tech:nginx",style:{opacity:15,size:"md"},tags:[],technology:"Nginx",kind:"component",x:1740,y:61,width:320,height:180,labelBBox:{x:85,y:64,width:181,height:46}},{id:"edp.argoCD",parent:null,level:0,children:[],inEdges:["1poylyw"],outEdges:[],title:"ArgoCD",modelRef:"edp.argoCD",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"GitOps Service"},tags:[],kind:"container",navigateTo:"argoCD",x:0,y:384,width:320,height:180,labelBBox:{x:108,y:63,width:105,height:48}},{id:"edp.ui",parent:null,level:0,children:[],inEdges:["llqgvs"],outEdges:[],title:"Backstage",modelRef:"edp.ui",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Developer Portal"},tags:[],kind:"container",x:430,y:384,width:320,height:180,labelBBox:{x:102,y:63,width:116,height:48}},{id:"edp.forgejo",parent:null,level:0,children:[],inEdges:["75xltk"],outEdges:[],title:"Forgejo",modelRef:"edp.forgejo",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:20,size:"md"},description:{txt:`Fully managed DevOps Platform +offering capabilities like +code version controling +collaboration and ticketing +and security scanning`},tags:[],technology:"Golang",kind:"container",navigateTo:"forgejo",x:860,y:384,width:340,height:180,labelBBox:{x:46,y:17,width:278,height:139}},{id:"edp.keycloak",parent:null,level:0,children:[],inEdges:["dh7ut5"],outEdges:[],title:"Keycloak",modelRef:"edp.keycloak",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Single Sign On for all EDP products"},tags:[],kind:"container",navigateTo:"keycloak",x:1310,y:384,width:320,height:180,labelBBox:{x:39,y:63,width:242,height:48}},{id:"edp.mailhog",parent:null,level:0,children:[],inEdges:["1bv0wod"],outEdges:[],title:"Mailhog",modelRef:"edp.mailhog",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Web and API based SMTP testing"},tags:[],kind:"container",navigateTo:"mailhog",x:1740,y:384,width:320,height:180,labelBBox:{x:44,y:63,width:232,height:48}},{id:"edp.minio",parent:null,level:0,children:[],inEdges:["68hu20"],outEdges:[],title:"Minio",modelRef:"edp.minio",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"S3 compatible blob storage"},tags:[],kind:"container",navigateTo:"minio",x:2170,y:384,width:320,height:180,labelBBox:{x:67,y:63,width:186,height:48}},{id:"edp.monitoring",parent:null,level:0,children:[],inEdges:["nx2xew"],outEdges:[],title:"Monitoring",modelRef:"edp.monitoring",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Observability system to monitor deployed components"},tags:[],kind:"container",navigateTo:"monitoring",x:2600,y:384,width:320,height:180,labelBBox:{x:21,y:54,width:278,height:66}},{id:"edp.openbao",parent:null,level:0,children:[],inEdges:["momp7g"],outEdges:[],title:"OpenBao",modelRef:"edp.openbao",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Secure secret storage"},tags:[],kind:"container",x:3030,y:384,width:320,height:180,labelBBox:{x:85,y:63,width:151,height:48}},{id:"edp.testApp",parent:null,level:0,children:[],inEdges:["8cmkj7"],outEdges:[],title:"Fibonacci",modelRef:"edp.testApp",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Testapp to validate deployments"},tags:[],kind:"container",navigateTo:"testapp",x:3460,y:384,width:320,height:180,labelBBox:{x:50,y:63,width:220,height:48}}],edges:[{id:"1poylyw",source:"edp.ingressNginx.ingressNginx",target:"edp.argoCD",label:"https",dotpos:"e,319.96,401.87 1740.1,163.73 1459.5,186.77 861.79,248.41 375.02,384 360.03,388.17 344.69,393.11 329.44,398.47",points:[[1740,164],[1459,187],[862,248],[375,384],[360,388],[345,393],[329,398]],labelBBox:{x:704,y:301,width:34,height:18},parent:null,relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"llqgvs",source:"edp.ingressNginx.ingressNginx",target:"edp.ui",label:"https",dotpos:"e,749.97,403.03 1740.4,176.52 1525.1,211.47 1131,282.97 805.02,384 790.08,388.63 774.74,393.9 759.47,399.5",points:[[1740,177],[1525,211],[1131,283],[805,384],[790,389],[775,394],[759,400]],labelBBox:{x:1102,y:301,width:34,height:18},parent:null,relations:["v8c8aq"],color:"gray",line:"dashed",head:"normal"},{id:"75xltk",source:"edp.ingressNginx.ingressNginx",target:"edp.forgejo",label:"https",dotpos:"e,1200.3,405 1740.1,208.08 1609.3,254.18 1419.6,321.88 1255,384 1240.3,389.56 1225.1,395.4 1209.8,401.31",points:[[1740,208],[1609,254],[1420,322],[1255,384],[1240,390],[1225,395],[1210,401]],labelBBox:{x:1468,y:301,width:34,height:18},parent:null,relations:["123efwn"],color:"gray",line:"dashed",head:"normal"},{id:"dh7ut5",source:"edp.ingressNginx.ingressNginx",target:"edp.keycloak",label:"https",dotpos:"e,1589.1,384.17 1780.8,241.13 1723.7,283.73 1655.3,334.77 1597.2,378.11",points:[[1781,241],[1724,284],[1655,335],[1597,378]],labelBBox:{x:1699,y:301,width:34,height:18},parent:null,relations:["h3rut2"],color:"gray",line:"dashed",head:"normal"},{id:"1bv0wod",source:"edp.ingressNginx.ingressNginx",target:"edp.mailhog",label:"https",dotpos:"e,1900,384.17 1900,241.13 1900,282.33 1900,331.44 1900,373.83",points:[[1900,241],[1900,282],[1900,331],[1900,374]],labelBBox:{x:1901,y:301,width:34,height:18},parent:null,relations:["ofdedh"],color:"gray",line:"dashed",head:"normal"},{id:"68hu20",source:"edp.ingressNginx.ingressNginx",target:"edp.minio",label:"https",dotpos:"e,2211,384.17 2019.2,241.13 2076.3,283.73 2144.7,334.77 2202.8,378.11",points:[[2019,241],[2076,284],[2145,335],[2203,378]],labelBBox:{x:2129,y:301,width:34,height:18},parent:null,relations:["fe65w2"],color:"gray",line:"dashed",head:"normal"},{id:"nx2xew",source:"edp.ingressNginx.ingressNginx",target:"edp.monitoring",label:"https",dotpos:"e,2600.1,405.82 2059.8,207.26 2190.8,252.97 2380.8,320.52 2545,384 2559.8,389.73 2575.2,395.8 2590.5,401.97",points:[[2060,207],[2191,253],[2381,321],[2545,384],[2560,390],[2575,396],[2591,402]],labelBBox:{x:2370,y:301,width:34,height:18},parent:null,relations:["1jvab2g","fs60l7"],color:"gray",line:"dashed",head:"normal"},{id:"momp7g",source:"edp.ingressNginx.ingressNginx",target:"edp.openbao",label:"https",dotpos:"e,3030,403.09 2059.9,177.4 2271.9,212.91 2656.5,284.63 2975,384 2990,388.66 3005.3,393.94 3020.6,399.56",points:[[2060,177],[2272,213],[2657,285],[2975,384],[2990,389],[3005,394],[3021,400]],labelBBox:{x:2744,y:301,width:34,height:18},parent:null,relations:["1p30hav"],color:"gray",line:"dashed",head:"normal"},{id:"8cmkj7",source:"edp.ingressNginx.ingressNginx",target:"edp.testApp",label:"https",dotpos:"e,3460.1,401.91 2060,164.18 2337.9,187.76 2925.9,250.03 3405,384 3420,388.19 3435.3,393.13 3450.6,398.51",points:[[2060,164],[2338,188],[2926,250],[3405,384],[3420,388],[3435,393],[3451,399]],labelBBox:{x:3165,y:301,width:34,height:18},parent:null,relations:["1i5f8um"],color:"gray",line:"dashed",head:"normal"}]},testapp:{_type:"element",tags:null,links:null,viewOf:"edp.testApp",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Fibonacci",id:"testapp",autoLayout:{direction:"TB"},hash:"d8f40f5cfab10e6e91c79feeef6be3240922c723",bounds:{x:0,y:0,width:400,height:544},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["1tefjx2"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:40,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.testApp",parent:null,level:0,children:["edp.testApp.fibonacci"],inEdges:["1tefjx2"],outEdges:[],title:"Fibonacci",modelRef:"edp.testApp",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Testapp to validate deployments"},tags:[],kind:"container",depth:1,x:8,y:271,width:384,height:265,labelBBox:{x:6,y:0,width:65,height:15}},{id:"edp.testApp.fibonacci",parent:"edp.testApp",level:1,children:[],inEdges:["1tefjx2"],outEdges:[],title:"Fibonacci",modelRef:"edp.testApp.fibonacci",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:15,size:"md"},tags:[],technology:"Golang",kind:"component",x:40,y:324,width:320,height:180,labelBBox:{x:101,y:64,width:148,height:46}}],edges:[{id:"1tefjx2",source:"edp.ingressNginx",target:"edp.testApp.fibonacci",label:"https",dotpos:"e,200,324.17 200,179.84 200,221.37 200,270.98 200,313.74",points:[[200,180],[200,221],[200,271],[200,314]],labelBBox:{x:201,y:240,width:34,height:18},parent:null,relations:["1i5f8um"],color:"gray",line:"dashed",head:"normal"}]},mailhog:{_type:"element",tags:null,links:null,viewOf:"edp.mailhog",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Mailhog",id:"mailhog",autoLayout:{direction:"TB"},hash:"b9e703c2ceb2b2a400194d90ac7caa94525ac068",bounds:{x:0,y:0,width:400,height:544},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["axipfp"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:40,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.mailhog",parent:null,level:0,children:["edp.mailhog.mailhog"],inEdges:["axipfp"],outEdges:[],title:"Mailhog",modelRef:"edp.mailhog",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Web and API based SMTP testing"},tags:[],kind:"container",depth:1,x:8,y:271,width:384,height:265,labelBBox:{x:6,y:0,width:56,height:15}},{id:"edp.mailhog.mailhog",parent:"edp.mailhog",level:1,children:[],inEdges:["axipfp"],outEdges:[],title:"Mailhog",modelRef:"edp.mailhog.mailhog",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:15,size:"md"},tags:[],technology:"Golang",kind:"component",x:40,y:324,width:320,height:180,labelBBox:{x:109,y:64,width:132,height:46}}],edges:[{id:"axipfp",source:"edp.ingressNginx",target:"edp.mailhog.mailhog",label:"https",dotpos:"e,200,324.17 200,179.84 200,221.37 200,270.98 200,313.74",points:[[200,180],[200,221],[200,271],[200,314]],labelBBox:{x:201,y:240,width:34,height:18},parent:null,relations:["ofdedh"],color:"gray",line:"dashed",head:"normal"}]},spark:{_type:"element",tags:null,links:null,viewOf:"edp.spark",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"Spark",id:"spark",autoLayout:{direction:"TB"},hash:"1ec41779bad408405a96c4063aa06b24ec2aace8",bounds:{x:0,y:0,width:400,height:281},nodes:[{id:"edp.spark",parent:null,level:0,children:["edp.spark.sparkoperator"],inEdges:[],outEdges:[],title:"Spark",modelRef:"edp.spark",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Allows running Spark applications on K8s"},tags:["internal"],kind:"container",depth:1,x:8,y:8,width:384,height:265,labelBBox:{x:6,y:0,width:43,height:15}},{id:"edp.spark.sparkoperator",parent:"edp.spark",level:1,children:[],inEdges:[],outEdges:[],title:"Spark Operator",modelRef:"edp.spark.sparkoperator",shape:"rectangle",color:"primary",icon:"tech:spark",style:{opacity:15,size:"md"},tags:[],technology:"Spark",kind:"component",x:40,y:61,width:320,height:180,labelBBox:{x:76,y:64,width:198,height:46}}],edges:[]},argoCD:{_type:"element",tags:null,links:null,viewOf:"edp.argoCD",_stage:"layouted",sourcePath:"views/edp/edp.c4",description:null,title:"ArgoCD",id:"argoCD",autoLayout:{direction:"TB"},hash:"53d798ca0a34dbe3ebf9b43318a151943ecaec33",bounds:{x:0,y:0,width:2058,height:883},nodes:[{id:"edp.ingressNginx",parent:null,level:0,children:[],inEdges:[],outEdges:["ce0h9c"],title:"Ingress",modelRef:"edp.ingressNginx",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"Ingress Controller for incoming http(s) traffic"},tags:["internal"],kind:"container",navigateTo:"ingressNginx",x:48,y:0,width:320,height:180,labelBBox:{x:33,y:54,width:255,height:66}},{id:"edp.argoCD",parent:null,level:0,children:["edp.argoCD.argocdServer","edp.argoCD.argocdAppController","edp.argoCD.argocdAppSetController","edp.argoCD.argocdRepoServer","edp.argoCD.argocdRedis"],inEdges:["ce0h9c"],outEdges:["1e5s57z"],title:"ArgoCD",modelRef:"edp.argoCD",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"GitOps Service"},tags:[],kind:"container",depth:1,x:8,y:271,width:1690,height:604,labelBBox:{x:6,y:0,width:53,height:15}},{id:"edp.argoCD.argocdServer",parent:"edp.argoCD",level:1,children:[],inEdges:["ce0h9c"],outEdges:["124uc06"],title:"ArgoCD Server",modelRef:"edp.argoCD.argocdServer",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:48,y:332,width:320,height:180,labelBBox:{x:90,y:74,width:140,height:24}},{id:"edp.argoCD.argocdAppController",parent:"edp.argoCD",level:1,children:[],inEdges:[],outEdges:["doh0se"],title:"ApplicationController",modelRef:"edp.argoCD.argocdAppController",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:478,y:332,width:320,height:180,labelBBox:{x:66,y:74,width:189,height:24}},{id:"edp.argoCD.argocdAppSetController",parent:"edp.argoCD",level:1,children:[],inEdges:[],outEdges:["ekc7mk"],title:"ApplicationSeetController",modelRef:"edp.argoCD.argocdAppSetController",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:908,y:332,width:320,height:180,labelBBox:{x:45,y:74,width:230,height:24}},{id:"edp.argoCD.argocdRepoServer",parent:"edp.argoCD",level:1,children:[],inEdges:[],outEdges:["173l3xq","1e5s57z"],title:"Repo Server",modelRef:"edp.argoCD.argocdRepoServer",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},tags:[],kind:"component",x:1338,y:332,width:320,height:180,labelBBox:{x:102,y:74,width:116,height:24}},{id:"edp.argoCD.argocdRedis",parent:"edp.argoCD",level:1,children:[],inEdges:["124uc06","doh0se","ekc7mk","173l3xq"],outEdges:[],title:"Redis",modelRef:"edp.argoCD.argocdRedis",shape:"rectangle",color:"primary",icon:"tech:redis",style:{opacity:15,size:"md"},tags:[],technology:"Redis",kind:"component",x:693,y:655,width:320,height:180,labelBBox:{x:118,y:64,width:114,height:46}},{id:"edp.forgejogit",parent:null,level:0,children:[],inEdges:["1e5s57z"],outEdges:[],title:"ForgejoGit",modelRef:"edp.forgejogit",shape:"rectangle",color:"primary",icon:"tech:git",style:{opacity:15,size:"md"},tags:[],kind:"component",x:1738,y:655,width:320,height:180,labelBBox:{x:97,y:74,width:156,height:24}}],edges:[{id:"ce0h9c",source:"edp.ingressNginx",target:"edp.argoCD.argocdServer",label:"https",dotpos:"e,208,332.26 208,179.87 208,223.7 208,276.72 208,321.86",points:[[208,180],[208,224],[208,277],[208,322]],labelBBox:{x:209,y:240,width:34,height:18},parent:null,relations:["1yssos5"],color:"gray",line:"dashed",head:"normal"},{id:"124uc06",source:"edp.argoCD.argocdServer",target:"edp.argoCD.argocdRedis",label:"read/write",dotpos:"e,693.08,664.26 367.85,502.5 463.9,550.27 586.02,611.01 683.7,659.6",points:[[368,503],[464,550],[586,611],[684,660]],labelBBox:{x:551,y:572,width:65,height:18},parent:"edp.argoCD",relations:["yfhhi5"],color:"gray",line:"dashed",head:"normal"},{id:"doh0se",source:"edp.argoCD.argocdAppController",target:"edp.argoCD.argocdRedis",label:"read/write",dotpos:"e,782.56,654.82 687.71,511.63 703.62,538.73 721.74,568.36 739.53,594.8 751,611.84 763.71,629.54 776.36,646.54",points:[[688,512],[704,539],[722,568],[740,595],[751,612],[764,630],[776,647]],labelBBox:{x:741,y:572,width:65,height:18},parent:"edp.argoCD",relations:["10vkxaf"],color:"gray",line:"dashed",head:"normal"},{id:"ekc7mk",source:"edp.argoCD.argocdAppSetController",target:"edp.argoCD.argocdRedis",label:"read/write",dotpos:"e,912.53,654.97 1008.4,511.93 980.43,553.66 947.04,603.49 918.38,646.24",points:[[1008,512],[980,554],[947,603],[918,646]],labelBBox:{x:968,y:572,width:65,height:18},parent:"edp.argoCD",relations:["i8z0mi"],color:"gray",line:"dashed",head:"normal"},{id:"173l3xq",source:"edp.argoCD.argocdRepoServer",target:"edp.argoCD.argocdRedis",label:"read/write",dotpos:"e,1012.9,664.26 1338.1,502.5 1242.1,550.27 1120,611.01 1022.3,659.6",points:[[1338,503],[1242,550],[1120,611],[1022,660]],labelBBox:{x:1196,y:572,width:65,height:18},parent:"edp.argoCD",relations:["iullhy"],color:"gray",line:"dashed",head:"normal"},{id:"1e5s57z",source:"edp.argoCD.argocdRepoServer",target:"edp.forgejogit",label:"Syncs git repo",dotpos:"e,1787.2,654.97 1608.9,511.93 1661.9,554.44 1725.4,605.36 1779.3,648.64",points:[[1609,512],[1662,554],[1725,605],[1779,649]],labelBBox:{x:1711,y:572,width:93,height:18},parent:null,relations:["6mupa0"],color:"gray",line:"dashed",head:"normal"}]},idp:{_type:"element",tags:null,links:null,viewOf:"edp",_stage:"layouted",sourcePath:"views/edp/edp-as-idp.c4",description:null,title:"EDP as IDP",id:"idp",autoLayout:{direction:"TB"},hash:"d1e4c998ee263bce5b2572834b6a9a7b6d6391f5",bounds:{x:0,y:0,width:6408,height:1862},nodes:[{id:"developer",parent:null,level:0,children:[],inEdges:[],outEdges:["1w9cpb2","1y3lcyj","1agven9","1nv0w41","3nxrq7","bfgapq"],title:"Developer",modelRef:"developer",shape:"person",color:"green",style:{opacity:25,size:"xl"},description:{txt:"The regular user of the platform"},tags:[],kind:"actor",x:5888,y:192,width:520,height:290,labelBBox:{x:111,y:108,width:298,height:64}},{id:"@gr1",parent:null,kind:"@group",title:"EDP",color:"primary",shape:"rectangle",children:["@gr2","@gr5","@gr6","@gr7"],inEdges:["1w9cpb2","1y3lcyj","1agven9","1nv0w41","3nxrq7","bfgapq"],outEdges:[],level:0,depth:3,tags:[],style:{border:"dashed",opacity:15},x:8,y:8,width:5840,height:1846,labelBBox:{x:6,y:0,width:27,height:15}},{id:"@gr2",parent:"@gr1",kind:"@group",title:"Developer Control Plane",color:"primary",shape:"rectangle",children:["@gr3","@gr4"],inEdges:["1w9cpb2","1y3lcyj","1agven9"],outEdges:[],level:0,depth:2,tags:[],style:{border:"dashed",opacity:15},x:48,y:69,width:2580,height:935,labelBBox:{x:6,y:0,width:170,height:15}},{id:"@gr3",parent:"@gr2",kind:"@group",title:"Frontend",color:"primary",shape:"rectangle",children:["edp.ui.backstage","edp.api"],inEdges:["1w9cpb2","1y3lcyj"],outEdges:[],level:0,depth:1,tags:[],style:{border:"dashed",opacity:15},x:1358,y:572,width:1230,height:392,labelBBox:{x:6,y:0,width:65,height:15}},{id:"@gr4",parent:"@gr2",kind:"@group",title:"Version Control",color:"primary",shape:"rectangle",children:["applicationspecification.application_gitrepo","applicationspecification.applicationspec_gitrepo","edp.forgejogit"],inEdges:["1agven9"],outEdges:[],level:0,depth:1,tags:[],style:{border:"dashed",opacity:15},x:88,y:130,width:1230,height:834,labelBBox:{x:6,y:0,width:111,height:15}},{id:"@gr5",parent:"@gr1",kind:"@group",title:"Integration & Delivery Plane",color:"primary",shape:"rectangle",children:["forgejoRunner","edp.imageregistry","edp.argoCD"],inEdges:["1nv0w41"],outEdges:[],level:0,depth:1,tags:[],style:{border:"dashed",opacity:15},x:3308,y:572,width:600,height:1242,labelBBox:{x:6,y:0,width:189,height:15}},{id:"@gr6",parent:"@gr1",kind:"@group",title:"Monitoring Plane",color:"primary",shape:"rectangle",children:["edp.monitoring","edp.grafana"],inEdges:["3nxrq7"],outEdges:[],level:0,depth:1,tags:[],style:{border:"dashed",opacity:15},x:2668,y:130,width:600,height:834,labelBBox:{x:6,y:0,width:116,height:15}},{id:"@gr7",parent:"@gr1",kind:"@group",title:"Security Plane",color:"primary",shape:"rectangle",children:["edp.keycloak","edp.kyverno","edp.externalSecrets","edp.openbao"],inEdges:["bfgapq"],outEdges:[],level:0,depth:1,tags:[],style:{border:"dashed",opacity:15},x:3948,y:572,width:1860,height:831,labelBBox:{x:6,y:0,width:100,height:15}},{id:"edp.ui.backstage",parent:"@gr3",level:1,children:[],inEdges:["1w9cpb2"],outEdges:[],title:"Backstage",modelRef:"edp.ui.backstage",shape:"browser",color:"primary",icon:"tech:react",style:{opacity:25,size:"xl"},tags:[],kind:"component",x:1398,y:634,width:520,height:290,labelBBox:{x:179,y:123,width:192,height:32}},{id:"edp.api",parent:"@gr3",level:1,children:[],inEdges:["1y3lcyj"],outEdges:[],title:"API",modelRef:"edp.api",shape:"rectangle",color:"primary",icon:"tech:swagger",style:{opacity:25,size:"xl"},description:{txt:"API for the EDP platform"},tags:[],kind:"container",x:2028,y:634,width:520,height:290,labelBBox:{x:129,y:108,width:292,height:64}},{id:"applicationspecification.application_gitrepo",parent:"@gr4",level:1,children:[],inEdges:[],outEdges:[],title:"Git App Repo",modelRef:"applicationspecification.application_gitrepo",shape:"rectangle",color:"primary",icon:"tech:git",style:{opacity:25,size:"xl"},description:{txt:"Git Application Repository"},tags:[],technology:"Git",kind:"component",x:128,y:192,width:520,height:290,labelBBox:{x:123,y:96,width:304,height:89}},{id:"applicationspecification.applicationspec_gitrepo",parent:"@gr4",level:1,children:[],inEdges:[],outEdges:[],title:"Git AppSpec Repo",modelRef:"applicationspecification.applicationspec_gitrepo",shape:"rectangle",color:"primary",icon:"tech:git",style:{opacity:25,size:"xl"},description:{txt:"Git Application Specification Repository"},tags:[],technology:"Git",kind:"component",x:128,y:634,width:520,height:290,labelBBox:{x:114,y:83,width:322,height:114}},{id:"edp.forgejogit",parent:"@gr4",level:1,children:[],inEdges:["1agven9"],outEdges:[],title:"ForgejoGit",modelRef:"edp.forgejogit",shape:"rectangle",color:"primary",icon:"tech:git",style:{opacity:25,size:"xl"},tags:[],kind:"component",x:758,y:634,width:520,height:290,labelBBox:{x:179,y:123,width:192,height:32}},{id:"forgejoRunner",parent:"@gr5",level:1,children:[],inEdges:[],outEdges:[],title:"Forgejo Runner",modelRef:"forgejoRunner",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],kind:"component",x:3348,y:1073,width:520,height:290,labelBBox:{x:69,y:71,width:382,height:139}},{id:"edp.imageregistry",parent:"@gr5",level:1,children:[],inEdges:["1nv0w41"],outEdges:[],title:"Forgejo OCI Image Registry",modelRef:"edp.imageregistry",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:25,size:"xl"},description:{txt:"Container Image Registry"},tags:[],technology:"Golang",kind:"component",x:3348,y:634,width:520,height:290,labelBBox:{x:70,y:96,width:410,height:89}},{id:"edp.argoCD",parent:"@gr5",level:1,children:[],inEdges:[],outEdges:[],title:"ArgoCD",modelRef:"edp.argoCD",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"GitOps Service"},tags:[],kind:"container",navigateTo:"argoCD",x:3348,y:1484,width:520,height:290,labelBBox:{x:187,y:108,width:145,height:64}},{id:"edp.monitoring",parent:"@gr6",level:1,children:[],inEdges:[],outEdges:[],title:"Monitoring",modelRef:"edp.monitoring",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Observability system to monitor deployed components"},tags:[],kind:"container",navigateTo:"monitoring",x:2708,y:192,width:520,height:290,labelBBox:{x:66,y:96,width:388,height:88}},{id:"edp.grafana",parent:"@gr6",level:1,children:[],inEdges:["3nxrq7"],outEdges:[],title:"Grafana",modelRef:"edp.grafana",shape:"rectangle",color:"primary",icon:"tech:grafana",style:{opacity:25,size:"xl"},description:{txt:"Data visualization and monitoring"},tags:[],kind:"container",x:2708,y:634,width:520,height:290,labelBBox:{x:89,y:108,width:372,height:64}},{id:"edp.keycloak",parent:"@gr7",level:1,children:[],inEdges:["bfgapq"],outEdges:[],title:"Keycloak",modelRef:"edp.keycloak",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Single Sign On for all EDP products"},tags:[],kind:"container",navigateTo:"keycloak",x:5248,y:634,width:520,height:290,labelBBox:{x:92,y:108,width:337,height:64}},{id:"edp.kyverno",parent:"@gr7",level:1,children:[],inEdges:[],outEdges:[],title:"Kyverno",modelRef:"edp.kyverno",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Policy-as-Code"},tags:["internal"],kind:"container",x:3988,y:634,width:520,height:290,labelBBox:{x:187,y:108,width:146,height:64}},{id:"edp.externalSecrets",parent:"@gr7",level:1,children:[],inEdges:[],outEdges:[],title:"external-secrets",modelRef:"edp.externalSecrets",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Provider to access externally stored Kubernetes secrets"},tags:["internal"],kind:"container",navigateTo:"externalSecrets",x:4618,y:634,width:520,height:290,labelBBox:{x:92,y:96,width:337,height:88}},{id:"edp.openbao",parent:"@gr7",level:1,children:[],inEdges:[],outEdges:[],title:"OpenBao",modelRef:"edp.openbao",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Secure secret storage"},tags:[],kind:"container",x:3988,y:1073,width:520,height:290,labelBBox:{x:155,y:108,width:209,height:64}}],edges:[{id:"1w9cpb2",source:"developer",target:"edp.ui.backstage",label:"create and maintain apps",dotpos:"e,1840.8,633.87 5888.3,380.18 5537.3,435.39 4891.5,528.84 4336,564.42 4303.2,566.51 2004.4,563.02 1973,572.42 1930.6,585.1 1888.5,605.48 1849.6,628.59",points:[[5888,380],[5537,435],[4891,529],[4336,564],[4303,567],[2004,563],[1973,572],[1931,585],[1888,605],[1850,629]],labelBBox:{x:4585,y:541,width:161,height:18},parent:null,relations:["1woleh6"],color:"gray",line:"dashed",head:"normal"},{id:"1y3lcyj",source:"developer",target:"edp.api",label:"uses API",dotpos:"e,2494.7,633.74 5888.2,397.27 5631.2,453.06 5225.9,532.44 4870,564.42 4839.2,567.19 2670.9,564.31 2641,572.42 2594.4,585.07 2547.6,605.53 2504,628.75",points:[[5888,397],[5631,453],[5226,532],[4870,564],[4839,567],[2671,564],[2641,572],[2594,585],[2548,606],[2504,629]],labelBBox:{x:5046,y:541,width:60,height:18},parent:null,relations:["1l9a3pd"],color:"gray",line:"dashed",head:"normal"},{id:"1agven9",source:"developer",target:"edp.forgejogit",label:"uses git",dotpos:"e,1199.9,633.62 5888.4,368.77 5435.9,421.39 4472.9,525.91 3656,564.42 3623.7,565.94 1361.9,563.12 1331,572.42 1288.9,585.06 1247.2,605.35 1208.6,628.36",points:[[5888,369],[5436,421],[4473,526],[3656,564],[3624,566],[1362,563],[1331,572],[1289,585],[1247,605],[1209,628]],labelBBox:{x:3997,y:541,width:52,height:18},parent:null,relations:["1uzzn9j"],color:"gray",line:"dashed",head:"normal"},{id:"1nv0w41",source:"developer",target:"edp.imageregistry",label:"pushes and pull images",dotpos:"e,3790,633.69 5888.3,438.36 5749.8,486.81 5575.2,539.64 5414,564.42 5373,570.72 3960.7,560.44 3921,572.42 3878.9,585.1 3837.2,605.41 3798.7,628.42",points:[[5888,438],[5750,487],[5575,540],[5414,564],[5373,571],[3961,560],[3921,572],[3879,585],[3837,605],[3799,628]],labelBBox:{x:5518,y:541,width:151,height:18},parent:null,relations:["177bm2y"],color:"gray",line:"dashed",head:"normal"},{id:"3nxrq7",source:"developer",target:"edp.grafana",label:"monitors",dotpos:"e,3150,633.65 5888.1,415.01 5693.7,468.76 5420.3,535.68 5175,564.42 5122.7,570.54 3331.4,557.26 3281,572.42 3238.9,585.08 3197.2,605.37 3158.6,628.38",points:[[5888,415],[5694,469],[5420,536],[5175,564],[5123,571],[3331,557],[3281,572],[3239,585],[3197,605],[3159,628]],labelBBox:{x:5310,y:541,width:58,height:18},parent:null,relations:["1xiorre"],color:"gray",line:"dashed",head:"normal"},{id:"bfgapq",source:"developer",target:"edp.keycloak",label:"authenticates",dotpos:"e,5717.2,633.79 5938.9,481.38 5870.6,528.36 5794.5,580.63 5725.6,628.03",points:[[5939,481],[5871,528],[5795,581],[5726,628]],labelBBox:{x:5848,y:541,width:87,height:18},parent:null,relations:["jpl8ll"],color:"gray",line:"dashed",head:"normal"}]},edporchestrator:{_type:"element",tags:null,links:null,viewOf:"edp",_stage:"layouted",sourcePath:"views/edp/edp-as-orchestrator.c4",description:null,title:"EDP as Orchestrator",id:"edporchestrator",autoLayout:{direction:"TB"},hash:"3b527fd6f99efa02fc730d4569c0a0ccc75b4ef3",bounds:{x:0,y:0,width:846,height:1457},nodes:[{id:"@gr1",parent:null,kind:"@group",title:"EDP",color:"primary",shape:"rectangle",children:["@gr2","@gr3","@gr4","@gr5","@gr6"],inEdges:[],outEdges:[],level:0,depth:2,tags:[],style:{border:"dashed",opacity:15},x:8,y:8,width:830,height:1441,labelBBox:{x:6,y:0,width:27,height:15}},{id:"@gr2",parent:"@gr1",kind:"@group",title:"Developer Control Plane",color:"primary",shape:"rectangle",children:[],inEdges:[],outEdges:[],level:0,depth:0,tags:[],style:{border:"dashed",opacity:15},x:48,y:69,width:320,height:180,labelBBox:{x:49,y:74,width:222,height:24}},{id:"@gr3",parent:"@gr1",kind:"@group",title:"Integration & Delivery Plane",color:"primary",shape:"rectangle",children:[],inEdges:[],outEdges:[],level:0,depth:0,tags:[],style:{border:"dashed",opacity:15},x:478,y:69,width:320,height:180,labelBBox:{x:34,y:74,width:252,height:24}},{id:"@gr4",parent:"@gr1",kind:"@group",title:"Monitoring Plane",color:"primary",shape:"rectangle",children:[],inEdges:[],outEdges:[],level:0,depth:0,tags:[],style:{border:"dashed",opacity:15},x:48,y:369,width:320,height:180,labelBBox:{x:83,y:74,width:154,height:24}},{id:"@gr5",parent:"@gr1",kind:"@group",title:"Security Plane",color:"primary",shape:"rectangle",children:[],inEdges:[],outEdges:[],level:0,depth:0,tags:[],style:{border:"dashed",opacity:15},x:478,y:369,width:320,height:180,labelBBox:{x:94,y:74,width:133,height:24}},{id:"@gr6",parent:"@gr1",kind:"@group",title:"Backend",color:"primary",shape:"rectangle",children:["edp.argoCD","edp.crossplane"],inEdges:[],outEdges:[],level:0,depth:1,tags:[],style:{border:"dashed",opacity:15},x:198,y:608,width:600,height:801,labelBBox:{x:6,y:0,width:59,height:15}},{id:"edp.argoCD",parent:"@gr6",level:1,children:[],inEdges:[],outEdges:[],title:"ArgoCD",modelRef:"edp.argoCD",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Declarative management of platform tools"},tags:[],kind:"container",isCustomized:!0,navigateTo:"argoCD",x:238,y:669,width:520,height:290,labelBBox:{x:64,y:109,width:393,height:63}},{id:"edp.crossplane",parent:"@gr6",level:1,children:[],inEdges:[],outEdges:[],title:"Crossplane",modelRef:"edp.crossplane",shape:"rectangle",color:"primary",style:{opacity:25,size:"xl"},description:{txt:"Declarative management of ressources"},tags:["internal"],kind:"container",navigateTo:"crossplane",x:238,y:1079,width:520,height:290,labelBBox:{x:75,y:109,width:369,height:63}}],edges:[]},"application-transition":{_type:"element",tags:null,links:null,_stage:"layouted",sourcePath:"views/high-level-concept/application-transition.c4",description:null,title:"application-transistion",id:"application-transition",autoLayout:{direction:"TB"},hash:"024761d9274cbfc35558ae3606770e2c3e3afd0f",bounds:{x:0,y:0,width:1032,height:934},nodes:[{id:"@gr1",parent:null,kind:"@group",title:"developer-scope",color:"green",shape:"rectangle",children:["@gr2","@gr3","developer","otherProductLifecycleRoles"],inEdges:[],outEdges:["17brhnu"],level:0,depth:3,tags:[],style:{border:"none",opacity:20},x:8,y:8,width:1016,height:645,labelBBox:{x:6,y:0,width:114,height:15}},{id:"@gr2",parent:"@gr1",kind:"@group",title:"Devops inner-loop",color:"gray",shape:"rectangle",children:["localbox"],inEdges:["zjg544","6szgsj"],outEdges:["1uo6k6b"],level:0,depth:2,tags:[],style:{border:"none",opacity:30},x:48,y:263,width:448,height:350,labelBBox:{x:6,y:0,width:122,height:15}},{id:"@gr3",parent:"@gr1",kind:"@group",title:"Devops outer-loop",color:"gray",shape:"rectangle",children:["edp"],inEdges:["1okgiq5","1wupl5x","1uo6k6b"],outEdges:["17brhnu","6szgsj"],level:0,depth:2,tags:[],style:{border:"none",opacity:30},x:536,y:263,width:448,height:350,labelBBox:{x:6,y:0,width:126,height:15}},{id:"cloud",parent:null,level:0,children:["cloud.application"],inEdges:["17brhnu"],outEdges:[],title:"Cloud",modelRef:"cloud",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"Cloud environments"},tags:[],technology:"IaaS/PaaS",kind:"system",depth:1,x:568,y:661,width:384,height:265,labelBBox:{x:6,y:0,width:43,height:15}},{id:"cloud.application",parent:"cloud",level:1,children:[],inEdges:[],outEdges:[],title:"application",modelRef:"cloud.application",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"An application description"},tags:[],technology:"DSL",kind:"schema",x:600,y:714,width:320,height:180,labelBBox:{x:73,y:54,width:175,height:67}},{id:"developer",parent:"@gr1",level:1,children:[],inEdges:[],outEdges:["zjg544","1okgiq5"],title:"Developer",modelRef:"developer",shape:"person",color:"green",style:{opacity:15,size:"md"},description:{txt:"The regular user of the platform"},tags:[],kind:"actor",x:127,y:69,width:320,height:180,labelBBox:{x:53,y:63,width:214,height:48}},{id:"otherProductLifecycleRoles",parent:"@gr1",level:1,children:[],inEdges:[],outEdges:["1wupl5x"],title:"Reviewer, Tester, Auditors, Operators",modelRef:"otherProductLifecycleRoles",shape:"person",color:"green",style:{opacity:15,size:"md"},description:{txt:"Coworking roles in the outer loop"},tags:[],kind:"actor",x:572,y:69,width:375,height:180,labelBBox:{x:18,y:63,width:340,height:48}},{id:"localbox",parent:"@gr2",level:1,children:["localbox.application"],inEdges:["zjg544","6szgsj"],outEdges:["1uo6k6b"],title:"localbox",modelRef:"localbox",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"A local development system"},tags:[],technology:"Linux/Windows/Mac",kind:"system",depth:1,x:80,y:316,width:384,height:265,labelBBox:{x:6,y:0,width:66,height:15}},{id:"localbox.application",parent:"localbox",level:2,children:[],inEdges:[],outEdges:[],title:"application",modelRef:"localbox.application",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"An application description"},tags:[],technology:"DSL",kind:"schema",x:112,y:369,width:320,height:180,labelBBox:{x:73,y:53,width:175,height:68}},{id:"edp",parent:"@gr3",level:1,children:["edp.application"],inEdges:["1okgiq5","1wupl5x","1uo6k6b"],outEdges:["17brhnu","6szgsj"],title:"EDP",modelRef:"edp",shape:"rectangle",color:"primary",icon:"tech:kubernetes",style:{opacity:15,size:"md"},description:{txt:"EDP Edge Development Platform"},tags:[],technology:"Kubernetes",kind:"system",depth:1,navigateTo:"edp",x:568,y:316,width:384,height:265,labelBBox:{x:6,y:0,width:27,height:15}},{id:"edp.application",parent:"edp",level:2,children:[],inEdges:[],outEdges:[],title:"application",modelRef:"edp.application",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"An application description"},tags:[],technology:"DSL",kind:"schema",x:600,y:369,width:320,height:180,labelBBox:{x:73,y:53,width:175,height:68}}],edges:[{id:"zjg544",source:"developer",target:"localbox",label:"inner loop development",dotpos:"e,279.16,316 282.54,248.8 281.64,266.75 280.66,286.09 279.68,305.53",points:[[283,249],[282,267],[281,286],[280,306]],labelBBox:{x:130,y:282,width:150,height:18},parent:"@gr1",relations:["5hkplj"],color:"gray",line:"dashed",head:"normal"},{id:"1okgiq5",source:"developer",target:"edp",label:"outer loop development",dotpos:"e,572.31,316 446.79,237.41 461.91,245.66 476.86,254.19 491,262.8 515.03,277.44 539.66,293.58 563.79,310.14",points:[[447,237],[462,246],[477,254],[491,263],[515,277],[540,294],[564,310]],labelBBox:{x:360,y:252,width:150,height:18},parent:"@gr1",relations:["1pp73vj","yk9zv2","12036hb","jpl8ll","1ghp31l","1xiorre","1woleh6","177bm2y","1l9a3pd","1uzzn9j"],color:"gray",line:"dashed",head:"normal"},{id:"1wupl5x",source:"otherProductLifecycleRoles",target:"edp",label:"act according to responibility",dotpos:"e,760,316 760,248.8 760,266.75 760,286.09 760,305.53",points:[[760,249],[760,267],[760,286],[760,306]],labelBBox:{x:578,y:282,width:181,height:18},parent:"@gr1",relations:["lb4xas"],color:"gray",line:"dashed",head:"normal"},{id:"1uo6k6b",source:"localbox",target:"edp",label:"inner-outer-loop synchronization",dotpos:"e,568,459.2 464,459.2 495.2,459.2 526.41,459.2 557.62,459.2",points:[[464,459],[495,459],[526,459],[558,459]],labelBBox:{x:414,y:459,width:204,height:18},parent:"@gr1",relations:["1mp9fps"],color:"gray",line:"dashed",head:"normal"},{id:"17brhnu",source:"edp",target:"cloud",label:"deploys and observes",dotpos:"e,760,661.2 760,581.2 760,603.74 760,627.57 760,650.92",points:[[760,581],[760,604],[760,628],[760,651]],labelBBox:{x:619,y:598,width:140,height:18},parent:null,relations:["gerdx4"],color:"gray",line:"dashed",head:"normal"},{id:"6szgsj",source:"edp",target:"localbox",label:null,dotpos:"e,464,459.2 568,459.2 536.79,459.2 505.57,459.2 474.36,459.2",points:[[568,459],[537,459],[506,459],[474,459]],labelBBox:null,parent:"@gr1",relations:["wvo8i"],color:"gray",line:"dashed",head:"normal"}]},landscape:{_type:"element",tags:null,links:null,_stage:"layouted",sourcePath:"views/high-level-concept/platform-context/developer-landscape.c4",description:null,title:"Developer Landscape View",id:"landscape",autoLayout:{direction:"LR",nodeSep:100,rankSep:100},hash:"55fcafa716faf1d0e234f3e0411868055c01907e",bounds:{x:0,y:0,width:3419,height:1756},nodes:[{id:"applicationspecification",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"application-specification",modelRef:"applicationspecification",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"The application specification describes the application and its components. It is used to generate the application and its components."},tags:[],kind:"component",x:0,y:280,width:338,height:180,labelBBox:{x:18,y:45,width:303,height:84}},{id:"forgejoRunnerWorker",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Forgejo Runner Worker",modelRef:"forgejoRunnerWorker",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},tags:[],kind:"component",x:702,y:280,width:333,height:180,labelBBox:{x:19,y:45,width:297,height:84}},{id:"promtail",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Promtail",modelRef:"promtail",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"Log shipper agent for Loki"},tags:[],kind:"component",x:1257,y:280,width:320,height:180,labelBBox:{x:71,y:63,width:177,height:48}},{id:"elasticsearch",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Elasticsearch",modelRef:"elasticsearch",shape:"rectangle",color:"primary",icon:"tech:elasticsearch",style:{opacity:20,size:"md"},description:{txt:`Elasticsearch is a distributed, RESTful search and analytics engine capable of +addressing a growing number of use cases. It centrally stores your data so you can +discover the expected and uncover the unexpected.`},tags:[],technology:"Elasticsearch",kind:"container",x:1888,y:280,width:370,height:180,labelBBox:{x:46,y:17,width:308,height:139}},{id:"objectstorage",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"s3 Object Storage",modelRef:"objectstorage",shape:"rectangle",color:"primary",style:{opacity:20,size:"md"},description:{txt:"s3 Object Storage"},tags:[],technology:"S3 Object Storage",kind:"container",x:9,y:0,width:320,height:180,labelBBox:{x:78,y:53,width:164,height:67}},{id:"postgres",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"PostgreSQL",modelRef:"postgres",shape:"rectangle",color:"primary",icon:"tech:postgresql",style:{opacity:20,size:"md"},description:{txt:`PostgreSQL is a powerful, open source object-relational database system. +It has more than 15 years of active development and a proven architecture +that has earned it a strong reputation for reliability, data integrity, +and correctness.`},tags:[],technology:"PostgreSQL",kind:"container",x:692,y:0,width:354,height:180,labelBBox:{x:46,y:17,width:293,height:139}},{id:"redis",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Redis",modelRef:"redis",shape:"rectangle",color:"primary",icon:"tech:redis",style:{opacity:20,size:"md"},description:{txt:"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker."},tags:[],technology:"Redis",kind:"container",x:1237,y:0,width:359,height:180,labelBBox:{x:46,y:26,width:298,height:121}},{id:"platformdeveloper",parent:null,level:0,children:[],inEdges:[],outEdges:["mox1r9","1kjl8ep","x7to90"],title:"Platform Developer",modelRef:"platformdeveloper",shape:"person",color:"gray",style:{opacity:15,size:"md"},description:{txt:"The EDP engineer"},tags:[],kind:"actor",x:9,y:1286,width:320,height:180,labelBBox:{x:73,y:63,width:175,height:48}},{id:"customers",parent:null,level:0,children:[],inEdges:[],outEdges:["8fboq4"],title:"End Customers",modelRef:"customers",shape:"person",color:"amber",style:{opacity:15,size:"md"},description:{txt:"Consumers of your Application"},tags:[],kind:"actor",x:2508,y:405,width:320,height:180,labelBBox:{x:56,y:63,width:208,height:48}},{id:"forgejoRunner",parent:null,level:0,children:[],inEdges:["5mpoyf"],outEdges:["1lyfj4n"],title:"Forgejo Runner",modelRef:"forgejoRunner",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],kind:"component",x:2508,y:1188,width:320,height:180,labelBBox:{x:23,y:36,width:274,height:102}},{id:"edfbuilder",parent:null,level:0,children:[],inEdges:["mox1r9"],outEdges:["lnq8uj"],title:"edfbuilder",modelRef:"edfbuilder",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:15,size:"md"},description:{txt:"EDP Foundry Builder"},tags:[],technology:"Golang",kind:"component",navigateTo:"edpbuilderworkflow",x:709,y:1073,width:320,height:180,labelBBox:{x:74,y:53,width:203,height:67}},{id:"documentation",parent:null,level:0,children:[],inEdges:["1kjl8ep"],outEdges:["14bjpe1"],title:"Documentation",modelRef:"documentation",shape:"rectangle",color:"primary",icon:"tech:electron",style:{opacity:15,size:"md"},description:{txt:"Documentation system for EDP LikeC4 platform."},tags:[],technology:"Static Site Generator",kind:"system",navigateTo:"components-template-documentation",x:677,y:1576,width:384,height:180,labelBBox:{x:46,y:44,width:323,height:85}},{id:"edf",parent:null,level:0,children:[],inEdges:["lnq8uj","x7to90"],outEdges:["109bf6k"],title:"EDF",modelRef:"edf",shape:"rectangle",color:"primary",icon:"tech:kubernetes",style:{opacity:15,size:"md"},description:{txt:"EDP Foundry is a platform for building and deploying EDPs tenantwise."},tags:[],technology:"Kubernetes",kind:"system",x:1256,y:1286,width:321,height:180,labelBBox:{x:46,y:35,width:260,height:103}},{id:"@gr1",parent:null,kind:"@group",title:"developer-scope",color:"green",shape:"rectangle",children:["developer","otherProductLifecycleRoles","@gr2","@gr3"],inEdges:["1lyfj4n","14bjpe1","109bf6k"],outEdges:["1tbee2v","5mpoyf","17brhnu","35ru8e"],level:0,depth:2,tags:[],style:{border:"none",opacity:20},x:1189,y:500,width:1129,height:746,labelBBox:{x:6,y:0,width:114,height:15}},{id:"developer",parent:"@gr1",level:1,children:[],inEdges:[],outEdges:["zjg544","1okgiq5"],title:"Developer",modelRef:"developer",shape:"person",color:"green",style:{opacity:15,size:"md"},description:{txt:"The regular user of the platform"},tags:[],kind:"actor",x:1257,y:664,width:320,height:180,labelBBox:{x:53,y:63,width:214,height:48}},{id:"otherProductLifecycleRoles",parent:"@gr1",level:1,children:[],inEdges:[],outEdges:["1wupl5x"],title:"Reviewer, Tester, Auditors, Operators",modelRef:"otherProductLifecycleRoles",shape:"person",color:"green",style:{opacity:15,size:"md"},description:{txt:"Coworking roles in the outer loop"},tags:[],kind:"actor",x:1229,y:994,width:375,height:180,labelBBox:{x:18,y:63,width:340,height:48}},{id:"@gr2",parent:"@gr1",kind:"@group",title:"Devops inner-loop",color:"gray",shape:"rectangle",children:["localbox"],inEdges:["zjg544","6szgsj"],outEdges:["1tbee2v","1uo6k6b"],level:0,depth:1,tags:[],style:{border:"none",opacity:30},x:1881,y:561,width:384,height:265,labelBBox:{x:6,y:0,width:122,height:15}},{id:"localbox",parent:"@gr2",level:1,children:[],inEdges:["zjg544","6szgsj"],outEdges:["1tbee2v","1uo6k6b"],title:"localbox",modelRef:"localbox",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"A local development system"},tags:[],technology:"Linux/Windows/Mac",kind:"system",x:1913,y:614,width:320,height:180,labelBBox:{x:64,y:53,width:191,height:67}},{id:"@gr3",parent:"@gr1",kind:"@group",title:"Devops outer-loop",color:"gray",shape:"rectangle",children:["edp"],inEdges:["1lyfj4n","14bjpe1","109bf6k","1okgiq5","1wupl5x","1uo6k6b"],outEdges:["5mpoyf","17brhnu","35ru8e","6szgsj"],level:0,depth:1,tags:[],style:{border:"none",opacity:30},x:1867,y:941,width:411,height:265,labelBBox:{x:6,y:0,width:126,height:15}},{id:"edp",parent:"@gr3",level:1,children:[],inEdges:["1lyfj4n","14bjpe1","109bf6k","1okgiq5","1wupl5x","1uo6k6b"],outEdges:["5mpoyf","17brhnu","35ru8e","6szgsj"],title:"EDP",modelRef:"edp",shape:"rectangle",color:"primary",icon:"tech:kubernetes",style:{opacity:15,size:"md"},description:{txt:"EDP Edge Development Platform"},tags:[],technology:"Kubernetes",kind:"system",navigateTo:"edp",x:1900,y:994,width:346,height:180,labelBBox:{x:45,y:53,width:285,height:67}},{id:"enterprise",parent:null,level:0,children:[],inEdges:["1tbee2v","35ru8e"],outEdges:["iwd51q"],title:"Customers' Enterprise Systems",modelRef:"enterprise",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"The customers' enterprise systems"},tags:[],kind:"system",x:2508,y:685,width:320,height:180,labelBBox:{x:18,y:63,width:283,height:48}},{id:"cloud",parent:null,level:0,children:[],inEdges:["8fboq4","iwd51q","17brhnu"],outEdges:[],title:"Cloud",modelRef:"cloud",shape:"rectangle",color:"primary",style:{opacity:15,size:"md"},description:{txt:"Cloud environments"},tags:[],technology:"IaaS/PaaS",kind:"system",x:3099,y:685,width:320,height:180,labelBBox:{x:91,y:53,width:137,height:67}}],edges:[{id:"lnq8uj",source:"edfbuilder",target:"edf",label:"boots one",dotpos:"e,1256.3,1313.7 1029.3,1225 1097.5,1251.7 1177.3,1282.8 1246.6,1309.9",points:[[1029,1225],[1098,1252],[1177,1283],[1247,1310]],labelBBox:{x:1113,y:1237,width:66,height:18},parent:null,relations:["1oxlsu0"],color:"gray",line:"dashed",head:"normal"},{id:"mox1r9",source:"platformdeveloper",target:"edfbuilder",label:"runs",dotpos:"e,709.48,1205.9 329.16,1319.5 349.13,1312.8 369.32,1306.1 388.65,1300 491.24,1267.5 607.25,1234.3 699.49,1208.7",points:[[329,1320],[349,1313],[369,1306],[389,1300],[491,1268],[607,1234],[699,1209]],labelBBox:{x:492,y:1207,width:31,height:18},parent:null,relations:["s1l7g7"],color:"gray",line:"dashed",head:"normal"},{id:"1kjl8ep",source:"platformdeveloper",target:"documentation",label:"creates and maintains documentation",dotpos:"e,677.63,1592.3 329.14,1448.9 349.11,1457.8 369.31,1466.6 388.65,1474.8 479.82,1513.6 581.66,1554.5 667.99,1588.5",points:[[329,1449],[349,1458],[369,1467],[389,1475],[480,1514],[582,1554],[668,1588]],labelBBox:{x:390,y:1452,width:237,height:18},parent:null,relations:["3sz3k3"],color:"gray",line:"dashed",head:"normal"},{id:"x7to90",source:"platformdeveloper",target:"edf",label:"develops EDP and EDF",dotpos:"e,1256.3,1376 329.03,1376 564.44,1376 1004.3,1376 1246,1376",points:[[329,1376],[564,1376],[1004,1376],[1246,1376]],labelBBox:{x:794,y:1353,width:152,height:18},parent:null,relations:["v8v12"],color:"gray",line:"dashed",head:"normal"},{id:"8fboq4",source:"customers",target:"cloud",label:"uses your app",dotpos:"e,3099.1,699.44 2828,570.59 2909,609.07 3007.4,655.86 3089.7,694.95",points:[[2828,571],[2909,609],[3007,656],[3090,695]],labelBBox:{x:2918,y:578,width:92,height:18},parent:null,relations:["1g2ebwc"],color:"gray",line:"dashed",head:"normal"},{id:"iwd51q",source:"enterprise",target:"cloud",label:"app specific dependencies",dotpos:"e,3099.1,775 2828,775 2908.7,775 3006.6,775 3088.7,775",points:[[2828,775],[2909,775],[3007,775],[3089,775]],labelBBox:{x:2879,y:752,width:169,height:18},parent:null,relations:["nc44l9"],color:"gray",line:"dashed",head:"normal"},{id:"zjg544",source:"developer",target:"localbox",label:"inner loop development",dotpos:"e,1912.7,716.15 1576.6,741.86 1675.2,734.32 1801.9,724.63 1902.5,716.94",points:[[1577,742],[1675,734],[1802,725],[1902,717]],labelBBox:{x:1671,y:700,width:150,height:18},parent:"@gr1",relations:["5hkplj"],color:"gray",line:"dashed",head:"normal"},{id:"1tbee2v",source:"localbox",target:"enterprise",label:"company integration",dotpos:"e,2508.1,755.99 2232.2,722.98 2314.2,732.79 2414.3,744.76 2497.8,754.75",points:[[2232,723],[2314,733],[2414,745],[2498,755]],labelBBox:{x:2327,y:711,width:130,height:18},parent:null,relations:["1abvxlh"],color:"gray",line:"dashed",head:"normal"},{id:"1lyfj4n",source:"forgejoRunner",target:"edp",label:"register",dotpos:"e,2186.1,1173.8 2508.3,1279.9 2449.7,1276.5 2383.5,1267.7 2325.9,1247.8 2280,1232 2234.2,1206.1 2194.5,1179.5",points:[[2508,1280],[2450,1276],[2384,1268],[2326,1248],[2280,1232],[2234,1206],[2194,1179]],labelBBox:{x:2367,y:1225,width:51,height:18},parent:null,relations:["18dtot7"],color:"gray",line:"dashed",head:"normal"},{id:"14bjpe1",source:"documentation",target:"edp",label:"provides documentation for",dotpos:"e,2012.6,1173.9 1061.2,1655.9 1213.3,1642.4 1429.2,1611.2 1604.9,1538.8 1780.7,1466.3 1926.9,1292.9 2006.5,1182.4",points:[[1061,1656],[1213,1642],[1429,1611],[1605,1539],[1781,1466],[1927,1293],[2006,1182]],labelBBox:{x:1331,y:1516,width:173,height:18},parent:null,relations:["xw0pne"],color:"gray",line:"dashed",head:"normal"},{id:"109bf6k",source:"edf",target:"edp",label:"builds many",dotpos:"e,1993.5,1173.7 1577.6,1365 1658.8,1354.4 1757,1333.9 1837.5,1293.8 1892.9,1266.2 1945.2,1221.9 1986.2,1181",points:[[1578,1365],[1659,1354],[1757,1334],[1838,1294],[1893,1266],[1945,1222],[1986,1181]],labelBBox:{x:1707,y:1271,width:79,height:18},parent:null,relations:["wsm3kf"],color:"gray",line:"dashed",head:"normal"},{id:"1okgiq5",source:"developer",target:"edp",label:"outer loop development",dotpos:"e,1899.2,997 1576.6,834.09 1671.2,881.87 1791.7,942.7 1890.1,992.38",points:[[1577,834],[1671,882],[1792,943],[1890,992]],labelBBox:{x:1671,y:857,width:150,height:18},parent:"@gr1",relations:["1pp73vj","yk9zv2","12036hb","jpl8ll","1ghp31l","1xiorre","1woleh6","177bm2y","1l9a3pd","1uzzn9j"],color:"gray",line:"dashed",head:"normal"},{id:"1wupl5x",source:"otherProductLifecycleRoles",target:"edp",label:"act according to responibility",dotpos:"e,1899.4,1084 1604.8,1084 1694,1084 1800.3,1084 1889,1084",points:[[1605,1084],[1694,1084],[1800,1084],[1889,1084]],labelBBox:{x:1656,y:1061,width:181,height:18},parent:"@gr1",relations:["lb4xas"],color:"gray",line:"dashed",head:"normal"},{id:"1uo6k6b",source:"localbox",target:"edp",label:"inner-outer-loop synchronization",dotpos:"e,2072.6,994.43 2072.6,793.96 2072.6,851.06 2072.6,925.03 2072.6,983.98",points:[[2073,794],[2073,851],[2073,925],[2073,984]],labelBBox:{x:1956,y:882,width:204,height:18},parent:"@gr1",relations:["1mp9fps"],color:"gray",line:"dashed",head:"normal"},{id:"5mpoyf",source:"edp",target:"forgejoRunner",label:"runs workflows",dotpos:"e,2508,1221 2245.8,1136.2 2312.3,1156.8 2388.8,1181 2458,1204 2471.1,1208.4 2484.6,1212.9 2498.1,1217.6",points:[[2246,1136],[2312,1157],[2389,1181],[2458,1204],[2471,1208],[2485,1213],[2498,1218]],labelBBox:{x:2344,y:1140,width:97,height:18},parent:null,relations:["1pbc22f"],color:"gray",line:"dashed",head:"normal"},{id:"17brhnu",source:"edp",target:"cloud",label:"deploys and observes",dotpos:"e,3099.2,842.58 2245.6,1059.2 2399.8,1035 2631.3,993.65 2828,937.8 2915.9,912.84 3011.2,877.65 3089.7,846.37",points:[[2246,1059],[2400,1035],[2631,994],[2828,938],[2916,913],[3011,878],[3090,846]],labelBBox:{x:2598,y:915,width:140,height:18},parent:null,relations:["gerdx4"],color:"gray",line:"dashed",head:"normal"},{id:"35ru8e",source:"edp",target:"enterprise",label:"integrates",dotpos:"e,2508.1,846.44 2221.8,994.11 2255.7,974.39 2291.8,954.02 2325.9,936 2381.5,906.68 2443.3,876.73 2498.8,850.74",points:[[2222,994],[2256,974],[2292,954],[2326,936],[2381,907],[2443,877],[2499,851]],labelBBox:{x:2359,y:848,width:65,height:18},parent:null,relations:["615gvx"],color:"gray",line:"dashed",head:"normal"},{id:"6szgsj",source:"edp",target:"localbox",label:null,dotpos:"e,2072.6,793.84 2072.6,994.2 2072.6,930.8 2072.6,867.41 2072.6,804.01",points:[[2073,994],[2073,931],[2073,867],[2073,804]],labelBBox:null,parent:"@gr1",relations:["wvo8i"],color:"gray",line:"dashed",head:"normal"}]},"developer-landscape-with-foundry":{_type:"element",tags:null,links:null,_stage:"layouted",sourcePath:"views/high-level-concept/platform-context/developer-landscape-with-foundry.c4",description:null,title:"Developer Landscape View (with Foundry)",id:"developer-landscape-with-foundry",autoLayout:{direction:"LR",nodeSep:100,rankSep:100},hash:"b276e3437a81a3511683487fe741e5425e3087a3",bounds:{x:0,y:0,width:4464,height:2361},nodes:[{id:"applicationspecification",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"application-specification",modelRef:"applicationspecification",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"The application specification describes the application and its components. It is used to generate the application and its components."},tags:[],kind:"component",x:0,y:390,width:520,height:290,labelBBox:{x:49,y:84,width:422,height:113}},{id:"forgejoRunnerWorker",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Forgejo Runner Worker",modelRef:"forgejoRunnerWorker",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"A worker is a service that runs a job invoked by a runner. A worker typically is a container."},tags:[],kind:"component",x:859,y:390,width:520,height:290,labelBBox:{x:52,y:84,width:415,height:113}},{id:"promtail",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Promtail",modelRef:"promtail",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"Log shipper agent for Loki"},tags:[],kind:"component",x:1557,y:390,width:520,height:290,labelBBox:{x:137,y:109,width:247,height:63}},{id:"elasticsearch",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Elasticsearch",modelRef:"elasticsearch",shape:"rectangle",color:"primary",icon:"tech:elasticsearch",style:{opacity:20,size:"xl"},description:{txt:`Elasticsearch is a distributed, RESTful search and analytics engine capable of +addressing a growing number of use cases. It centrally stores your data so you can +discover the expected and uncover the unexpected.`},tags:[],technology:"Elasticsearch",kind:"container",x:2371,y:390,width:520,height:290,labelBBox:{x:72,y:46,width:406,height:189}},{id:"objectstorage",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"s3 Object Storage",modelRef:"objectstorage",shape:"rectangle",color:"primary",style:{opacity:20,size:"xl"},description:{txt:"s3 Object Storage"},tags:[],technology:"S3 Object Storage",kind:"container",x:0,y:0,width:520,height:290,labelBBox:{x:146,y:96,width:228,height:89}},{id:"postgres",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"PostgreSQL",modelRef:"postgres",shape:"rectangle",color:"primary",icon:"tech:postgresql",style:{opacity:20,size:"xl"},description:{txt:`PostgreSQL is a powerful, open source object-relational database system. +It has more than 15 years of active development and a proven architecture +that has earned it a strong reputation for reliability, data integrity, +and correctness.`},tags:[],technology:"PostgreSQL",kind:"container",x:859,y:0,width:520,height:290,labelBBox:{x:83,y:46,width:384,height:189}},{id:"redis",parent:null,level:0,children:[],inEdges:[],outEdges:[],title:"Redis",modelRef:"redis",shape:"rectangle",color:"primary",icon:"tech:redis",style:{opacity:20,size:"xl"},description:{txt:"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker."},tags:[],technology:"Redis",kind:"container",x:1557,y:0,width:520,height:290,labelBBox:{x:80,y:58,width:391,height:165}},{id:"platformdeveloper",parent:null,level:0,children:[],inEdges:[],outEdges:["mox1r9","1kjl8ep","x7to90"],title:"Platform Developer",modelRef:"platformdeveloper",shape:"person",color:"gray",style:{opacity:15,size:"xl"},description:{txt:"The EDP engineer"},tags:[],kind:"actor",x:0,y:1726,width:520,height:290,labelBBox:{x:138,y:109,width:244,height:63}},{id:"customers",parent:null,level:0,children:[],inEdges:[],outEdges:["8fboq4"],title:"End Customers",modelRef:"customers",shape:"person",color:"amber",style:{opacity:15,size:"xl"},description:{txt:"Consumers of your Application"},tags:[],kind:"actor",x:3153,y:460,width:520,height:290,labelBBox:{x:115,y:109,width:290,height:63}},{id:"forgejoRunner",parent:null,level:0,children:[],inEdges:["5mpoyf"],outEdges:["1lyfj4n"],title:"Forgejo Runner",modelRef:"forgejoRunner",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM."},tags:[],kind:"component",x:3153,y:1463,width:520,height:290,labelBBox:{x:69,y:71,width:382,height:139}},{id:"edfbuilder",parent:null,level:0,children:[],inEdges:["mox1r9"],outEdges:["lnq8uj"],title:"edfbuilder",modelRef:"edfbuilder",shape:"rectangle",color:"primary",icon:"tech:go",style:{opacity:15,size:"xl"},description:{txt:"EDP Foundry Builder"},tags:[],technology:"Golang",kind:"component",navigateTo:"edpbuilderworkflow",x:859,y:1458,width:520,height:290,labelBBox:{x:145,y:96,width:259,height:89}},{id:"documentation",parent:null,level:0,children:[],inEdges:["1kjl8ep"],outEdges:["14bjpe1"],title:"Documentation",modelRef:"documentation",shape:"rectangle",color:"primary",icon:"tech:electron",style:{opacity:15,size:"xl"},description:{txt:"Documentation system for EDP LikeC4 platform."},tags:[],technology:"Static Site Generator",kind:"system",navigateTo:"components-template-documentation",x:859,y:2071,width:520,height:290,labelBBox:{x:62,y:83,width:426,height:115}},{id:"edf",parent:null,level:0,children:[],inEdges:["lnq8uj","x7to90"],outEdges:["109bf6k"],title:"EDF",modelRef:"edf",shape:"rectangle",color:"primary",icon:"tech:kubernetes",style:{opacity:15,size:"xl"},description:{txt:"EDP Foundry is a platform for building and deploying EDPs tenantwise."},tags:[],technology:"Kubernetes",kind:"system",x:1557,y:1726,width:520,height:290,labelBBox:{x:106,y:71,width:339,height:139}},{id:"@gr1",parent:null,kind:"@group",title:"developer-scope",color:"green",shape:"rectangle",children:["developer","otherProductLifecycleRoles","@gr2","@gr3"],inEdges:["1lyfj4n","14bjpe1","109bf6k"],outEdges:["1tbee2v","5mpoyf","17brhnu","35ru8e"],level:0,depth:2,tags:[],style:{border:"none",opacity:20},x:1506,y:720,width:1457,height:966,labelBBox:{x:6,y:0,width:114,height:15}},{id:"developer",parent:"@gr1",level:1,children:[],inEdges:[],outEdges:["zjg544","1okgiq5"],title:"Developer",modelRef:"developer",shape:"person",color:"green",style:{opacity:15,size:"xl"},description:{txt:"The regular user of the platform"},tags:[],kind:"actor",x:1557,y:884,width:520,height:290,labelBBox:{x:111,y:109,width:298,height:63}},{id:"otherProductLifecycleRoles",parent:"@gr1",level:1,children:[],inEdges:[],outEdges:["1wupl5x"],title:"Reviewer, Tester, Auditors, Operators",modelRef:"otherProductLifecycleRoles",shape:"person",color:"green",style:{opacity:15,size:"xl"},description:{txt:"Coworking roles in the outer loop"},tags:[],kind:"actor",x:1546,y:1324,width:542,height:290,labelBBox:{x:34,y:109,width:474,height:63}},{id:"@gr2",parent:"@gr1",kind:"@group",title:"Devops inner-loop",color:"gray",shape:"rectangle",children:["localbox"],inEdges:["zjg544","6szgsj"],outEdges:["1tbee2v","1uo6k6b"],level:0,depth:1,tags:[],style:{border:"none",opacity:30},x:2339,y:781,width:584,height:375,labelBBox:{x:6,y:0,width:122,height:15}},{id:"localbox",parent:"@gr2",level:1,children:[],inEdges:["zjg544","6szgsj"],outEdges:["1tbee2v","1uo6k6b"],title:"localbox",modelRef:"localbox",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"A local development system"},tags:[],technology:"Linux/Windows/Mac",kind:"system",x:2371,y:834,width:520,height:290,labelBBox:{x:127,y:96,width:265,height:89}},{id:"@gr3",parent:"@gr1",kind:"@group",title:"Devops outer-loop",color:"gray",shape:"rectangle",children:["edp"],inEdges:["1lyfj4n","14bjpe1","109bf6k","1okgiq5","1wupl5x","1uo6k6b"],outEdges:["5mpoyf","17brhnu","35ru8e","6szgsj"],level:0,depth:1,tags:[],style:{border:"none",opacity:30},x:2339,y:1271,width:584,height:375,labelBBox:{x:6,y:0,width:126,height:15}},{id:"edp",parent:"@gr3",level:1,children:[],inEdges:["1lyfj4n","14bjpe1","109bf6k","1okgiq5","1wupl5x","1uo6k6b"],outEdges:["5mpoyf","17brhnu","35ru8e","6szgsj"],title:"EDP",modelRef:"edp",shape:"rectangle",color:"primary",icon:"tech:kubernetes",style:{opacity:15,size:"xl"},description:{txt:"EDP Edge Development Platform"},tags:[],technology:"Kubernetes",kind:"system",navigateTo:"edp",x:2371,y:1324,width:520,height:290,labelBBox:{x:88,y:96,width:374,height:89}},{id:"enterprise",parent:null,level:0,children:[],inEdges:["1tbee2v","35ru8e"],outEdges:["iwd51q"],title:"Customers' Enterprise Systems",modelRef:"enterprise",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"The customers' enterprise systems"},tags:[],kind:"system",x:3153,y:850,width:520,height:290,labelBBox:{x:63,y:109,width:395,height:63}},{id:"cloud",parent:null,level:0,children:[],inEdges:["8fboq4","iwd51q","17brhnu"],outEdges:[],title:"Cloud",modelRef:"cloud",shape:"rectangle",color:"primary",style:{opacity:15,size:"xl"},description:{txt:"Cloud environments"},tags:[],technology:"IaaS/PaaS",kind:"system",x:3944,y:850,width:520,height:290,labelBBox:{x:165,y:96,width:191,height:89}}],edges:[{id:"lnq8uj",source:"edfbuilder",target:"edf",label:"boots one",dotpos:"e,1557.5,1771.4 1378.6,1702.6 1433.9,1723.9 1492.3,1746.4 1547.9,1767.7",points:[[1379,1703],[1434,1724],[1492,1746],[1548,1768]],labelBBox:{x:1430,y:1702,width:66,height:18},parent:null,relations:["1oxlsu0"],color:"gray",line:"dashed",head:"normal"},{id:"mox1r9",source:"platformdeveloper",target:"edfbuilder",label:"runs",dotpos:"e,858.95,1684 519.82,1790.1 623.96,1757.5 744.04,1719.9 849.15,1687",points:[[520,1790],[624,1757],[744,1720],[849,1687]],labelBBox:{x:674,y:1682,width:31,height:18},parent:null,relations:["s1l7g7"],color:"gray",line:"dashed",head:"normal"},{id:"1kjl8ep",source:"platformdeveloper",target:"documentation",label:"creates and maintains documentation",dotpos:"e,858.95,2111.8 519.82,1975.2 624.07,2017.2 744.29,2065.6 849.47,2108",points:[[520,1975],[624,2017],[744,2066],[849,2108]],labelBBox:{x:571,y:1979,width:237,height:18},parent:null,relations:["3sz3k3"],color:"gray",line:"dashed",head:"normal"},{id:"x7to90",source:"platformdeveloper",target:"edf",label:"develops EDP and EDF",dotpos:"e,1557.6,1871 520.04,1871 804.49,1871 1259.1,1871 1547.4,1871",points:[[520,1871],[804,1871],[1259,1871],[1547,1871]],labelBBox:{x:1043,y:1848,width:152,height:18},parent:null,relations:["v8v12"],color:"gray",line:"dashed",head:"normal"},{id:"8fboq4",source:"customers",target:"cloud",label:"uses your app",dotpos:"e,3944.2,867.02 3673,732.98 3757,774.49 3850.4,820.62 3935,862.47",points:[[3673,733],[3757,774],[3850,821],[3935,862]],labelBBox:{x:3763,y:742,width:92,height:18},parent:null,relations:["1g2ebwc"],color:"gray",line:"dashed",head:"normal"},{id:"iwd51q",source:"enterprise",target:"cloud",label:"app specific dependencies",dotpos:"e,3944.2,995.01 3673,995.01 3756.6,995.01 3849.4,995.01 3933.7,995.01",points:[[3673,995],[3757,995],[3849,995],[3934,995]],labelBBox:{x:3724,y:972,width:169,height:18},parent:null,relations:["nc44l9"],color:"gray",line:"dashed",head:"normal"},{id:"zjg544",source:"developer",target:"localbox",label:"inner loop development",dotpos:"e,2371.2,994.95 2077.1,1013.1 2167.7,1007.5 2269.5,1001.2 2360.9,995.58",points:[[2077,1013],[2168,1007],[2270,1001],[2361,996]],labelBBox:{x:2155,y:975,width:150,height:18},parent:"@gr1",relations:["5hkplj"],color:"gray",line:"dashed",head:"normal"},{id:"1tbee2v",source:"localbox",target:"enterprise",label:"company integration",dotpos:"e,3153.3,989.7 2891,984.32 2971.9,985.98 3061.3,987.81 3142.9,989.49",points:[[2891,984],[2972,986],[3061,988],[3143,989]],labelBBox:{x:2972,y:963,width:130,height:18},parent:null,relations:["1abvxlh"],color:"gray",line:"dashed",head:"normal"},{id:"1lyfj4n",source:"forgejoRunner",target:"edp",label:"register",dotpos:"e,2890.8,1595.3 3153.2,1633.4 3092.9,1633.9 3029.3,1630 2971,1617.8 2947.7,1612.9 2924,1606.3 2900.5,1598.6",points:[[3153,1633],[3093,1634],[3029,1630],[2971,1618],[2948,1613],[2924,1606],[2900,1599]],labelBBox:{x:3012,y:1595,width:51,height:18},parent:null,relations:["18dtot7"],color:"gray",line:"dashed",head:"normal"},{id:"14bjpe1",source:"documentation",target:"edp",label:"provides documentation for",dotpos:"e,2547.7,1613.9 1378.7,2229.9 1582.8,2229.9 1868.5,2205.1 2088.3,2088.8 2289.3,1982.5 2449.7,1769 2542.3,1622.5",points:[[1379,2230],[1583,2230],[1869,2205],[2088,2089],[2289,1983],[2450,1769],[2542,1623]],labelBBox:{x:1731,y:2066,width:173,height:18},parent:null,relations:["xw0pne"],color:"gray",line:"dashed",head:"normal"},{id:"109bf6k",source:"edf",target:"edp",label:"builds many",dotpos:"e,2487.8,1613.8 2077.2,1823.6 2158.1,1802.7 2245.8,1773.6 2321,1733.8 2377.3,1703.9 2432.3,1662.2 2479.9,1620.8",points:[[2077,1824],[2158,1803],[2246,1774],[2321,1734],[2377,1704],[2432,1662],[2480,1621]],labelBBox:{x:2190,y:1711,width:79,height:18},parent:null,relations:["wsm3kf"],color:"gray",line:"dashed",head:"normal"},{id:"1okgiq5",source:"developer",target:"edp",label:"outer loop development",dotpos:"e,2371.2,1328.7 2077.1,1169.3 2168,1218.6 2270.4,1274 2362,1323.7",points:[[2077,1169],[2168,1219],[2270,1274],[2362,1324]],labelBBox:{x:2154,y:1180,width:150,height:18},parent:"@gr1",relations:["1pp73vj","yk9zv2","12036hb","jpl8ll","1ghp31l","1xiorre","1woleh6","177bm2y","1l9a3pd","1uzzn9j"],color:"gray",line:"dashed",head:"normal"},{id:"1wupl5x",source:"otherProductLifecycleRoles",target:"edp",label:"act according to responibility",dotpos:"e,2371.1,1469 2088.3,1469 2175.9,1469 2273.1,1469 2360.7,1469",points:[[2088,1469],[2176,1469],[2273,1469],[2361,1469]],labelBBox:{x:2139,y:1446,width:181,height:18},parent:"@gr1",relations:["lb4xas"],color:"gray",line:"dashed",head:"normal"},{id:"1uo6k6b",source:"localbox",target:"edp",label:"inner-outer-loop synchronization",dotpos:"e,2631,1324.3 2631,1123.8 2631,1183.6 2631,1253 2631,1313.8",points:[[2631,1124],[2631,1184],[2631,1253],[2631,1314]],labelBBox:{x:2515,y:1212,width:204,height:18},parent:"@gr1",relations:["1mp9fps"],color:"gray",line:"dashed",head:"normal"},{id:"5mpoyf",source:"edp",target:"forgejoRunner",label:"runs workflows",dotpos:"e,3153.3,1561.9 2891,1515.1 2972,1529.6 3061.7,1545.6 3143.4,1560.1",points:[[2891,1515],[2972,1530],[3062,1546],[3143,1560]],labelBBox:{x:2989,y:1507,width:97,height:18},parent:null,relations:["1pbc22f"],color:"gray",line:"dashed",head:"normal"},{id:"17brhnu",source:"edp",target:"cloud",label:"deploys and observes",dotpos:"e,3944.2,1110.4 2890.9,1416.5 3103.4,1370.8 3410.9,1298.4 3673.2,1212.8 3759.6,1184.6 3851.8,1148.8 3934.7,1114.4",points:[[2891,1417],[3103,1371],[3411,1298],[3673,1213],[3760,1185],[3852,1149],[3935,1114]],labelBBox:{x:3343,y:1190,width:140,height:18},parent:null,relations:["gerdx4"],color:"gray",line:"dashed",head:"normal"},{id:"35ru8e",source:"edp",target:"enterprise",label:"integrates",dotpos:"e,3153.3,1111.3 2808.6,1324.3 2859.6,1285.4 2916.3,1244.8 2971,1211 3025.4,1177.4 3085.8,1145 3144,1115.9",points:[[2809,1324],[2860,1285],[2916,1245],[2971,1211],[3025,1177],[3086,1145],[3144,1116]],labelBBox:{x:3004,y:1115,width:65,height:18},parent:null,relations:["615gvx"],color:"gray",line:"dashed",head:"normal"},{id:"6szgsj",source:"edp",target:"localbox",label:null,dotpos:"e,2631,1123.9 2631,1324 2631,1260.7 2631,1197.4 2631,1134",points:[[2631,1324],[2631,1261],[2631,1197],[2631,1134]],labelBBox:null,parent:"@gr1",relations:["wvo8i"],color:"gray",line:"dashed",head:"normal"}]}},deployments:{elements:{local:{style:{icon:"tech:kubernetes"},kind:"environment",description:{txt:"Local kind-cluster environment for EDP, typically run by edpbuilder"},technology:"Kind",title:"Local kind-cluster",id:"local"},"otc-edp-per-tenant":{style:{},kind:"cloud",description:{txt:`OTC environment for EDP. EDP is the environment a customer gets from us. + + This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry.`},technology:"OTC",title:"OTC EDP per tenant cluster",id:"otc-edp-per-tenant"},"otc-faas":{style:{},kind:"cloud",description:{txt:"OTC environments for Prototype faaS."},technology:"OTC",title:"OTC prototype FaaS",id:"otc-faas"},edge:{style:{},kind:"cloud",description:{txt:"Edge environments for distributed workloads."},technology:"Edge",title:"Edge Cloud",id:"edge"},"otc-edpFoundry":{style:{},kind:"cloud",description:{txt:`OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder. + +A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP. +Optionally we will have a WebUI/API/CLI`},technology:"OTC",title:"OTC EDP Foundry Central Service clusters",id:"otc-edpFoundry"},"local.backstage":{style:{},kind:"namespace",title:"backstage",id:"local.backstage"},"local.argocd":{style:{},kind:"namespace",title:"argocd",id:"local.argocd"},"local.gitea":{style:{},kind:"namespace",title:"gitea",id:"local.gitea"},"local.keycloak":{style:{},kind:"namespace",title:"keycloak",id:"local.keycloak"},"local.crossplane":{style:{},kind:"namespace",title:"crossplane-system",id:"local.crossplane"},"local.externalSecrets":{style:{},kind:"namespace",title:"external-secrets",id:"local.externalSecrets"},"local.velero":{style:{},kind:"namespace",title:"velero",id:"local.velero"},"local.minio":{style:{},kind:"namespace",title:"minio-backup",id:"local.minio"},"local.monitoring":{style:{},kind:"namespace",title:"monitoring",id:"local.monitoring"},"local.ingressNginx":{style:{},kind:"namespace",title:"ingress-nginx",id:"local.ingressNginx"},"local.openbao":{style:{},kind:"namespace",title:"openbao",id:"local.openbao"},"local.fibonacci":{style:{},kind:"namespace",title:"fibonacci-app",id:"local.fibonacci"},"local.mailhog":{style:{},kind:"namespace",title:"mailhog",id:"local.mailhog"},"local.spark":{style:{},kind:"namespace",title:"spark",id:"local.spark"},"otc-edp-per-tenant.cce":{style:{icon:"tech:kubernetes"},kind:"kubernetes",description:{txt:"OTC Container Cluster Engine"},technology:"Kubernetes",title:"OTC CCE",id:"otc-edp-per-tenant.cce"},"otc-edp-per-tenant.cloudServices":{style:{},kind:"paas",description:{txt:"EDP Cloud Services"},technology:"Cloud Services",title:"EDP Cloud Services",id:"otc-edp-per-tenant.cloudServices"},"otc-edp-per-tenant.forgejoRunnerInfrastructure":{style:{},kind:"computeressource",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},title:"EDP ForgejoRunner infrastructure",id:"otc-edp-per-tenant.forgejoRunnerInfrastructure"},"otc-faas.dev":{style:{},kind:"environment",description:{txt:"*.t09.de"},technology:"OTC",title:"tenant Dev",id:"otc-faas.dev"},"otc-faas.prod":{style:{},kind:"environment",description:{txt:"*.buildth.ing"},technology:"OTC",title:"Tenant Prod",id:"otc-faas.prod"},"edge.edge-dev":{style:{},kind:"environment",description:{txt:"Edge development environment"},technology:"Edge",title:"Edge Dev",id:"edge.edge-dev"},"edge.edge-prod":{style:{},kind:"environment",description:{txt:"Edge production environment"},technology:"Edge",title:"Edge Prod",id:"edge.edge-prod"},"otc-edpFoundry.cce":{style:{icon:"tech:kubernetes"},kind:"kubernetes",description:{txt:"OTC Container Cluster Engine"},technology:"Kubernetes",title:"OTC CCE",id:"otc-edpFoundry.cce"},"otc-edpFoundry.workflowSetupEDPInfrastructure":{style:{},kind:"computeressource",description:{txt:"EDP infrastructure Workflow"},title:"EDP infrastructure Workflow",id:"otc-edpFoundry.workflowSetupEDPInfrastructure"},"otc-edpFoundry.workflowSetupArgoCDInfrastructure":{style:{},kind:"computeressource",description:{txt:"EDP Setup ArgoCD Workflow"},title:"EDP ArgoCD Workflow",id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure"},"otc-edpFoundry.forgejoRunnerInfrastructure":{style:{},kind:"computeressource",description:{txt:"Infrastructure for Forgejo runners like pods, vms, lxds, etc"},title:"EDP ForgejoRunner infrastructure",id:"otc-edpFoundry.forgejoRunnerInfrastructure"},"local.backstage.backstage":{id:"local.backstage.backstage",element:"edp.ui.backstage",style:{}},"local.backstage.database":{id:"local.backstage.database",element:"edp.ui.database",style:{}},"local.argocd.argocdAppController":{id:"local.argocd.argocdAppController",element:"edp.argoCD.argocdAppController",style:{}},"local.argocd.argocdAppSetController":{id:"local.argocd.argocdAppSetController",element:"edp.argoCD.argocdAppSetController",style:{}},"local.argocd.argocdRedis":{id:"local.argocd.argocdRedis",element:"edp.argoCD.argocdRedis",style:{}},"local.argocd.argocdRepoServer":{id:"local.argocd.argocdRepoServer",element:"edp.argoCD.argocdRepoServer",style:{}},"local.argocd.argocdServer":{id:"local.argocd.argocdServer",element:"edp.argoCD.argocdServer",style:{}},"local.gitea.forgejo":{id:"local.gitea.forgejo",element:"edp.forgejo",style:{}},"local.gitea.forgejoRunner":{id:"local.gitea.forgejoRunner",element:"forgejoRunner",style:{}},"local.keycloak.keycloak":{id:"local.keycloak.keycloak",element:"edp.keycloak.keycloak",style:{}},"local.keycloak.keycloakDB":{id:"local.keycloak.keycloakDB",element:"edp.keycloak.keycloakDB",style:{}},"local.crossplane.crossplane":{id:"local.crossplane.crossplane",element:"edp.crossplane.crossplane",style:{}},"local.crossplane.crossplaneFunction":{id:"local.crossplane.crossplaneFunction",element:"edp.crossplane.crossplaneFunction",style:{}},"local.crossplane.crossplaneRbacManager":{id:"local.crossplane.crossplaneRbacManager",element:"edp.crossplane.crossplaneRbacManager",style:{}},"local.crossplane.providerArgoCD":{id:"local.crossplane.providerArgoCD",element:"edp.crossplane.providerArgoCD",style:{}},"local.crossplane.providerKind":{id:"local.crossplane.providerKind",element:"edp.crossplane.providerKind",style:{}},"local.crossplane.providerShell":{id:"local.crossplane.providerShell",element:"edp.crossplane.providerShell",style:{}},"local.externalSecrets.certController":{id:"local.externalSecrets.certController",element:"edp.externalSecrets.certController",style:{}},"local.externalSecrets.externalSecrets":{id:"local.externalSecrets.externalSecrets",element:"edp.externalSecrets.externalSecrets",style:{}},"local.externalSecrets.webhook":{id:"local.externalSecrets.webhook",element:"edp.externalSecrets.webhook",style:{}},"local.velero.velero":{id:"local.velero.velero",element:"edp.velero.velero",style:{}},"local.minio.minio":{id:"local.minio.minio",element:"edp.minio.minio",style:{}},"local.monitoring.alloy":{id:"local.monitoring.alloy",element:"edp.monitoring.alloy",style:{}},"local.monitoring.distributor":{id:"local.monitoring.distributor",element:"edp.monitoring.loki.distributor",style:{}},"local.monitoring.gateway":{id:"local.monitoring.gateway",element:"edp.monitoring.loki.gateway",style:{}},"local.monitoring.ingestor":{id:"local.monitoring.ingestor",element:"edp.monitoring.loki.ingestor",style:{}},"local.monitoring.querier":{id:"local.monitoring.querier",element:"edp.monitoring.loki.querier",style:{}},"local.monitoring.queryFrontend":{id:"local.monitoring.queryFrontend",element:"edp.monitoring.loki.queryFrontend",style:{}},"local.ingressNginx.ingressNginx":{id:"local.ingressNginx.ingressNginx",element:"edp.ingressNginx.ingressNginx",style:{}},"local.openbao.openbao":{id:"local.openbao.openbao",element:"edp.openbao.openbao",style:{}},"local.openbao.agentInjector":{id:"local.openbao.agentInjector",element:"edp.openbao.agentInjector",style:{}},"local.fibonacci.fibonacci":{id:"local.fibonacci.fibonacci",element:"edp.testApp.fibonacci",style:{}},"local.mailhog.mailhog":{id:"local.mailhog.mailhog",element:"edp.mailhog.mailhog",style:{}},"local.spark.sparkoperator":{id:"local.spark.sparkoperator",element:"edp.spark.sparkoperator",style:{}},"otc-edp-per-tenant.cce.edp":{style:{},kind:"cluster",title:"EDP",id:"otc-edp-per-tenant.cce.edp"},"otc-edp-per-tenant.cloudServices.postgres":{id:"otc-edp-per-tenant.cloudServices.postgres",element:"postgres",style:{}},"otc-edp-per-tenant.cloudServices.redis":{id:"otc-edp-per-tenant.cloudServices.redis",element:"redis",style:{}},"otc-edp-per-tenant.cloudServices.objectstorage":{id:"otc-edp-per-tenant.cloudServices.objectstorage",element:"objectstorage",style:{}},"otc-edp-per-tenant.cloudServices.elasticsearch":{id:"otc-edp-per-tenant.cloudServices.elasticsearch",element:"elasticsearch",style:{}},"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner":{id:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner",element:"forgejoRunner",style:{}},"otc-faas.dev.cce":{style:{icon:"tech:kubernetes"},kind:"kubernetes",description:{txt:"*.t09.de"},technology:"Kubernetes",title:"Central Forgejo",id:"otc-faas.dev.cce"},"otc-faas.dev.cloudServices":{style:{},kind:"paas",description:{txt:"EDP Cloud Services (Postgres, Redis, etc."},technology:"Cloud Services",title:"EDP Cloud Services",id:"otc-faas.dev.cloudServices"},"otc-faas.dev.observability":{style:{icon:"tech:kubernetes"},kind:"kubernetes",description:{txt:"*.t09.de"},technology:"Kubernetes",title:"Observability",id:"otc-faas.dev.observability"},"otc-faas.prod.cce":{style:{icon:"tech:kubernetes"},kind:"kubernetes",description:{txt:"*.buildth.ing"},technology:"Kubernetes",title:"Central Forgejo",id:"otc-faas.prod.cce"},"otc-faas.prod.cloudServices":{style:{},kind:"paas",description:{txt:"EDP Cloud Services (Postgres, Redis, etc."},technology:"Cloud Services",title:"EDP Cloud Services",id:"otc-faas.prod.cloudServices"},"otc-faas.prod.observability":{style:{icon:"tech:kubernetes"},kind:"kubernetes",description:{txt:"*.buildth.ing"},technology:"Kubernetes",title:"Observability",id:"otc-faas.prod.observability"},"otc-edpFoundry.cce.internalServices":{style:{},kind:"cluster",title:"EDP Foundry Internal Services",id:"otc-edpFoundry.cce.internalServices"},"otc-edpFoundry.cce.centralObservability":{style:{},kind:"cluster",title:"EDP Foundry Central Observability",id:"otc-edpFoundry.cce.centralObservability"},"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner":{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner",element:"forgejoRunner",style:{}},"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker":{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker",element:"forgejoRunnerWorker",style:{}},"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow":{id:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow",element:"edpworkflow",style:{}},"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner":{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner",element:"forgejoRunner",style:{}},"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker":{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker",element:"forgejoRunnerWorker",style:{}},"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow":{id:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow",element:"edpworkflow",style:{}},"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner":{id:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner",element:"forgejoRunner",style:{}},"otc-edp-per-tenant.cce.edp.argoCD":{id:"otc-edp-per-tenant.cce.edp.argoCD",element:"edp.argoCD",style:{}},"otc-edp-per-tenant.cce.edp.forgejoRunner":{id:"otc-edp-per-tenant.cce.edp.forgejoRunner",element:"forgejoRunner",style:{}},"otc-edp-per-tenant.cce.edp.forgejo":{id:"otc-edp-per-tenant.cce.edp.forgejo",element:"edp.forgejo",style:{}},"otc-edp-per-tenant.cce.edp.externalSecrets":{id:"otc-edp-per-tenant.cce.edp.externalSecrets",element:"edp.externalSecrets",style:{}},"otc-edp-per-tenant.cce.edp.ingressNginx":{id:"otc-edp-per-tenant.cce.edp.ingressNginx",element:"edp.ingressNginx",style:{}},"otc-faas.dev.cce.edp":{style:{},kind:"cluster",description:{txt:"t09.de"},title:"Forgejo Dev for platform team",id:"otc-faas.dev.cce.edp"},"otc-faas.prod.cce.edp":{style:{},kind:"cluster",title:"Forgejo for all EDP-tenants",id:"otc-faas.prod.cce.edp"},"otc-edpFoundry.cce.internalServices.argoCD":{id:"otc-edpFoundry.cce.internalServices.argoCD",element:"edp.argoCD",style:{}},"otc-edpFoundry.cce.internalServices.forgejo":{id:"otc-edpFoundry.cce.internalServices.forgejo",element:"edp.forgejo",style:{}},"otc-edpFoundry.cce.internalServices.externalSecrets":{id:"otc-edpFoundry.cce.internalServices.externalSecrets",element:"edp.externalSecrets",style:{}},"otc-edpFoundry.cce.internalServices.openbao":{id:"otc-edpFoundry.cce.internalServices.openbao",element:"edp.openbao",style:{}},"otc-edpFoundry.cce.internalServices.ingressNginx":{id:"otc-edpFoundry.cce.internalServices.ingressNginx",element:"edp.ingressNginx",style:{}},"otc-edpFoundry.cce.centralObservability.grafana":{id:"otc-edpFoundry.cce.centralObservability.grafana",element:"edp.grafana",style:{}},"otc-edpFoundry.cce.centralObservability.prometheus":{id:"otc-edpFoundry.cce.centralObservability.prometheus",element:"edp.prometheus",style:{}},"otc-edpFoundry.cce.centralObservability.loki":{id:"otc-edpFoundry.cce.centralObservability.loki",element:"edp.loki",style:{}},"otc-faas.dev.cce.edp.forgejo":{id:"otc-faas.dev.cce.edp.forgejo",element:"edp.forgejo",style:{}},"otc-faas.prod.cce.edp.forgejo":{id:"otc-faas.prod.cce.edp.forgejo",element:"edp.forgejo",title:"Forgejo for all EDP-tenants",description:{txt:"buildth.ing"},style:{}}},relations:{g9oj4f:{title:"registers",source:{deployment:"otc-edp-per-tenant.forgejoRunnerInfrastructure.forgejoRunner"},target:{deployment:"otc-edp-per-tenant.cce.edp.forgejo"},id:"g9oj4f"},"1fzhjm9":{source:{deployment:"otc-edp-per-tenant.cce.edp.forgejo"},target:{deployment:"otc-edp-per-tenant.cloudServices.elasticsearch"},id:"1fzhjm9"},"15njmlz":{source:{deployment:"otc-edp-per-tenant.cce.edp.forgejo"},target:{deployment:"otc-edp-per-tenant.cloudServices.objectstorage"},id:"15njmlz"},hks76r:{source:{deployment:"otc-edp-per-tenant.cce.edp.forgejo"},target:{deployment:"otc-edp-per-tenant.cloudServices.postgres"},id:"hks76r"},"1w18ve8":{source:{deployment:"otc-edp-per-tenant.cce.edp.forgejo"},target:{deployment:"otc-edp-per-tenant.cloudServices.redis"},id:"1w18ve8"},dz2rdn:{source:{deployment:"otc-faas.dev.cce.edp.forgejo"},target:{deployment:"otc-faas.dev.cloudServices"},id:"dz2rdn"},"2shw6y":{source:{deployment:"otc-faas.prod.cce.edp.forgejo"},target:{deployment:"otc-faas.prod.cloudServices"},id:"2shw6y"},"7kqly3":{title:"runs",source:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner"},target:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker"},id:"7kqly3"},"12hf1w4":{title:"executes",source:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunnerWorker"},target:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow"},id:"12hf1w4"},uk77s5:{title:"deploys edp to otc.cce",source:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow"},target:{deployment:"otc-edp-per-tenant.cce.edp"},id:"uk77s5"},"1pfc6bl":{title:"deploys edp to otc.paas",source:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.edpworkflow"},target:{deployment:"otc-edp-per-tenant.cloudServices"},id:"1pfc6bl"},hqie0:{title:"runs",source:{deployment:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner"},target:{deployment:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker"},id:"hqie0"},"1j16hqv":{title:"executes",source:{deployment:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunnerWorker"},target:{deployment:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow"},id:"1j16hqv"},jde35l:{source:{deployment:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.edpworkflow"},target:{deployment:"otc-edp-per-tenant.cce.edp.argoCD"},id:"jde35l"},"1umzqdy":{title:"registers",source:{deployment:"otc-edpFoundry.forgejoRunnerInfrastructure.forgejoRunner"},target:{deployment:"otc-edpFoundry.cce.internalServices.forgejo"},id:"1umzqdy"},dola40:{title:"invokes",source:{deployment:"otc-edpFoundry.cce.internalServices.forgejo"},target:{deployment:"otc-edpFoundry.workflowSetupEDPInfrastructure.forgejoRunner"},id:"dola40"},"1f5y9gc":{title:"invokes",source:{deployment:"otc-edpFoundry.cce.internalServices.forgejo"},target:{deployment:"otc-edpFoundry.workflowSetupArgoCDInfrastructure.forgejoRunner"},id:"1f5y9gc"}}},imports:{}}),{useLikeC4Model:knt}=xnt(wnt);function _nt({children:e}){const r=knt();return y.jsx(yrt,{likec4model:r,children:e})}function Ent(e){return y.jsx(_nt,{children:y.jsx(qrt,{renderIcon:snt,...e})})}var IR={exports:{}},rb={},OR={exports:{}},jR={};var qne;function Snt(){return qne||(qne=1,(function(e){function r(I,H){var q=I.length;I.push(H);e:for(;0>>1,W=I[Z];if(0>>1;Za(j,q))Ya(Q,j)?(I[Z]=Q,I[Y]=q,Z=Y):(I[Z]=j,I[K]=q,Z=K);else if(Ya(Q,q))I[Z]=Q,I[Y]=q,Z=Y;else break e}}return H}function a(I,H){var q=I.sortIndex-H.sortIndex;return q!==0?q:I.id-H.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var s=Date,l=s.now();e.unstable_now=function(){return s.now()-l}}var c=[],u=[],d=1,h=null,f=3,g=!1,b=!1,x=!1,w=!1,k=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;function T(I){for(var H=n(u);H!==null;){if(H.callback===null)o(u);else if(H.startTime<=I)o(u),H.sortIndex=H.expirationTime,r(c,H);else break;H=n(u)}}function A(I){if(x=!1,T(I),!b)if(n(c)!==null)b=!0,R||(R=!0,L());else{var H=n(u);H!==null&&V(A,H.startTime-I)}}var R=!1,D=-1,N=5,M=-1;function O(){return w?!0:!(e.unstable_now()-MI&&O());){var Z=h.callback;if(typeof Z=="function"){h.callback=null,f=h.priorityLevel;var W=Z(h.expirationTime<=I);if(I=e.unstable_now(),typeof W=="function"){h.callback=W,T(I),H=!0;break t}h===n(c)&&o(c),T(I)}else o(c);h=n(c)}if(h!==null)H=!0;else{var G=n(u);G!==null&&V(A,G.startTime-I),H=!1}}break e}finally{h=null,f=q,g=!1}H=void 0}}finally{H?L():R=!1}}}var L;if(typeof _=="function")L=function(){_(F)};else if(typeof MessageChannel<"u"){var U=new MessageChannel,P=U.port2;U.port1.onmessage=F,L=function(){P.postMessage(null)}}else L=function(){k(F,0)};function V(I,H){D=k(function(){I(e.unstable_now())},H)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(I){I.callback=null},e.unstable_forceFrameRate=function(I){0>I||125Z?(I.sortIndex=q,r(u,I),n(c)===null&&I===n(u)&&(x?(C(D),D=-1):x=!0,V(A,q-Z))):(I.sortIndex=W,r(c,I),b||g||(b=!0,R||(R=!0,L()))),I},e.unstable_shouldYield=O,e.unstable_wrapCallback=function(I){var H=f;return function(){var q=f;f=H;try{return I.apply(this,arguments)}finally{f=q}}}})(jR)),jR}var Une;function Cnt(){return Une||(Une=1,OR.exports=Snt()),OR.exports}var Wne;function Tnt(){if(Wne)return rb;Wne=1;var e=Cnt(),r=h6(),n=Kz();function o(p){var m="https://react.dev/errors/"+p;if(1W||(p.current=Z[W],Z[W]=null,W--)}function j(p,m){W++,Z[W]=p.current,p.current=m}var Y=G(null),Q=G(null),J=G(null),ie=G(null);function ne(p,m){switch(j(J,m),j(Q,p),j(Y,null),m.nodeType){case 9:case 11:p=(p=m.documentElement)&&(p=p.namespaceURI)?Gge(p):0;break;default:if(p=m.tagName,m=m.namespaceURI)m=Gge(m),p=Xge(m,p);else switch(p){case"svg":p=1;break;case"math":p=2;break;default:p=0}}K(Y),j(Y,p)}function re(){K(Y),K(Q),K(J)}function ge(p){p.memoizedState!==null&&j(ie,p);var m=Y.current,v=Xge(m,p.type);m!==v&&(j(Q,p),j(Y,v))}function De(p){Q.current===p&&(K(Y),K(Q)),ie.current===p&&(K(ie),jv._currentValue=q)}var he,me;function Te(p){if(he===void 0)try{throw Error()}catch(v){var m=v.stack.trim().match(/\n( *(at )?)/);he=m&&m[1]||"",me=-1)":-1$||pe[S]!==we[$]){var Ne=` +`+pe[S].replace(" at new "," at ");return p.displayName&&Ne.includes("")&&(Ne=Ne.replace("",p.displayName)),Ne}while(1<=S&&0<=$);break}}}finally{Ie=!1,Error.prepareStackTrace=v}return(v=p?p.displayName||p.name:"")?Te(v):""}function rt(p,m){switch(p.tag){case 26:case 27:case 5:return Te(p.type);case 16:return Te("Lazy");case 13:return p.child!==m&&m!==null?Te("Suspense Fallback"):Te("Suspense");case 19:return Te("SuspenseList");case 0:case 15:return Ze(p.type,!1);case 11:return Ze(p.type.render,!1);case 1:return Ze(p.type,!0);case 31:return Te("Activity");default:return""}}function Rt(p){try{var m="",v=null;do m+=rt(p,v),v=p,p=p.return;while(p);return m}catch(S){return` +Error generating stack: `+S.message+` +`+S.stack}}var Qe=Object.prototype.hasOwnProperty,Pt=e.unstable_scheduleCallback,Ke=e.unstable_cancelCallback,Ge=e.unstable_shouldYield,ct=e.unstable_requestPaint,ut=e.unstable_now,Ir=e.unstable_getCurrentPriorityLevel,Ee=e.unstable_ImmediatePriority,Se=e.unstable_UserBlockingPriority,it=e.unstable_NormalPriority,xt=e.unstable_LowPriority,zt=e.unstable_IdlePriority,Fr=e.log,It=e.unstable_setDisableYieldValue,vr=null,fr=null;function un(p){if(typeof Fr=="function"&&It(p),fr&&typeof fr.setStrictMode=="function")try{fr.setStrictMode(vr,p)}catch{}}var ir=Math.clz32?Math.clz32:ea,vn=Math.log,xr=Math.LN2;function ea(p){return p>>>=0,p===0?32:31-(vn(p)/xr|0)|0}var xa=256,Gs=262144,Vo=4194304;function wa(p){var m=p&42;if(m!==0)return m;switch(p&-p){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return p&261888;case 262144:case 524288:case 1048576:case 2097152:return p&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return p&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return p}}function Xs(p,m,v){var S=p.pendingLanes;if(S===0)return 0;var $=0,z=p.suspendedLanes,X=p.pingedLanes;p=p.warmLanes;var oe=S&134217727;return oe!==0?(S=oe&~z,S!==0?$=wa(S):(X&=oe,X!==0?$=wa(X):v||(v=oe&~p,v!==0&&($=wa(v))))):(oe=S&~z,oe!==0?$=wa(oe):X!==0?$=wa(X):v||(v=S&~p,v!==0&&($=wa(v)))),$===0?0:m!==0&&m!==$&&(m&z)===0&&(z=$&-$,v=m&-m,z>=v||z===32&&(v&4194048)!==0)?m:$}function fo(p,m){return(p.pendingLanes&~(p.suspendedLanes&~p.pingedLanes)&m)===0}function Ol(p,m){switch(p){case 1:case 2:case 4:case 8:case 64:return m+250;case 16:case 32: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 m+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function jl(){var p=Vo;return Vo<<=1,(Vo&62914560)===0&&(Vo=4194304),p}function Bc(p){for(var m=[],v=0;31>v;v++)m.push(p);return m}function Ks(p,m){p.pendingLanes|=m,m!==268435456&&(p.suspendedLanes=0,p.pingedLanes=0,p.warmLanes=0)}function Rh(p,m,v,S,$,z){var X=p.pendingLanes;p.pendingLanes=v,p.suspendedLanes=0,p.pingedLanes=0,p.warmLanes=0,p.expiredLanes&=v,p.entangledLanes&=v,p.errorRecoveryDisabledLanes&=v,p.shellSuspendCounter=0;var oe=p.entanglements,pe=p.expirationTimes,we=p.hiddenUpdates;for(v=X&~v;0"u")return null;try{return p.activeElement||p.body}catch{return p.body}}var pd=/[\n"\\]/g;function ee(p){return p.replace(pd,function(m){return"\\"+m.charCodeAt(0).toString(16)+" "})}function te(p,m,v,S,$,z,X,oe){p.name="",X!=null&&typeof X!="function"&&typeof X!="symbol"&&typeof X!="boolean"?p.type=X:p.removeAttribute("type"),m!=null?X==="number"?(m===0&&p.value===""||p.value!=m)&&(p.value=""+nn(m)):p.value!==""+nn(m)&&(p.value=""+nn(m)):X!=="submit"&&X!=="reset"||p.removeAttribute("value"),m!=null?le(p,X,nn(m)):v!=null?le(p,X,nn(v)):S!=null&&p.removeAttribute("value"),$==null&&z!=null&&(p.defaultChecked=!!z),$!=null&&(p.checked=$&&typeof $!="function"&&typeof $!="symbol"),oe!=null&&typeof oe!="function"&&typeof oe!="symbol"&&typeof oe!="boolean"?p.name=""+nn(oe):p.removeAttribute("name")}function ae(p,m,v,S,$,z,X,oe){if(z!=null&&typeof z!="function"&&typeof z!="symbol"&&typeof z!="boolean"&&(p.type=z),m!=null||v!=null){if(!(z!=="submit"&&z!=="reset"||m!=null)){Fi(p);return}v=v!=null?""+nn(v):"",m=m!=null?""+nn(m):v,oe||m===p.value||(p.value=m),p.defaultValue=m}S=S??$,S=typeof S!="function"&&typeof S!="symbol"&&!!S,p.checked=oe?p.checked:!!S,p.defaultChecked=!!S,X!=null&&typeof X!="function"&&typeof X!="symbol"&&typeof X!="boolean"&&(p.name=X),Fi(p)}function le(p,m,v){m==="number"&&Ul(p.ownerDocument)===p||p.defaultValue===""+v||(p.defaultValue=""+v)}function ue(p,m,v,S){if(p=p.options,m){m={};for(var $=0;$"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),HM=!1;if(Uc)try{var rv={};Object.defineProperty(rv,"passive",{get:function(){HM=!0}}),window.addEventListener("test",rv,rv),window.removeEventListener("test",rv,rv)}catch{HM=!1}var fd=null,VM=null,r_=null;function Xhe(){if(r_)return r_;var p,m=VM,v=m.length,S,$="value"in fd?fd.value:fd.textContent,z=$.length;for(p=0;p=av),tfe=" ",rfe=!1;function nfe(p,m){switch(p){case"keyup":return hwt.indexOf(m.keyCode)!==-1;case"keydown":return m.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ofe(p){return p=p.detail,typeof p=="object"&&"data"in p?p.data:null}var Og=!1;function mwt(p,m){switch(p){case"compositionend":return ofe(m);case"keypress":return m.which!==32?null:(rfe=!0,tfe);case"textInput":return p=m.data,p===tfe&&rfe?null:p;default:return null}}function gwt(p,m){if(Og)return p==="compositionend"||!GM&&nfe(p,m)?(p=Xhe(),r_=VM=fd=null,Og=!1,p):null;switch(p){case"paste":return null;case"keypress":if(!(m.ctrlKey||m.altKey||m.metaKey)||m.ctrlKey&&m.altKey){if(m.char&&1=m)return{node:v,offset:m-p};p=S}e:{for(;v;){if(v.nextSibling){v=v.nextSibling;break e}v=v.parentNode}v=void 0}v=pfe(v)}}function ffe(p,m){return p&&m?p===m?!0:p&&p.nodeType===3?!1:m&&m.nodeType===3?ffe(p,m.parentNode):"contains"in p?p.contains(m):p.compareDocumentPosition?!!(p.compareDocumentPosition(m)&16):!1:!1}function mfe(p){p=p!=null&&p.ownerDocument!=null&&p.ownerDocument.defaultView!=null?p.ownerDocument.defaultView:window;for(var m=Ul(p.document);m instanceof p.HTMLIFrameElement;){try{var v=typeof m.contentWindow.location.href=="string"}catch{v=!1}if(v)p=m.contentWindow;else break;m=Ul(p.document)}return m}function ZM(p){var m=p&&p.nodeName&&p.nodeName.toLowerCase();return m&&(m==="input"&&(p.type==="text"||p.type==="search"||p.type==="tel"||p.type==="url"||p.type==="password")||m==="textarea"||p.contentEditable==="true")}var Ewt=Uc&&"documentMode"in document&&11>=document.documentMode,jg=null,QM=null,cv=null,JM=!1;function gfe(p,m,v){var S=v.window===v?v.document:v.nodeType===9?v:v.ownerDocument;JM||jg==null||jg!==Ul(S)||(S=jg,"selectionStart"in S&&ZM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),cv&&lv(cv,S)||(cv=S,S=X_(QM,"onSelect"),0>=X,$-=X,Wl=1<<32-ir(m)+$|v<<$|S,Yl=z+p}else Wl=1<Wt?(nr=pt,pt=null):nr=pt.sibling;var gr=ke(ye,pt,xe[Wt],$e);if(gr===null){pt===null&&(pt=nr);break}p&&pt&&gr.alternate===null&&m(ye,pt),fe=z(gr,fe,Wt),mr===null?yt=gr:mr.sibling=gr,mr=gr,pt=nr}if(Wt===xe.length)return v(ye,pt),sr&&Yc(ye,Wt),yt;if(pt===null){for(;WtWt?(nr=pt,pt=null):nr=pt.sibling;var Id=ke(ye,pt,gr.value,$e);if(Id===null){pt===null&&(pt=nr);break}p&&pt&&Id.alternate===null&&m(ye,pt),fe=z(Id,fe,Wt),mr===null?yt=Id:mr.sibling=Id,mr=Id,pt=nr}if(gr.done)return v(ye,pt),sr&&Yc(ye,Wt),yt;if(pt===null){for(;!gr.done;Wt++,gr=xe.next())gr=Pe(ye,gr.value,$e),gr!==null&&(fe=z(gr,fe,Wt),mr===null?yt=gr:mr.sibling=gr,mr=gr);return sr&&Yc(ye,Wt),yt}for(pt=S(pt);!gr.done;Wt++,gr=xe.next())gr=Ce(pt,ye,Wt,gr.value,$e),gr!==null&&(p&&gr.alternate!==null&&pt.delete(gr.key===null?Wt:gr.key),fe=z(gr,fe,Wt),mr===null?yt=gr:mr.sibling=gr,mr=gr);return p&&pt.forEach(function(q4t){return m(ye,q4t)}),sr&&Yc(ye,Wt),yt}function Mr(ye,fe,xe,$e){if(typeof xe=="object"&&xe!==null&&xe.type===x&&xe.key===null&&(xe=xe.props.children),typeof xe=="object"&&xe!==null){switch(xe.$$typeof){case g:e:{for(var yt=xe.key;fe!==null;){if(fe.key===yt){if(yt=xe.type,yt===x){if(fe.tag===7){v(ye,fe.sibling),$e=$(fe,xe.props.children),$e.return=ye,ye=$e;break e}}else if(fe.elementType===yt||typeof yt=="object"&&yt!==null&&yt.$$typeof===N&&Vh(yt)===fe.type){v(ye,fe.sibling),$e=$(fe,xe.props),mv($e,xe),$e.return=ye,ye=$e;break e}v(ye,fe);break}else m(ye,fe);fe=fe.sibling}xe.type===x?($e=jh(xe.props.children,ye.mode,$e,xe.key),$e.return=ye,ye=$e):($e=p_(xe.type,xe.key,xe.props,null,ye.mode,$e),mv($e,xe),$e.return=ye,ye=$e)}return X(ye);case b:e:{for(yt=xe.key;fe!==null;){if(fe.key===yt)if(fe.tag===4&&fe.stateNode.containerInfo===xe.containerInfo&&fe.stateNode.implementation===xe.implementation){v(ye,fe.sibling),$e=$(fe,xe.children||[]),$e.return=ye,ye=$e;break e}else{v(ye,fe);break}else m(ye,fe);fe=fe.sibling}$e=iP(xe,ye.mode,$e),$e.return=ye,ye=$e}return X(ye);case N:return xe=Vh(xe),Mr(ye,fe,xe,$e)}if(V(xe))return st(ye,fe,xe,$e);if(L(xe)){if(yt=L(xe),typeof yt!="function")throw Error(o(150));return xe=yt.call(xe),At(ye,fe,xe,$e)}if(typeof xe.then=="function")return Mr(ye,fe,v_(xe),$e);if(xe.$$typeof===_)return Mr(ye,fe,m_(ye,xe),$e);x_(ye,xe)}return typeof xe=="string"&&xe!==""||typeof xe=="number"||typeof xe=="bigint"?(xe=""+xe,fe!==null&&fe.tag===6?(v(ye,fe.sibling),$e=$(fe,xe),$e.return=ye,ye=$e):(v(ye,fe),$e=aP(xe,ye.mode,$e),$e.return=ye,ye=$e),X(ye)):v(ye,fe)}return function(ye,fe,xe,$e){try{fv=0;var yt=Mr(ye,fe,xe,$e);return Xg=null,yt}catch(pt){if(pt===Gg||pt===y_)throw pt;var mr=ti(29,pt,null,ye.mode);return mr.lanes=$e,mr.return=ye,mr}finally{}}}var Uh=Lfe(!0),Bfe=Lfe(!1),vd=!1;function bP(p){p.updateQueue={baseState:p.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vP(p,m){p=p.updateQueue,m.updateQueue===p&&(m.updateQueue={baseState:p.baseState,firstBaseUpdate:p.firstBaseUpdate,lastBaseUpdate:p.lastBaseUpdate,shared:p.shared,callbacks:null})}function xd(p){return{lane:p,tag:0,payload:null,callback:null,next:null}}function wd(p,m,v){var S=p.updateQueue;if(S===null)return null;if(S=S.shared,(wr&2)!==0){var $=S.pending;return $===null?m.next=m:(m.next=$.next,$.next=m),S.pending=m,m=d_(p),_fe(p,null,v),m}return u_(p,S,m,v),d_(p)}function gv(p,m,v){if(m=m.updateQueue,m!==null&&(m=m.shared,(v&4194048)!==0)){var S=m.lanes;S&=p.pendingLanes,v|=S,m.lanes=v,id(p,v)}}function xP(p,m){var v=p.updateQueue,S=p.alternate;if(S!==null&&(S=S.updateQueue,v===S)){var $=null,z=null;if(v=v.firstBaseUpdate,v!==null){do{var X={lane:v.lane,tag:v.tag,payload:v.payload,callback:null,next:null};z===null?$=z=X:z=z.next=X,v=v.next}while(v!==null);z===null?$=z=m:z=z.next=m}else $=z=m;v={baseState:S.baseState,firstBaseUpdate:$,lastBaseUpdate:z,shared:S.shared,callbacks:S.callbacks},p.updateQueue=v;return}p=v.lastBaseUpdate,p===null?v.firstBaseUpdate=m:p.next=m,v.lastBaseUpdate=m}var wP=!1;function yv(){if(wP){var p=Yg;if(p!==null)throw p}}function bv(p,m,v,S){wP=!1;var $=p.updateQueue;vd=!1;var z=$.firstBaseUpdate,X=$.lastBaseUpdate,oe=$.shared.pending;if(oe!==null){$.shared.pending=null;var pe=oe,we=pe.next;pe.next=null,X===null?z=we:X.next=we,X=pe;var Ne=p.alternate;Ne!==null&&(Ne=Ne.updateQueue,oe=Ne.lastBaseUpdate,oe!==X&&(oe===null?Ne.firstBaseUpdate=we:oe.next=we,Ne.lastBaseUpdate=pe))}if(z!==null){var Pe=$.baseState;X=0,Ne=we=pe=null,oe=z;do{var ke=oe.lane&-536870913,Ce=ke!==oe.lane;if(Ce?(rr&ke)===ke:(S&ke)===ke){ke!==0&&ke===Wg&&(wP=!0),Ne!==null&&(Ne=Ne.next={lane:0,tag:oe.tag,payload:oe.payload,callback:null,next:null});e:{var st=p,At=oe;ke=m;var Mr=v;switch(At.tag){case 1:if(st=At.payload,typeof st=="function"){Pe=st.call(Mr,Pe,ke);break e}Pe=st;break e;case 3:st.flags=st.flags&-65537|128;case 0:if(st=At.payload,ke=typeof st=="function"?st.call(Mr,Pe,ke):st,ke==null)break e;Pe=h({},Pe,ke);break e;case 2:vd=!0}}ke=oe.callback,ke!==null&&(p.flags|=64,Ce&&(p.flags|=8192),Ce=$.callbacks,Ce===null?$.callbacks=[ke]:Ce.push(ke))}else Ce={lane:ke,tag:oe.tag,payload:oe.payload,callback:oe.callback,next:null},Ne===null?(we=Ne=Ce,pe=Pe):Ne=Ne.next=Ce,X|=ke;if(oe=oe.next,oe===null){if(oe=$.shared.pending,oe===null)break;Ce=oe,oe=Ce.next,Ce.next=null,$.lastBaseUpdate=Ce,$.shared.pending=null}}while(!0);Ne===null&&(pe=Pe),$.baseState=pe,$.firstBaseUpdate=we,$.lastBaseUpdate=Ne,z===null&&($.shared.lanes=0),Cd|=X,p.lanes=X,p.memoizedState=Pe}}function Ffe(p,m){if(typeof p!="function")throw Error(o(191,p));p.call(m)}function Hfe(p,m){var v=p.callbacks;if(v!==null)for(p.callbacks=null,p=0;pz?z:8;var X=I.T,oe={};I.T=oe,BP(p,!1,m,v);try{var pe=$(),we=I.S;if(we!==null&&we(oe,pe),pe!==null&&typeof pe=="object"&&typeof pe.then=="function"){var Ne=Mwt(pe,S);wv(p,m,Ne,ii(p))}else wv(p,m,S,ii(p))}catch(Pe){wv(p,m,{then:function(){},status:"rejected",reason:Pe},ii())}finally{H.p=z,X!==null&&oe.types!==null&&(X.types=oe.types),I.T=X}}function Lwt(){}function jP(p,m,v,S){if(p.tag!==5)throw Error(o(476));var $=xme(p).queue;vme(p,$,m,q,v===null?Lwt:function(){return wme(p),v(S)})}function xme(p){var m=p.memoizedState;if(m!==null)return m;m={memoizedState:q,baseState:q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zc,lastRenderedState:q},next:null};var v={};return m.next={memoizedState:v,baseState:v,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zc,lastRenderedState:v},next:null},p.memoizedState=m,p=p.alternate,p!==null&&(p.memoizedState=m),m}function wme(p){var m=xme(p);m.next===null&&(m=p.alternate.memoizedState),wv(p,m.next.queue,{},ii())}function LP(){return To(jv)}function kme(){return Rn().memoizedState}function _me(){return Rn().memoizedState}function Bwt(p){for(var m=p.return;m!==null;){switch(m.tag){case 24:case 3:var v=ii();p=xd(v);var S=wd(m,p,v);S!==null&&(Aa(S,m,v),gv(S,m,v)),m={cache:fP()},p.payload=m;return}m=m.return}}function Fwt(p,m,v){var S=ii();v={lane:S,revertLane:0,gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},N_(p)?Sme(m,v):(v=nP(p,m,v,S),v!==null&&(Aa(v,p,S),Cme(v,m,S)))}function Eme(p,m,v){var S=ii();wv(p,m,v,S)}function wv(p,m,v,S){var $={lane:S,revertLane:0,gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null};if(N_(p))Sme(m,$);else{var z=p.alternate;if(p.lanes===0&&(z===null||z.lanes===0)&&(z=m.lastRenderedReducer,z!==null))try{var X=m.lastRenderedState,oe=z(X,v);if($.hasEagerState=!0,$.eagerState=oe,ei(oe,X))return u_(p,m,$,0),Or===null&&c_(),!1}catch{}finally{}if(v=nP(p,m,$,S),v!==null)return Aa(v,p,S),Cme(v,m,S),!0}return!1}function BP(p,m,v,S){if(S={lane:2,revertLane:bz(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},N_(p)){if(m)throw Error(o(479))}else m=nP(p,v,S,2),m!==null&&Aa(m,p,2)}function N_(p){var m=p.alternate;return p===Ut||m!==null&&m===Ut}function Sme(p,m){Zg=__=!0;var v=p.pending;v===null?m.next=m:(m.next=v.next,v.next=m),p.pending=m}function Cme(p,m,v){if((v&4194048)!==0){var S=m.lanes;S&=p.pendingLanes,v|=S,m.lanes=v,id(p,v)}}var kv={readContext:To,use:C_,useCallback:xn,useContext:xn,useEffect:xn,useImperativeHandle:xn,useLayoutEffect:xn,useInsertionEffect:xn,useMemo:xn,useReducer:xn,useRef:xn,useState:xn,useDebugValue:xn,useDeferredValue:xn,useTransition:xn,useSyncExternalStore:xn,useId:xn,useHostTransitionStatus:xn,useFormState:xn,useActionState:xn,useOptimistic:xn,useMemoCache:xn,useCacheRefresh:xn};kv.useEffectEvent=xn;var Tme={readContext:To,use:C_,useCallback:function(p,m){return na().memoizedState=[p,m===void 0?null:m],p},useContext:To,useEffect:ume,useImperativeHandle:function(p,m,v){v=v!=null?v.concat([p]):null,A_(4194308,4,fme.bind(null,m,p),v)},useLayoutEffect:function(p,m){return A_(4194308,4,p,m)},useInsertionEffect:function(p,m){A_(4,2,p,m)},useMemo:function(p,m){var v=na();m=m===void 0?null:m;var S=p();if(Wh){un(!0);try{p()}finally{un(!1)}}return v.memoizedState=[S,m],S},useReducer:function(p,m,v){var S=na();if(v!==void 0){var $=v(m);if(Wh){un(!0);try{v(m)}finally{un(!1)}}}else $=m;return S.memoizedState=S.baseState=$,p={pending:null,lanes:0,dispatch:null,lastRenderedReducer:p,lastRenderedState:$},S.queue=p,p=p.dispatch=Fwt.bind(null,Ut,p),[S.memoizedState,p]},useRef:function(p){var m=na();return p={current:p},m.memoizedState=p},useState:function(p){p=MP(p);var m=p.queue,v=Eme.bind(null,Ut,m);return m.dispatch=v,[p.memoizedState,v]},useDebugValue:IP,useDeferredValue:function(p,m){var v=na();return OP(v,p,m)},useTransition:function(){var p=MP(!1);return p=vme.bind(null,Ut,p.queue,!0,!1),na().memoizedState=p,[!1,p]},useSyncExternalStore:function(p,m,v){var S=Ut,$=na();if(sr){if(v===void 0)throw Error(o(407));v=v()}else{if(v=m(),Or===null)throw Error(o(349));(rr&127)!==0||Gfe(S,m,v)}$.memoizedState=v;var z={value:v,getSnapshot:m};return $.queue=z,ume(Kfe.bind(null,S,z,p),[p]),S.flags|=2048,Jg(9,{destroy:void 0},Xfe.bind(null,S,z,v,m),null),v},useId:function(){var p=na(),m=Or.identifierPrefix;if(sr){var v=Yl,S=Wl;v=(S&~(1<<32-ir(S)-1)).toString(32)+v,m="_"+m+"R_"+v,v=E_++,0<\/script>",z=z.removeChild(z.firstChild);break;case"select":z=typeof S.is=="string"?X.createElement("select",{is:S.is}):X.createElement("select"),S.multiple?z.multiple=!0:S.size&&(z.size=S.size);break;default:z=typeof S.is=="string"?X.createElement($,{is:S.is}):X.createElement($)}}z[Wr]=m,z[Vn]=S;e:for(X=m.child;X!==null;){if(X.tag===5||X.tag===6)z.appendChild(X.stateNode);else if(X.tag!==4&&X.tag!==27&&X.child!==null){X.child.return=X,X=X.child;continue}if(X===m)break e;for(;X.sibling===null;){if(X.return===null||X.return===m)break e;X=X.return}X.sibling.return=X.return,X=X.sibling}m.stateNode=z;e:switch(Ro(z,$,S),$){case"button":case"input":case"select":case"textarea":S=!!S.autoFocus;break e;case"img":S=!0;break e;default:S=!1}S&&Jc(m)}}return Gr(m),ez(m,m.type,p===null?null:p.memoizedProps,m.pendingProps,v),null;case 6:if(p&&m.stateNode!=null)p.memoizedProps!==S&&Jc(m);else{if(typeof S!="string"&&m.stateNode===null)throw Error(o(166));if(p=J.current,qg(m)){if(p=m.stateNode,v=m.memoizedProps,S=null,$=Co,$!==null)switch($.tag){case 27:case 5:S=$.memoizedProps}p[Wr]=m,p=!!(p.nodeValue===v||S!==null&&S.suppressHydrationWarning===!0||Wge(p.nodeValue,v)),p||yd(m,!0)}else p=K_(p).createTextNode(S),p[Wr]=m,m.stateNode=p}return Gr(m),null;case 31:if(v=m.memoizedState,p===null||p.memoizedState!==null){if(S=qg(m),v!==null){if(p===null){if(!S)throw Error(o(318));if(p=m.memoizedState,p=p!==null?p.dehydrated:null,!p)throw Error(o(557));p[Wr]=m}else Lh(),(m.flags&128)===0&&(m.memoizedState=null),m.flags|=4;Gr(m),p=!1}else v=uP(),p!==null&&p.memoizedState!==null&&(p.memoizedState.hydrationErrors=v),p=!0;if(!p)return m.flags&256?(ni(m),m):(ni(m),null);if((m.flags&128)!==0)throw Error(o(558))}return Gr(m),null;case 13:if(S=m.memoizedState,p===null||p.memoizedState!==null&&p.memoizedState.dehydrated!==null){if($=qg(m),S!==null&&S.dehydrated!==null){if(p===null){if(!$)throw Error(o(318));if($=m.memoizedState,$=$!==null?$.dehydrated:null,!$)throw Error(o(317));$[Wr]=m}else Lh(),(m.flags&128)===0&&(m.memoizedState=null),m.flags|=4;Gr(m),$=!1}else $=uP(),p!==null&&p.memoizedState!==null&&(p.memoizedState.hydrationErrors=$),$=!0;if(!$)return m.flags&256?(ni(m),m):(ni(m),null)}return ni(m),(m.flags&128)!==0?(m.lanes=v,m):(v=S!==null,p=p!==null&&p.memoizedState!==null,v&&(S=m.child,$=null,S.alternate!==null&&S.alternate.memoizedState!==null&&S.alternate.memoizedState.cachePool!==null&&($=S.alternate.memoizedState.cachePool.pool),z=null,S.memoizedState!==null&&S.memoizedState.cachePool!==null&&(z=S.memoizedState.cachePool.pool),z!==$&&(S.flags|=2048)),v!==p&&v&&(m.child.flags|=8192),z_(m,m.updateQueue),Gr(m),null);case 4:return re(),p===null&&kz(m.stateNode.containerInfo),Gr(m),null;case 10:return Xc(m.type),Gr(m),null;case 19:if(K(An),S=m.memoizedState,S===null)return Gr(m),null;if($=(m.flags&128)!==0,z=S.rendering,z===null)if($)Ev(S,!1);else{if(wn!==0||p!==null&&(p.flags&128)!==0)for(p=m.child;p!==null;){if(z=k_(p),z!==null){for(m.flags|=128,Ev(S,!1),p=z.updateQueue,m.updateQueue=p,z_(m,p),m.subtreeFlags=0,p=v,v=m.child;v!==null;)Efe(v,p),v=v.sibling;return j(An,An.current&1|2),sr&&Yc(m,S.treeForkCount),m.child}p=p.sibling}S.tail!==null&&ut()>B_&&(m.flags|=128,$=!0,Ev(S,!1),m.lanes=4194304)}else{if(!$)if(p=k_(z),p!==null){if(m.flags|=128,$=!0,p=p.updateQueue,m.updateQueue=p,z_(m,p),Ev(S,!0),S.tail===null&&S.tailMode==="hidden"&&!z.alternate&&!sr)return Gr(m),null}else 2*ut()-S.renderingStartTime>B_&&v!==536870912&&(m.flags|=128,$=!0,Ev(S,!1),m.lanes=4194304);S.isBackwards?(z.sibling=m.child,m.child=z):(p=S.last,p!==null?p.sibling=z:m.child=z,S.last=z)}return S.tail!==null?(p=S.tail,S.rendering=p,S.tail=p.sibling,S.renderingStartTime=ut(),p.sibling=null,v=An.current,j(An,$?v&1|2:v&1),sr&&Yc(m,S.treeForkCount),p):(Gr(m),null);case 22:case 23:return ni(m),_P(),S=m.memoizedState!==null,p!==null?p.memoizedState!==null!==S&&(m.flags|=8192):S&&(m.flags|=8192),S?(v&536870912)!==0&&(m.flags&128)===0&&(Gr(m),m.subtreeFlags&6&&(m.flags|=8192)):Gr(m),v=m.updateQueue,v!==null&&z_(m,v.retryQueue),v=null,p!==null&&p.memoizedState!==null&&p.memoizedState.cachePool!==null&&(v=p.memoizedState.cachePool.pool),S=null,m.memoizedState!==null&&m.memoizedState.cachePool!==null&&(S=m.memoizedState.cachePool.pool),S!==v&&(m.flags|=2048),p!==null&&K(Hh),null;case 24:return v=null,p!==null&&(v=p.memoizedState.cache),m.memoizedState.cache!==v&&(m.flags|=2048),Xc(qn),Gr(m),null;case 25:return null;case 30:return null}throw Error(o(156,m.tag))}function Wwt(p,m){switch(lP(m),m.tag){case 1:return p=m.flags,p&65536?(m.flags=p&-65537|128,m):null;case 3:return Xc(qn),re(),p=m.flags,(p&65536)!==0&&(p&128)===0?(m.flags=p&-65537|128,m):null;case 26:case 27:case 5:return De(m),null;case 31:if(m.memoizedState!==null){if(ni(m),m.alternate===null)throw Error(o(340));Lh()}return p=m.flags,p&65536?(m.flags=p&-65537|128,m):null;case 13:if(ni(m),p=m.memoizedState,p!==null&&p.dehydrated!==null){if(m.alternate===null)throw Error(o(340));Lh()}return p=m.flags,p&65536?(m.flags=p&-65537|128,m):null;case 19:return K(An),null;case 4:return re(),null;case 10:return Xc(m.type),null;case 22:case 23:return ni(m),_P(),p!==null&&K(Hh),p=m.flags,p&65536?(m.flags=p&-65537|128,m):null;case 24:return Xc(qn),null;case 25:return null;default:return null}}function Zme(p,m){switch(lP(m),m.tag){case 3:Xc(qn),re();break;case 26:case 27:case 5:De(m);break;case 4:re();break;case 31:m.memoizedState!==null&&ni(m);break;case 13:ni(m);break;case 19:K(An);break;case 10:Xc(m.type);break;case 22:case 23:ni(m),_P(),p!==null&&K(Hh);break;case 24:Xc(qn)}}function Sv(p,m){try{var v=m.updateQueue,S=v!==null?v.lastEffect:null;if(S!==null){var $=S.next;v=$;do{if((v.tag&p)===p){S=void 0;var z=v.create,X=v.inst;S=z(),X.destroy=S}v=v.next}while(v!==$)}}catch(oe){Cr(m,m.return,oe)}}function Ed(p,m,v){try{var S=m.updateQueue,$=S!==null?S.lastEffect:null;if($!==null){var z=$.next;S=z;do{if((S.tag&p)===p){var X=S.inst,oe=X.destroy;if(oe!==void 0){X.destroy=void 0,$=m;var pe=v,we=oe;try{we()}catch(Ne){Cr($,pe,Ne)}}}S=S.next}while(S!==z)}}catch(Ne){Cr(m,m.return,Ne)}}function Qme(p){var m=p.updateQueue;if(m!==null){var v=p.stateNode;try{Hfe(m,v)}catch(S){Cr(p,p.return,S)}}}function Jme(p,m,v){v.props=Yh(p.type,p.memoizedProps),v.state=p.memoizedState;try{v.componentWillUnmount()}catch(S){Cr(p,m,S)}}function Cv(p,m){try{var v=p.ref;if(v!==null){switch(p.tag){case 26:case 27:case 5:var S=p.stateNode;break;case 30:S=p.stateNode;break;default:S=p.stateNode}typeof v=="function"?p.refCleanup=v(S):v.current=S}}catch($){Cr(p,m,$)}}function Gl(p,m){var v=p.ref,S=p.refCleanup;if(v!==null)if(typeof S=="function")try{S()}catch($){Cr(p,m,$)}finally{p.refCleanup=null,p=p.alternate,p!=null&&(p.refCleanup=null)}else if(typeof v=="function")try{v(null)}catch($){Cr(p,m,$)}else v.current=null}function ege(p){var m=p.type,v=p.memoizedProps,S=p.stateNode;try{e:switch(m){case"button":case"input":case"select":case"textarea":v.autoFocus&&S.focus();break e;case"img":v.src?S.src=v.src:v.srcSet&&(S.srcset=v.srcSet)}}catch($){Cr(p,p.return,$)}}function tz(p,m,v){try{var S=p.stateNode;f4t(S,p.type,v,m),S[Vn]=m}catch($){Cr(p,p.return,$)}}function tge(p){return p.tag===5||p.tag===3||p.tag===26||p.tag===27&&Dd(p.type)||p.tag===4}function rz(p){e:for(;;){for(;p.sibling===null;){if(p.return===null||tge(p.return))return null;p=p.return}for(p.sibling.return=p.return,p=p.sibling;p.tag!==5&&p.tag!==6&&p.tag!==18;){if(p.tag===27&&Dd(p.type)||p.flags&2||p.child===null||p.tag===4)continue e;p.child.return=p,p=p.child}if(!(p.flags&2))return p.stateNode}}function nz(p,m,v){var S=p.tag;if(S===5||S===6)p=p.stateNode,m?(v.nodeType===9?v.body:v.nodeName==="HTML"?v.ownerDocument.body:v).insertBefore(p,m):(m=v.nodeType===9?v.body:v.nodeName==="HTML"?v.ownerDocument.body:v,m.appendChild(p),v=v._reactRootContainer,v!=null||m.onclick!==null||(m.onclick=Gt));else if(S!==4&&(S===27&&Dd(p.type)&&(v=p.stateNode,m=null),p=p.child,p!==null))for(nz(p,m,v),p=p.sibling;p!==null;)nz(p,m,v),p=p.sibling}function I_(p,m,v){var S=p.tag;if(S===5||S===6)p=p.stateNode,m?v.insertBefore(p,m):v.appendChild(p);else if(S!==4&&(S===27&&Dd(p.type)&&(v=p.stateNode),p=p.child,p!==null))for(I_(p,m,v),p=p.sibling;p!==null;)I_(p,m,v),p=p.sibling}function rge(p){var m=p.stateNode,v=p.memoizedProps;try{for(var S=p.type,$=m.attributes;$.length;)m.removeAttributeNode($[0]);Ro(m,S,v),m[Wr]=p,m[Vn]=v}catch(z){Cr(p,p.return,z)}}var eu=!1,Yn=!1,oz=!1,nge=typeof WeakSet=="function"?WeakSet:Set,mo=null;function Ywt(p,m){if(p=p.containerInfo,Sz=n6,p=mfe(p),ZM(p)){if("selectionStart"in p)var v={start:p.selectionStart,end:p.selectionEnd};else e:{v=(v=p.ownerDocument)&&v.defaultView||window;var S=v.getSelection&&v.getSelection();if(S&&S.rangeCount!==0){v=S.anchorNode;var $=S.anchorOffset,z=S.focusNode;S=S.focusOffset;try{v.nodeType,z.nodeType}catch{v=null;break e}var X=0,oe=-1,pe=-1,we=0,Ne=0,Pe=p,ke=null;t:for(;;){for(var Ce;Pe!==v||$!==0&&Pe.nodeType!==3||(oe=X+$),Pe!==z||S!==0&&Pe.nodeType!==3||(pe=X+S),Pe.nodeType===3&&(X+=Pe.nodeValue.length),(Ce=Pe.firstChild)!==null;)ke=Pe,Pe=Ce;for(;;){if(Pe===p)break t;if(ke===v&&++we===$&&(oe=X),ke===z&&++Ne===S&&(pe=X),(Ce=Pe.nextSibling)!==null)break;Pe=ke,ke=Pe.parentNode}Pe=Ce}v=oe===-1||pe===-1?null:{start:oe,end:pe}}else v=null}v=v||{start:0,end:0}}else v=null;for(Cz={focusedElem:p,selectionRange:v},n6=!1,mo=m;mo!==null;)if(m=mo,p=m.child,(m.subtreeFlags&1028)!==0&&p!==null)p.return=m,mo=p;else for(;mo!==null;){switch(m=mo,z=m.alternate,p=m.flags,m.tag){case 0:if((p&4)!==0&&(p=m.updateQueue,p=p!==null?p.events:null,p!==null))for(v=0;v title"))),Ro(z,S,v),z[Wr]=p,rn(z),S=z;break e;case"link":var X=c1e("link","href",$).get(S+(v.href||""));if(X){for(var oe=0;oeMr&&(X=Mr,Mr=At,At=X);var ye=hfe(oe,At),fe=hfe(oe,Mr);if(ye&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==ye.node||Ce.anchorOffset!==ye.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var xe=Pe.createRange();xe.setStart(ye.node,ye.offset),Ce.removeAllRanges(),At>Mr?(Ce.addRange(xe),Ce.extend(fe.node,fe.offset)):(xe.setEnd(fe.node,fe.offset),Ce.addRange(xe))}}}}for(Pe=[],Ce=oe;Ce=Ce.parentNode;)Ce.nodeType===1&&Pe.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof oe.focus=="function"&&oe.focus(),oe=0;oev?32:v,I.T=null,v=dz,dz=null;var z=Ad,X=au;if(eo=0,o1=Ad=null,au=0,(wr&6)!==0)throw Error(o(331));var oe=wr;if(wr|=4,fge(z.current),dge(z,z.current,X,v),wr=oe,$v(0,!1),fr&&typeof fr.onPostCommitFiberRoot=="function")try{fr.onPostCommitFiberRoot(vr,z)}catch{}return!0}finally{H.p=$,I.T=S,$ge(p,m)}}function Pge(p,m,v){m=Vi(v,m),m=qP(p.stateNode,m,2),p=wd(p,m,2),p!==null&&(Ks(p,2),Xl(p))}function Cr(p,m,v){if(p.tag===3)Pge(p,p,v);else for(;m!==null;){if(m.tag===3){Pge(m,p,v);break}else if(m.tag===1){var S=m.stateNode;if(typeof m.type.getDerivedStateFromError=="function"||typeof S.componentDidCatch=="function"&&(Td===null||!Td.has(S))){p=Vi(v,p),v=zme(2),S=wd(m,v,2),S!==null&&(Ime(v,S,m,p),Ks(S,2),Xl(S));break}}m=m.return}}function mz(p,m,v){var S=p.pingCache;if(S===null){S=p.pingCache=new Kwt;var $=new Set;S.set(m,$)}else $=S.get(m),$===void 0&&($=new Set,S.set(m,$));$.has(v)||(sz=!0,$.add(v),p=t4t.bind(null,p,m,v),m.then(p,p))}function t4t(p,m,v){var S=p.pingCache;S!==null&&S.delete(m),p.pingedLanes|=p.suspendedLanes&v,p.warmLanes&=~v,Or===p&&(rr&v)===v&&(wn===4||wn===3&&(rr&62914560)===rr&&300>ut()-L_?(wr&2)===0&&a1(p,0):lz|=v,n1===rr&&(n1=0)),Xl(p)}function zge(p,m){m===0&&(m=jl()),p=Oh(p,m),p!==null&&(Ks(p,m),Xl(p))}function r4t(p){var m=p.memoizedState,v=0;m!==null&&(v=m.retryLane),zge(p,v)}function n4t(p,m){var v=0;switch(p.tag){case 31:case 13:var S=p.stateNode,$=p.memoizedState;$!==null&&(v=$.retryLane);break;case 19:S=p.stateNode;break;case 22:S=p.stateNode._retryCache;break;default:throw Error(o(314))}S!==null&&S.delete(m),zge(p,v)}function o4t(p,m){return Pt(p,m)}var W_=null,s1=null,gz=!1,Y_=!1,yz=!1,Nd=0;function Xl(p){p!==s1&&p.next===null&&(s1===null?W_=s1=p:s1=s1.next=p),Y_=!0,gz||(gz=!0,i4t())}function $v(p,m){if(!yz&&Y_){yz=!0;do for(var v=!1,S=W_;S!==null;){if(p!==0){var $=S.pendingLanes;if($===0)var z=0;else{var X=S.suspendedLanes,oe=S.pingedLanes;z=(1<<31-ir(42|p)+1)-1,z&=$&~(X&~oe),z=z&201326741?z&201326741|1:z?z|2:0}z!==0&&(v=!0,Lge(S,z))}else z=rr,z=Xs(S,S===Or?z:0,S.cancelPendingCommit!==null||S.timeoutHandle!==-1),(z&3)===0||fo(S,z)||(v=!0,Lge(S,z));S=S.next}while(v);yz=!1}}function a4t(){Ige()}function Ige(){Y_=gz=!1;var p=0;Nd!==0&&g4t()&&(p=Nd);for(var m=ut(),v=null,S=W_;S!==null;){var $=S.next,z=Oge(S,m);z===0?(S.next=null,v===null?W_=$:v.next=$,$===null&&(s1=v)):(v=S,(p!==0||(z&3)!==0)&&(Y_=!0)),S=$}eo!==0&&eo!==5||$v(p),Nd!==0&&(Nd=0)}function Oge(p,m){for(var v=p.suspendedLanes,S=p.pingedLanes,$=p.expirationTimes,z=p.pendingLanes&-62914561;0oe)break;var Ne=pe.transferSize,Pe=pe.initiatorType;Ne&&Yge(Pe)&&(pe=pe.responseEnd,X+=Ne*(pe"u"?null:document;function a1e(p,m,v){var S=l1;if(S&&typeof m=="string"&&m){var $=ee(m);$='link[rel="'+p+'"][href="'+$+'"]',typeof v=="string"&&($+='[crossorigin="'+v+'"]'),o1e.has($)||(o1e.add($),p={rel:p,crossOrigin:v,href:m},S.querySelector($)===null&&(m=S.createElement("link"),Ro(m,"link",p),rn(m),S.head.appendChild(m)))}}function S4t(p){iu.D(p),a1e("dns-prefetch",p,null)}function C4t(p,m){iu.C(p,m),a1e("preconnect",p,m)}function T4t(p,m,v){iu.L(p,m,v);var S=l1;if(S&&p&&m){var $='link[rel="preload"][as="'+ee(m)+'"]';m==="image"&&v&&v.imageSrcSet?($+='[imagesrcset="'+ee(v.imageSrcSet)+'"]',typeof v.imageSizes=="string"&&($+='[imagesizes="'+ee(v.imageSizes)+'"]')):$+='[href="'+ee(p)+'"]';var z=$;switch(m){case"style":z=c1(p);break;case"script":z=u1(p)}Xi.has(z)||(p=h({rel:"preload",href:m==="image"&&v&&v.imageSrcSet?void 0:p,as:m},v),Xi.set(z,p),S.querySelector($)!==null||m==="style"&&S.querySelector(Iv(z))||m==="script"&&S.querySelector(Ov(z))||(m=S.createElement("link"),Ro(m,"link",p),rn(m),S.head.appendChild(m)))}}function A4t(p,m){iu.m(p,m);var v=l1;if(v&&p){var S=m&&typeof m.as=="string"?m.as:"script",$='link[rel="modulepreload"][as="'+ee(S)+'"][href="'+ee(p)+'"]',z=$;switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":z=u1(p)}if(!Xi.has(z)&&(p=h({rel:"modulepreload",href:p},m),Xi.set(z,p),v.querySelector($)===null)){switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(v.querySelector(Ov(z)))return}S=v.createElement("link"),Ro(S,"link",p),rn(S),v.head.appendChild(S)}}}function R4t(p,m,v){iu.S(p,m,v);var S=l1;if(S&&p){var $=So(S).hoistableStyles,z=c1(p);m=m||"default";var X=$.get(z);if(!X){var oe={loading:0,preload:null};if(X=S.querySelector(Iv(z)))oe.loading=5;else{p=h({rel:"stylesheet",href:p,"data-precedence":m},v),(v=Xi.get(z))&&Mz(p,v);var pe=X=S.createElement("link");rn(pe),Ro(pe,"link",p),pe._p=new Promise(function(we,Ne){pe.onload=we,pe.onerror=Ne}),pe.addEventListener("load",function(){oe.loading|=1}),pe.addEventListener("error",function(){oe.loading|=2}),oe.loading|=4,Q_(X,m,S)}X={type:"stylesheet",instance:X,count:1,state:oe},$.set(z,X)}}}function N4t(p,m){iu.X(p,m);var v=l1;if(v&&p){var S=So(v).hoistableScripts,$=u1(p),z=S.get($);z||(z=v.querySelector(Ov($)),z||(p=h({src:p,async:!0},m),(m=Xi.get($))&&Pz(p,m),z=v.createElement("script"),rn(z),Ro(z,"link",p),v.head.appendChild(z)),z={type:"script",instance:z,count:1,state:null},S.set($,z))}}function D4t(p,m){iu.M(p,m);var v=l1;if(v&&p){var S=So(v).hoistableScripts,$=u1(p),z=S.get($);z||(z=v.querySelector(Ov($)),z||(p=h({src:p,async:!0,type:"module"},m),(m=Xi.get($))&&Pz(p,m),z=v.createElement("script"),rn(z),Ro(z,"link",p),v.head.appendChild(z)),z={type:"script",instance:z,count:1,state:null},S.set($,z))}}function i1e(p,m,v,S){var $=($=J.current)?Z_($):null;if(!$)throw Error(o(446));switch(p){case"meta":case"title":return null;case"style":return typeof v.precedence=="string"&&typeof v.href=="string"?(m=c1(v.href),v=So($).hoistableStyles,S=v.get(m),S||(S={type:"style",instance:null,count:0,state:null},v.set(m,S)),S):{type:"void",instance:null,count:0,state:null};case"link":if(v.rel==="stylesheet"&&typeof v.href=="string"&&typeof v.precedence=="string"){p=c1(v.href);var z=So($).hoistableStyles,X=z.get(p);if(X||($=$.ownerDocument||$,X={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},z.set(p,X),(z=$.querySelector(Iv(p)))&&!z._p&&(X.instance=z,X.state.loading=5),Xi.has(p)||(v={rel:"preload",as:"style",href:v.href,crossOrigin:v.crossOrigin,integrity:v.integrity,media:v.media,hrefLang:v.hrefLang,referrerPolicy:v.referrerPolicy},Xi.set(p,v),z||$4t($,p,v,X.state))),m&&S===null)throw Error(o(528,""));return X}if(m&&S!==null)throw Error(o(529,""));return null;case"script":return m=v.async,v=v.src,typeof v=="string"&&m&&typeof m!="function"&&typeof m!="symbol"?(m=u1(v),v=So($).hoistableScripts,S=v.get(m),S||(S={type:"script",instance:null,count:0,state:null},v.set(m,S)),S):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,p))}}function c1(p){return'href="'+ee(p)+'"'}function Iv(p){return'link[rel="stylesheet"]['+p+"]"}function s1e(p){return h({},p,{"data-precedence":p.precedence,precedence:null})}function $4t(p,m,v,S){p.querySelector('link[rel="preload"][as="style"]['+m+"]")?S.loading=1:(m=p.createElement("link"),S.preload=m,m.addEventListener("load",function(){return S.loading|=1}),m.addEventListener("error",function(){return S.loading|=2}),Ro(m,"link",v),rn(m),p.head.appendChild(m))}function u1(p){return'[src="'+ee(p)+'"]'}function Ov(p){return"script[async]"+p}function l1e(p,m,v){if(m.count++,m.instance===null)switch(m.type){case"style":var S=p.querySelector('style[data-href~="'+ee(v.href)+'"]');if(S)return m.instance=S,rn(S),S;var $=h({},v,{"data-href":v.href,"data-precedence":v.precedence,href:null,precedence:null});return S=(p.ownerDocument||p).createElement("style"),rn(S),Ro(S,"style",$),Q_(S,v.precedence,p),m.instance=S;case"stylesheet":$=c1(v.href);var z=p.querySelector(Iv($));if(z)return m.state.loading|=4,m.instance=z,rn(z),z;S=s1e(v),($=Xi.get($))&&Mz(S,$),z=(p.ownerDocument||p).createElement("link"),rn(z);var X=z;return X._p=new Promise(function(oe,pe){X.onload=oe,X.onerror=pe}),Ro(z,"link",S),m.state.loading|=4,Q_(z,v.precedence,p),m.instance=z;case"script":return z=u1(v.src),($=p.querySelector(Ov(z)))?(m.instance=$,rn($),$):(S=v,($=Xi.get(z))&&(S=h({},v),Pz(S,$)),p=p.ownerDocument||p,$=p.createElement("script"),rn($),Ro($,"link",S),p.head.appendChild($),m.instance=$);case"void":return null;default:throw Error(o(443,m.type))}else m.type==="stylesheet"&&(m.state.loading&4)===0&&(S=m.instance,m.state.loading|=4,Q_(S,v.precedence,p));return m.instance}function Q_(p,m,v){for(var S=v.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),$=S.length?S[S.length-1]:null,z=$,X=0;X title"):null)}function M4t(p,m,v){if(v===1||m.itemProp!=null)return!1;switch(p){case"meta":case"title":return!0;case"style":if(typeof m.precedence!="string"||typeof m.href!="string"||m.href==="")break;return!0;case"link":if(typeof m.rel!="string"||typeof m.href!="string"||m.href===""||m.onLoad||m.onError)break;switch(m.rel){case"stylesheet":return p=m.disabled,typeof m.precedence=="string"&&p==null;default:return!0}case"script":if(m.async&&typeof m.async!="function"&&typeof m.async!="symbol"&&!m.onLoad&&!m.onError&&m.src&&typeof m.src=="string")return!0}return!1}function d1e(p){return!(p.type==="stylesheet"&&(p.state.loading&3)===0)}function P4t(p,m,v,S){if(v.type==="stylesheet"&&(typeof S.media!="string"||matchMedia(S.media).matches!==!1)&&(v.state.loading&4)===0){if(v.instance===null){var $=c1(S.href),z=m.querySelector(Iv($));if(z){m=z._p,m!==null&&typeof m=="object"&&typeof m.then=="function"&&(p.count++,p=e6.bind(p),m.then(p,p)),v.state.loading|=4,v.instance=z,rn(z);return}z=m.ownerDocument||m,S=s1e(S),($=Xi.get($))&&Mz(S,$),z=z.createElement("link"),rn(z);var X=z;X._p=new Promise(function(oe,pe){X.onload=oe,X.onerror=pe}),Ro(z,"link",S),v.instance=z}p.stylesheets===null&&(p.stylesheets=new Map),p.stylesheets.set(v,m),(m=v.state.preload)&&(v.state.loading&3)===0&&(p.count++,v=e6.bind(p),m.addEventListener("load",v),m.addEventListener("error",v))}}var zz=0;function z4t(p,m){return p.stylesheets&&p.count===0&&r6(p,p.stylesheets),0zz?50:800)+m);return p.unsuspend=v,function(){p.unsuspend=null,clearTimeout(S),clearTimeout($)}}:null}function e6(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)r6(this,this.stylesheets);else if(this.unsuspend){var p=this.unsuspend;this.unsuspend=null,p()}}}var t6=null;function r6(p,m){p.stylesheets=null,p.unsuspend!==null&&(p.count++,t6=new Map,m.forEach(I4t,p),t6=null,e6.call(p))}function I4t(p,m){if(!(m.state.loading&4)){var v=t6.get(p);if(v)var S=v.get(null);else{v=new Map,t6.set(p,v);for(var $=p.querySelectorAll("link[data-precedence],style[data-precedence]"),z=0;z<$.length;z++){var X=$[z];(X.nodeName==="LINK"||X.getAttribute("media")!=="not all")&&(v.set(X.dataset.precedence,X),S=X)}S&&v.set(null,S)}$=m.instance,X=$.getAttribute("data-precedence"),z=v.get(X)||S,z===S&&v.set(null,$),v.set(X,$),this.count++,S=e6.bind(this),$.addEventListener("load",S),$.addEventListener("error",S),z?z.parentNode.insertBefore($,z.nextSibling):(p=p.nodeType===9?p.head:p,p.insertBefore($,p.firstChild)),m.state.loading|=4}}var jv={$$typeof:_,Provider:null,Consumer:null,_currentValue:q,_currentValue2:q,_threadCount:0};function O4t(p,m,v,S,$,z,X,oe,pe){this.tag=1,this.containerInfo=p,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Bc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Bc(0),this.hiddenUpdates=Bc(null),this.identifierPrefix=S,this.onUncaughtError=$,this.onCaughtError=z,this.onRecoverableError=X,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=pe,this.incompleteTransitions=new Map}function p1e(p,m,v,S,$,z,X,oe,pe,we,Ne,Pe){return p=new O4t(p,m,v,X,pe,we,Ne,Pe,oe),m=1,z===!0&&(m|=24),z=ti(3,null,null,m),p.current=z,z.stateNode=p,m=fP(),m.refCount++,p.pooledCache=m,m.refCount++,z.memoizedState={element:S,isDehydrated:v,cache:m},bP(z),p}function h1e(p){return p?(p=Fg,p):Fg}function f1e(p,m,v,S,$,z){$=h1e($),S.context===null?S.context=$:S.pendingContext=$,S=xd(m),S.payload={element:v},z=z===void 0?null:z,z!==null&&(S.callback=z),v=wd(p,S,m),v!==null&&(Aa(v,p,m),gv(v,p,m))}function m1e(p,m){if(p=p.memoizedState,p!==null&&p.dehydrated!==null){var v=p.retryLane;p.retryLane=v!==0&&v"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(r){console.error(r)}}return e(),IR.exports=Tnt(),IR.exports}var Rnt=Ant();const Nnt={View:"likec4-view"};let LR="/";LR.endsWith("/")||(LR=LR+"/");var El=function(){return El=Object.assign||function(e){for(var r,n=1,o=arguments.length;n"u")return Ynt;var r=Gnt(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:r[0],top:r[1],right:r[2],gap:Math.max(0,o-n+r[2]-r[0])}},Knt=Qne(),eg="data-scroll-locked",Znt=function(e,r,n,o){var a=e.left,i=e.top,s=e.right,l=e.gap;return n===void 0&&(n="margin"),` + .`.concat($nt,` { + overflow: hidden `).concat(o,`; + padding-right: `).concat(l,"px ").concat(o,`; + } + body[`).concat(eg,`] { + overflow: hidden `).concat(o,`; + overscroll-behavior: contain; + `).concat([r&&"position: relative ".concat(o,";"),n==="margin"&&` + padding-left: `.concat(a,`px; + padding-top: `).concat(i,`px; + padding-right: `).concat(s,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(l,"px ").concat(o,`; + `),n==="padding"&&"padding-right: ".concat(l,"px ").concat(o,";")].filter(Boolean).join(""),` + } + + .`).concat(U4,` { + right: `).concat(l,"px ").concat(o,`; + } + + .`).concat(W4,` { + margin-right: `).concat(l,"px ").concat(o,`; + } + + .`).concat(U4," .").concat(U4,` { + right: 0 `).concat(o,`; + } + + .`).concat(W4," .").concat(W4,` { + margin-right: 0 `).concat(o,`; + } + + body[`).concat(eg,`] { + `).concat(Mnt,": ").concat(l,`px; + } +`)},Jne=function(){var e=parseInt(document.body.getAttribute(eg)||"0",10);return isFinite(e)?e:0},Qnt=function(){E.useEffect(function(){return document.body.setAttribute(eg,(Jne()+1).toString()),function(){var e=Jne()-1;e<=0?document.body.removeAttribute(eg):document.body.setAttribute(eg,e.toString())}},[])},Jnt=function(e){var r=e.noRelative,n=e.noImportant,o=e.gapMode,a=o===void 0?"margin":o;Qnt();var i=E.useMemo(function(){return Xnt(a)},[a]);return E.createElement(Knt,{styles:Znt(i,!r,a,n?"":"!important")})},VR=!1;if(typeof window<"u")try{var G4=Object.defineProperty({},"passive",{get:function(){return VR=!0,!0}});window.addEventListener("test",G4,G4),window.removeEventListener("test",G4,G4)}catch{VR=!1}var tg=VR?{passive:!1}:!1,eot=function(e){return e.tagName==="TEXTAREA"},eoe=function(e,r){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[r]!=="hidden"&&!(n.overflowY===n.overflowX&&!eot(e)&&n[r]==="visible")},tot=function(e){return eoe(e,"overflowY")},rot=function(e){return eoe(e,"overflowX")},toe=function(e,r){var n=r.ownerDocument,o=r;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var a=roe(e,o);if(a){var i=noe(e,o),s=i[1],l=i[2];if(s>l)return!0}o=o.parentNode}while(o&&o!==n.body);return!1},not=function(e){var r=e.scrollTop,n=e.scrollHeight,o=e.clientHeight;return[r,n,o]},oot=function(e){var r=e.scrollLeft,n=e.scrollWidth,o=e.clientWidth;return[r,n,o]},roe=function(e,r){return e==="v"?tot(r):rot(r)},noe=function(e,r){return e==="v"?not(r):oot(r)},aot=function(e,r){return e==="h"&&r==="rtl"?-1:1},iot=function(e,r,n,o,a){var i=aot(e,window.getComputedStyle(r).direction),s=i*o,l=n.target,c=r.contains(l),u=!1,d=s>0,h=0,f=0;do{if(!l)break;var g=noe(e,l),b=g[0],x=g[1],w=g[2],k=x-w-i*b;(b||k)&&roe(e,l)&&(h+=k,f+=b);var C=l.parentNode;l=C&&C.nodeType===Node.DOCUMENT_FRAGMENT_NODE?C.host:C}while(!c&&l!==document.body||c&&(r.contains(l)||r===l));return(d&&Math.abs(h)<1||!d&&Math.abs(f)<1)&&(u=!0),u},X4=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ooe=function(e){return[e.deltaX,e.deltaY]},aoe=function(e){return e&&"current"in e?e.current:e},sot=function(e,r){return e[0]===r[0]&&e[1]===r[1]},lot=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},cot=0,rg=[];function uot(e){var r=E.useRef([]),n=E.useRef([0,0]),o=E.useRef(),a=E.useState(cot++)[0],i=E.useState(Qne)[0],s=E.useRef(e);E.useEffect(function(){s.current=e},[e]),E.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var x=Dnt([e.lockRef.current],(e.shards||[]).map(aoe)).filter(Boolean);return x.forEach(function(w){return w.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),x.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var l=E.useCallback(function(x,w){if("touches"in x&&x.touches.length===2||x.type==="wheel"&&x.ctrlKey)return!s.current.allowPinchZoom;var k=X4(x),C=n.current,_="deltaX"in x?x.deltaX:C[0]-k[0],T="deltaY"in x?x.deltaY:C[1]-k[1],A,R=x.target,D=Math.abs(_)>Math.abs(T)?"h":"v";if("touches"in x&&D==="h"&&R.type==="range")return!1;var N=toe(D,R);if(!N)return!0;if(N?A=D:(A=D==="v"?"h":"v",N=toe(D,R)),!N)return!1;if(!o.current&&"changedTouches"in x&&(_||T)&&(o.current=A),!A)return!0;var M=o.current||A;return iot(M,w,x,M==="h"?_:T)},[]),c=E.useCallback(function(x){var w=x;if(!(!rg.length||rg[rg.length-1]!==i)){var k="deltaY"in w?ooe(w):X4(w),C=r.current.filter(function(A){return A.name===w.type&&(A.target===w.target||w.target===A.shadowParent)&&sot(A.delta,k)})[0];if(C&&C.should){w.cancelable&&w.preventDefault();return}if(!C){var _=(s.current.shards||[]).map(aoe).filter(Boolean).filter(function(A){return A.contains(w.target)}),T=_.length>0?l(w,_[0]):!s.current.noIsolation;T&&w.cancelable&&w.preventDefault()}}},[]),u=E.useCallback(function(x,w,k,C){var _={name:x,delta:w,target:k,should:C,shadowParent:dot(k)};r.current.push(_),setTimeout(function(){r.current=r.current.filter(function(T){return T!==_})},1)},[]),d=E.useCallback(function(x){n.current=X4(x),o.current=void 0},[]),h=E.useCallback(function(x){u(x.type,ooe(x),x.target,l(x,e.lockRef.current))},[]),f=E.useCallback(function(x){u(x.type,X4(x),x.target,l(x,e.lockRef.current))},[]);E.useEffect(function(){return rg.push(i),e.setCallbacks({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:f}),document.addEventListener("wheel",c,tg),document.addEventListener("touchmove",c,tg),document.addEventListener("touchstart",d,tg),function(){rg=rg.filter(function(x){return x!==i}),document.removeEventListener("wheel",c,tg),document.removeEventListener("touchmove",c,tg),document.removeEventListener("touchstart",d,tg)}},[]);var g=e.removeScrollBar,b=e.inert;return E.createElement(E.Fragment,null,b?E.createElement(i,{styles:lot(a)}):null,g?E.createElement(Jnt,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function dot(e){for(var r=null;e!==null;)e instanceof ShadowRoot&&(r=e.host,e=e.host),e=e.parentNode;return r}const pot=Bnt(Zne,uot);var ioe=E.forwardRef(function(e,r){return E.createElement(Y4,El({},e,{ref:r,sideCar:pot}))});ioe.classNames=Y4.classNames;function Bo(e){return Object.keys(e)}function hot(e){return e.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`)}function fot(e){return typeof e!="string"||!e.includes("var(--mantine-scale)")?e:e.match(/^calc\((.*?)\)$/)?.[1].split("*")[0].trim()}function K4(e){const r=fot(e);return typeof r=="number"?r:typeof r=="string"?r.includes("calc")||r.includes("var")?r:r.includes("px")?Number(r.replace("px","")):r.includes("rem")?Number(r.replace("rem",""))*16:r.includes("em")?Number(r.replace("em",""))*16:Number(r):NaN}function soe(e){return e==="0rem"?"0rem":`calc(${e} * var(--mantine-scale))`}function loe(e,{shouldScale:r=!1}={}){function n(o){if(o===0||o==="0")return`0${e}`;if(typeof o=="number"){const a=`${o/16}${e}`;return r?soe(a):a}if(typeof o=="string"){if(o===""||o.startsWith("calc(")||o.startsWith("clamp(")||o.includes("rgba("))return o;if(o.includes(","))return o.split(",").map(i=>n(i)).join(",");if(o.includes(" "))return o.split(" ").map(i=>n(i)).join(" ");const a=o.replace("px","");if(!Number.isNaN(Number(a))){const i=`${Number(a)/16}${e}`;return r?soe(i):i}}return o}return n}const qe=loe("rem",{shouldScale:!0});loe("em");function Zu(e){return Object.keys(e).reduce((r,n)=>(e[n]!==void 0&&(r[n]=e[n]),r),{})}function coe(e){if(typeof e=="number")return!0;if(typeof e=="string"){if(e.startsWith("calc(")||e.startsWith("var(")||e.includes(" ")&&e.trim()!=="")return!0;const r=/^[+-]?[0-9]+(\.[0-9]+)?(px|em|rem|ex|ch|lh|rlh|vw|vh|vmin|vmax|vb|vi|svw|svh|lvw|lvh|dvw|dvh|cm|mm|in|pt|pc|q|cqw|cqh|cqi|cqb|cqmin|cqmax|%)?$/;return e.trim().split(/\s+/).every(n=>r.test(n))}return!1}function Ds(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==E.Fragment:!1}function qa(e){const r=E.createContext(null);return[({children:n,value:o})=>y.jsx(r.Provider,{value:o,children:n}),()=>{const n=E.useContext(r);if(n===null)throw new Error(e);return n}]}function ng(e=null){const r=E.createContext(e);return[({children:n,value:o})=>y.jsx(r.Provider,{value:o,children:n}),()=>E.useContext(r)]}function uoe(e,r){return n=>{if(typeof n!="string"||n.trim().length===0)throw new Error(r);return`${e}-${n}`}}function nb(e,r){let n=e;for(;(n=n.parentElement)&&!n.matches(r););return n}function mot(e,r,n){for(let o=e-1;o>=0;o-=1)if(!r[o].disabled)return o;if(n){for(let o=r.length-1;o>-1;o-=1)if(!r[o].disabled)return o}return e}function got(e,r,n){for(let o=e+1;o{n?.(l);const c=Array.from(nb(l.currentTarget,e)?.querySelectorAll(r)||[]).filter(b=>yot(l.currentTarget,b,e)),u=c.findIndex(b=>l.currentTarget===b),d=got(u,c,o),h=mot(u,c,o),f=i==="rtl"?h:d,g=i==="rtl"?d:h;switch(l.key){case"ArrowRight":{s==="horizontal"&&(l.stopPropagation(),l.preventDefault(),c[f].focus(),a&&c[f].click());break}case"ArrowLeft":{s==="horizontal"&&(l.stopPropagation(),l.preventDefault(),c[g].focus(),a&&c[g].click());break}case"ArrowUp":{s==="vertical"&&(l.stopPropagation(),l.preventDefault(),c[h].focus(),a&&c[h].click());break}case"ArrowDown":{s==="vertical"&&(l.stopPropagation(),l.preventDefault(),c[d].focus(),a&&c[d].click());break}case"Home":{l.stopPropagation(),l.preventDefault(),!c[0].disabled&&c[0].focus();break}case"End":{l.stopPropagation(),l.preventDefault();const b=c.length-1;!c[b].disabled&&c[b].focus();break}}}}const bot={app:100,modal:200,popover:300,overlay:400,max:9999};function $s(e){return bot[e]}const vot=()=>{};function xot(e,r={active:!0}){return typeof e!="function"||!r.active?r.onKeyDown||vot:n=>{n.key==="Escape"&&(e(n),r.onTrigger?.())}}function ur(e,r="size",n=!0){if(e!==void 0)return coe(e)?n?qe(e):e:`var(--${r}-${e})`}function po(e){return ur(e,"mantine-spacing")}function Tn(e){return e===void 0?"var(--mantine-radius-default)":ur(e,"mantine-radius")}function Fo(e){return ur(e,"mantine-font-size")}function wot(e){return ur(e,"mantine-line-height",!1)}function UR(e){if(e)return ur(e,"mantine-shadow",!1)}function Ln(e,r){return n=>{e?.(n),r?.(n)}}function kot(e,r){return e in r?K4(r[e]):K4(e)}function WR(e,r){const n=e.map(o=>({value:o,px:kot(o,r)}));return n.sort((o,a)=>o.px-a.px),n}function Ms(e){return typeof e=="object"&&e!==null?"base"in e?e.base:void 0:e}function og(e,r,n){return r===void 0&&n===void 0?e:r!==void 0&&n===void 0?Math.max(e,r):Math.min(r===void 0&&n!==void 0?e:Math.max(e,r),n)}function YR(e="mantine-"){return`${e}${Math.random().toString(36).slice(2,11)}`}function _ot(e,r){if(e===r||Number.isNaN(e)&&Number.isNaN(r))return!0;if(!(e instanceof Object)||!(r instanceof Object))return!1;const n=Object.keys(e),{length:o}=n;if(o!==Object.keys(r).length)return!1;for(let a=0;a{r.current=e}),E.useMemo(()=>((...n)=>r.current?.(...n)),[])}function Z4(e,r){const{delay:n,flushOnUnmount:o,leading:a}=typeof r=="number"?{delay:r,flushOnUnmount:!1,leading:!1}:r,i=eh(e),s=E.useRef(0),l=E.useMemo(()=>{const c=Object.assign((...u)=>{window.clearTimeout(s.current);const d=c._isFirstCall;c._isFirstCall=!1;function h(){window.clearTimeout(s.current),s.current=0,c._isFirstCall=!0}if(a&&d){i(...u);const b=()=>{h()},x=()=>{s.current!==0&&(h(),i(...u))},w=()=>{h()};c.flush=x,c.cancel=w,s.current=window.setTimeout(b,n);return}if(a&&!d){const b=()=>{s.current!==0&&(h(),i(...u))},x=()=>{h()};c.flush=b,c.cancel=x;const w=()=>{h()};s.current=window.setTimeout(w,n);return}const f=()=>{s.current!==0&&(h(),i(...u))},g=()=>{h()};c.flush=f,c.cancel=g,s.current=window.setTimeout(f,n)},{flush:()=>{},cancel:()=>{},_isFirstCall:!0});return c},[i,n,a]);return E.useEffect(()=>()=>{o?l.flush():l.cancel()},[l,o]),l}const Eot=["mousedown","touchstart"];function doe(e,r,n){const o=E.useRef(null),a=r||Eot;return E.useEffect(()=>{const i=s=>{const{target:l}=s??{};if(Array.isArray(n)){const c=!document.body.contains(l)&&l?.tagName!=="HTML";n.every(u=>!!u&&!s.composedPath().includes(u))&&!c&&e(s)}else o.current&&!o.current.contains(l)&&e(s)};return a.forEach(s=>document.addEventListener(s,i)),()=>{a.forEach(s=>document.removeEventListener(s,i))}},[o,e,n]),o}function Sot(e,r){try{return e.addEventListener("change",r),()=>e.removeEventListener("change",r)}catch{return e.addListener(r),()=>e.removeListener(r)}}function Cot(e,r){return typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function Tot(e,r,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[o,a]=E.useState(n?r:Cot(e));return E.useEffect(()=>{try{const i=window.matchMedia(e);return a(i.matches),Sot(i,s=>a(s.matches))}catch{return}},[e]),o||!1}const GR=typeof document<"u"?E.useLayoutEffect:E.useEffect;function th(e,r){const n=E.useRef(!1);E.useEffect(()=>()=>{n.current=!1},[]),E.useEffect(()=>{if(n.current)return e();n.current=!0},r)}function poe({opened:e,shouldReturnFocus:r=!0}){const n=E.useRef(null),o=()=>{n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&n.current?.focus({preventScroll:!0})};return th(()=>{let a=-1;const i=s=>{s.key==="Tab"&&window.clearTimeout(a)};return document.addEventListener("keydown",i),e?n.current=document.activeElement:r&&(a=window.setTimeout(o,10)),()=>{window.clearTimeout(a),document.removeEventListener("keydown",i)}},[e,r]),o}const Aot=/input|select|textarea|button|object/,hoe="a, input, select, textarea, button, object, [tabindex]";function Rot(e){return e.style.display==="none"}function Not(e){if(e.getAttribute("aria-hidden")||e.getAttribute("hidden")||e.getAttribute("type")==="hidden")return!1;let r=e;for(;r&&!(r===document.body||r.nodeType===11);){if(Rot(r))return!1;r=r.parentNode}return!0}function foe(e){let r=e.getAttribute("tabindex");return r===null&&(r=void 0),parseInt(r,10)}function XR(e){const r=e.nodeName.toLowerCase(),n=!Number.isNaN(foe(e));return(Aot.test(r)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&Not(e)}function moe(e){const r=foe(e);return(Number.isNaN(r)||r>=0)&&XR(e)}function Dot(e){return Array.from(e.querySelectorAll(hoe)).filter(moe)}function $ot(e,r){const n=Dot(e);if(!n.length){r.preventDefault();return}const o=n[r.shiftKey?0:n.length-1],a=e.getRootNode();let i=o===a.activeElement||e===a.activeElement;const s=a.activeElement;if(s.tagName==="INPUT"&&s.getAttribute("type")==="radio"&&(i=n.filter(c=>c.getAttribute("type")==="radio"&&c.getAttribute("name")===s.getAttribute("name")).includes(o)),!i)return;r.preventDefault();const l=n[r.shiftKey?n.length-1:0];l&&l.focus()}function Mot(e=!0){const r=E.useRef(null),n=a=>{let i=a.querySelector("[data-autofocus]");if(!i){const s=Array.from(a.querySelectorAll(hoe));i=s.find(moe)||s.find(XR)||null,!i&&XR(a)&&(i=a)}i&&i.focus({preventScroll:!0})},o=E.useCallback(a=>{e&&a!==null&&r.current!==a&&(a?(setTimeout(()=>{a.getRootNode()&&n(a)}),r.current=a):r.current=null)},[e]);return E.useEffect(()=>{if(!e)return;r.current&&setTimeout(()=>n(r.current));const a=i=>{i.key==="Tab"&&r.current&&$ot(r.current,i)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[e]),o}const Pot=dn.useId||(()=>{});function zot(){const e=Pot();return e?`mantine-${e.replace(/:/g,"")}`:""}function Ps(e){const r=zot(),[n,o]=E.useState(r);return GR(()=>{o(YR())},[]),typeof e=="string"?e:typeof window>"u"?r:n}function Iot(e,r,n){E.useEffect(()=>(window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)),[e,r])}function KR(e,r){if(typeof e=="function")return e(r);typeof e=="object"&&e!==null&&"current"in e&&(e.current=r)}function goe(...e){const r=new Map;return n=>{if(e.forEach(o=>{const a=KR(o,n);a&&r.set(o,a)}),r.size>0)return()=>{e.forEach(o=>{const a=r.get(o);a&&typeof a=="function"?a():KR(o,null)}),r.clear()}}}function yn(...e){return E.useCallback(goe(...e),e)}function Oot(e,r,n="ltr"){const o=E.useRef(!1),a=E.useRef(!1),i=E.useRef(0),[s,l]=E.useState(!1),c=E.useRef(null);return E.useEffect(()=>{o.current=!0},[]),{ref:E.useCallback(u=>{if(c.current&&(c.current(),c.current=null),!u)return;const d=({x:_,y:T})=>{cancelAnimationFrame(i.current),i.current=requestAnimationFrame(()=>{if(o.current&&u){u.style.userSelect="none";const A=u.getBoundingClientRect();if(A.width&&A.height){const R=og((_-A.left)/A.width,0,1);e({x:n==="ltr"?R:1-R,y:og((T-A.top)/A.height,0,1)})}}})},h=()=>{document.addEventListener("mousemove",w),document.addEventListener("mouseup",b),document.addEventListener("touchmove",C,{passive:!1}),document.addEventListener("touchend",b)},f=()=>{document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",b),document.removeEventListener("touchmove",C),document.removeEventListener("touchend",b)},g=()=>{!a.current&&o.current&&(a.current=!0,typeof r?.onScrubStart=="function"&&r.onScrubStart(),l(!0),h())},b=()=>{a.current&&o.current&&(a.current=!1,l(!1),f(),setTimeout(()=>{typeof r?.onScrubEnd=="function"&&r.onScrubEnd()},0))},x=_=>{g(),_.preventDefault(),w(_)},w=_=>d({x:_.clientX,y:_.clientY}),k=_=>{_.cancelable&&_.preventDefault(),g(),C(_)},C=_=>{_.cancelable&&_.preventDefault(),d({x:_.changedTouches[0].clientX,y:_.changedTouches[0].clientY})};u.addEventListener("mousedown",x),u.addEventListener("touchstart",k,{passive:!1}),c.current=()=>{u.removeEventListener("mousedown",x),u.removeEventListener("touchstart",k)}},[n,e]),active:s}}function Qu({value:e,defaultValue:r,finalValue:n,onChange:o=()=>{}}){const[a,i]=E.useState(r!==void 0?r:n);return e!==void 0?[e,o,!0]:[a,(l,...c)=>{i(l),o?.(l,...c)},!1]}function ZR(e,r){return Tot("(prefers-reduced-motion: reduce)",e,r)}function jot(e,r){if(!e||!r)return!1;if(e===r)return!0;if(e.length!==r.length)return!1;for(let n=0;n{o(l=>l||(r.onOpen?.(),!0))},[r.onOpen]),i=E.useCallback(()=>{o(l=>l&&(r.onClose?.(),!1))},[r.onClose]),s=E.useCallback(()=>{n?i():a()},[i,a,n]);return[n,{open:a,close:i,toggle:s}]}function Hot(e,r,n={autoInvoke:!1}){const o=E.useRef(null),a=E.useCallback((...s)=>{o.current||(o.current=window.setTimeout(()=>{e(s),o.current=null},r))},[r]),i=E.useCallback(()=>{o.current&&(window.clearTimeout(o.current),o.current=null)},[]);return E.useEffect(()=>(n.autoInvoke&&a(),i),[i,a]),{start:a,clear:i}}function Vot(e){const r=E.useRef(void 0);return E.useEffect(()=>{r.current=e},[e]),r.current}function qot(e,r,n){const o=E.useRef(null),a=E.useRef(null);return E.useEffect(()=>{const i=typeof n=="function"?n():n;return(i||a.current)&&(o.current=new MutationObserver(e),o.current.observe(i||a.current,r)),()=>{o.current?.disconnect()}},[e,r]),a}function Uot(){const[e,r]=E.useState(!1);return E.useEffect(()=>r(!0),[]),e}function Wot(){return typeof process<"u"&&process.env?"production":"development"}function yoe(e){const r=new Map;return(...n)=>{const o=JSON.stringify(n);if(r.has(o))return r.get(o);const a=e(...n);return r.set(o,a),a}}function boe(e,r){return r.length===0?e:r.reduce((n,o)=>Math.abs(o-e){Object.entries(n).forEach(([o,a])=>{r[o]?r[o]=ho(r[o],a):r[o]=a})}),r}function J4({theme:e,classNames:r,props:n,stylesCtx:o}){const a=(Array.isArray(r)?r:[r]).map(i=>typeof i=="function"?i(e,n,o):i||Yot);return Got(a)}function ek({theme:e,styles:r,props:n,stylesCtx:o}){return(Array.isArray(r)?r:[r]).reduce((a,i)=>typeof i=="function"?{...a,...i(e,n,o)}:{...a,...i},{})}const Xot=E.createContext(null);function rh(){const e=E.useContext(Xot);if(!e)throw new Error("[@mantine/core] MantineProvider was not found in tree");return e}function Kot(){return rh().classNamesPrefix}function Zot(){return rh().getStyleNonce}function Qot(){return rh().withStaticClasses}function Jot(){return rh().headless}function eat(){return rh().stylesTransform?.sx}function tat(){return rh().stylesTransform?.styles}function tk(){return rh().env||"default"}function rat(e){return/^#?([0-9A-F]{3}){1,2}([0-9A-F]{2})?$/i.test(e)}function nat(e){let r=e.replace("#","");if(r.length===3){const s=r.split("");r=[s[0],s[0],s[1],s[1],s[2],s[2]].join("")}if(r.length===8){const s=parseInt(r.slice(6,8),16)/255;return{r:parseInt(r.slice(0,2),16),g:parseInt(r.slice(2,4),16),b:parseInt(r.slice(4,6),16),a:s}}const n=parseInt(r,16),o=n>>16&255,a=n>>8&255,i=n&255;return{r:o,g:a,b:i,a:1}}function oat(e){const[r,n,o,a]=e.replace(/[^0-9,./]/g,"").split(/[/,]/).map(Number);return{r,g:n,b:o,a:a===void 0?1:a}}function aat(e){const r=/^hsla?\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*(,\s*(0?\.\d+|\d+(\.\d+)?))?\s*\)$/i,n=e.match(r);if(!n)return{r:0,g:0,b:0,a:1};const o=parseInt(n[1],10),a=parseInt(n[2],10)/100,i=parseInt(n[3],10)/100,s=n[5]?parseFloat(n[5]):void 0,l=(1-Math.abs(2*i-1))*a,c=o/60,u=l*(1-Math.abs(c%2-1)),d=i-l/2;let h,f,g;return c>=0&&c<1?(h=l,f=u,g=0):c>=1&&c<2?(h=u,f=l,g=0):c>=2&&c<3?(h=0,f=l,g=u):c>=3&&c<4?(h=0,f=u,g=l):c>=4&&c<5?(h=u,f=0,g=l):(h=l,f=0,g=u),{r:Math.round((h+d)*255),g:Math.round((f+d)*255),b:Math.round((g+d)*255),a:s||1}}function xoe(e){return rat(e)?nat(e):e.startsWith("rgb")?oat(e):e.startsWith("hsl")?aat(e):{r:0,g:0,b:0,a:1}}function ob(e,r){return typeof e.primaryShade=="number"?e.primaryShade:r==="dark"?e.primaryShade.dark:e.primaryShade.light}function QR(e){return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function iat(e){const r=e.match(/oklch\((.*?)%\s/);return r?parseFloat(r[1]):null}function sat(e){if(e.startsWith("oklch("))return(iat(e)||0)/100;const{r,g:n,b:o}=xoe(e),a=r/255,i=n/255,s=o/255,l=QR(a),c=QR(i),u=QR(s);return .2126*l+.7152*c+.0722*u}function ab(e,r=.179){return e.startsWith("var(")?!1:sat(e)>r}function nh({color:e,theme:r,colorScheme:n}){if(typeof e!="string")throw new Error(`[@mantine/core] Failed to parse color. Expected color to be a string, instead got ${typeof e}`);if(e==="bright")return{color:e,value:n==="dark"?r.white:r.black,shade:void 0,isThemeColor:!1,isLight:ab(n==="dark"?r.white:r.black,r.luminanceThreshold),variable:"--mantine-color-bright"};if(e==="dimmed")return{color:e,value:n==="dark"?r.colors.dark[2]:r.colors.gray[7],shade:void 0,isThemeColor:!1,isLight:ab(n==="dark"?r.colors.dark[2]:r.colors.gray[6],r.luminanceThreshold),variable:"--mantine-color-dimmed"};if(e==="white"||e==="black")return{color:e,value:e==="white"?r.white:r.black,shade:void 0,isThemeColor:!1,isLight:ab(e==="white"?r.white:r.black,r.luminanceThreshold),variable:`--mantine-color-${e}`};const[o,a]=e.split("."),i=a?Number(a):void 0,s=o in r.colors;if(s){const l=i!==void 0?r.colors[o][i]:r.colors[o][ob(r,n||"light")];return{color:o,value:l,shade:i,isThemeColor:s,isLight:ab(l,r.luminanceThreshold),variable:a?`--mantine-color-${o}-${i}`:`--mantine-color-${o}-filled`}}return{color:e,value:e,isThemeColor:s,isLight:ab(e,r.luminanceThreshold),shade:i,variable:void 0}}function Jo(e,r){const n=nh({color:e||r.primaryColor,theme:r});return n.variable?`var(${n.variable})`:e}function lat(e,r){const n={from:e?.from||r.defaultGradient.from,to:e?.to||r.defaultGradient.to,deg:e?.deg??r.defaultGradient.deg??0},o=Jo(n.from,r),a=Jo(n.to,r);return`linear-gradient(${n.deg}deg, ${o} 0%, ${a} 100%)`}function woe(e,r){if(typeof e!="string"||r>1||r<0)return"rgba(0, 0, 0, 1)";if(e.startsWith("var(")){const i=(1-r)*100;return`color-mix(in srgb, ${e}, transparent ${i}%)`}if(e.startsWith("oklch"))return e.includes("/")?e.replace(/\/\s*[\d.]+\s*\)/,`/ ${r})`):e.replace(")",` / ${r})`);const{r:n,g:o,b:a}=xoe(e);return`rgba(${n}, ${o}, ${a}, ${r})`}const ag=woe,cat={dark:["#C9C9C9","#b8b8b8","#828282","#696969","#424242","#3b3b3b","#2e2e2e","#242424","#1f1f1f","#141414"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]},koe="-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",uat={scale:1,fontSmoothing:!0,white:"#fff",black:"#000",colors:cat,primaryShade:{light:6,dark:8},primaryColor:"blue",autoContrast:!1,luminanceThreshold:.3,fontFamily:koe,fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",cursorType:"default",defaultRadius:"sm",headings:{fontFamily:koe,fontWeight:"700",textWrap:"wrap",sizes:{h1:{fontSize:qe(34),lineHeight:"1.3"},h2:{fontSize:qe(26),lineHeight:"1.35"},h3:{fontSize:qe(22),lineHeight:"1.4"},h4:{fontSize:qe(18),lineHeight:"1.45"},h5:{fontSize:qe(16),lineHeight:"1.5"},h6:{fontSize:qe(14),lineHeight:"1.5"}}},fontSizes:{xs:qe(12),sm:qe(14),md:qe(16),lg:qe(18),xl:qe(20)},lineHeights:{xs:"1.4",sm:"1.45",md:"1.55",lg:"1.6",xl:"1.65"},radius:{xs:qe(2),sm:qe(4),md:qe(8),lg:qe(16),xl:qe(32)},spacing:{xs:qe(10),sm:qe(12),md:qe(16),lg:qe(20),xl:qe(32)},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},shadows:{xs:`0 ${qe(1)} ${qe(3)} rgba(0, 0, 0, 0.05), 0 ${qe(1)} ${qe(2)} rgba(0, 0, 0, 0.1)`,sm:`0 ${qe(1)} ${qe(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${qe(10)} ${qe(15)} ${qe(-5)}, rgba(0, 0, 0, 0.04) 0 ${qe(7)} ${qe(7)} ${qe(-5)}`,md:`0 ${qe(1)} ${qe(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${qe(20)} ${qe(25)} ${qe(-5)}, rgba(0, 0, 0, 0.04) 0 ${qe(10)} ${qe(10)} ${qe(-5)}`,lg:`0 ${qe(1)} ${qe(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${qe(28)} ${qe(23)} ${qe(-7)}, rgba(0, 0, 0, 0.04) 0 ${qe(12)} ${qe(12)} ${qe(-7)}`,xl:`0 ${qe(1)} ${qe(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${qe(36)} ${qe(28)} ${qe(-7)}, rgba(0, 0, 0, 0.04) 0 ${qe(17)} ${qe(17)} ${qe(-7)}`}},dat=E.createContext(null);function _o(){const e=E.useContext(dat);if(!e)throw new Error("@mantine/core: MantineProvider was not found in component tree, make sure you have it in your app");return e}function JR({color:e,theme:r,autoContrast:n}){return(typeof n=="boolean"?n:r.autoContrast)&&nh({color:e||r.primaryColor,theme:r}).isLight?"var(--mantine-color-black)":"var(--mantine-color-white)"}function _oe(e,r){return JR({color:e.colors[e.primaryColor][ob(e,r)],theme:e,autoContrast:null})}function rk({theme:e,color:r,colorScheme:n,name:o=r,withColorValues:a=!0}){if(!e.colors[r])return{};if(n==="light"){const l=ob(e,"light"),c={[`--mantine-color-${o}-text`]:`var(--mantine-color-${o}-filled)`,[`--mantine-color-${o}-filled`]:`var(--mantine-color-${o}-${l})`,[`--mantine-color-${o}-filled-hover`]:`var(--mantine-color-${o}-${l===9?8:l+1})`,[`--mantine-color-${o}-light`]:ag(e.colors[r][l],.1),[`--mantine-color-${o}-light-hover`]:ag(e.colors[r][l],.12),[`--mantine-color-${o}-light-color`]:`var(--mantine-color-${o}-${l})`,[`--mantine-color-${o}-outline`]:`var(--mantine-color-${o}-${l})`,[`--mantine-color-${o}-outline-hover`]:ag(e.colors[r][l],.05)};return a?{[`--mantine-color-${o}-0`]:e.colors[r][0],[`--mantine-color-${o}-1`]:e.colors[r][1],[`--mantine-color-${o}-2`]:e.colors[r][2],[`--mantine-color-${o}-3`]:e.colors[r][3],[`--mantine-color-${o}-4`]:e.colors[r][4],[`--mantine-color-${o}-5`]:e.colors[r][5],[`--mantine-color-${o}-6`]:e.colors[r][6],[`--mantine-color-${o}-7`]:e.colors[r][7],[`--mantine-color-${o}-8`]:e.colors[r][8],[`--mantine-color-${o}-9`]:e.colors[r][9],...c}:c}const i=ob(e,"dark"),s={[`--mantine-color-${o}-text`]:`var(--mantine-color-${o}-4)`,[`--mantine-color-${o}-filled`]:`var(--mantine-color-${o}-${i})`,[`--mantine-color-${o}-filled-hover`]:`var(--mantine-color-${o}-${i===9?8:i+1})`,[`--mantine-color-${o}-light`]:ag(e.colors[r][Math.max(0,i-2)],.15),[`--mantine-color-${o}-light-hover`]:ag(e.colors[r][Math.max(0,i-2)],.2),[`--mantine-color-${o}-light-color`]:`var(--mantine-color-${o}-${Math.max(i-5,0)})`,[`--mantine-color-${o}-outline`]:`var(--mantine-color-${o}-${Math.max(i-4,0)})`,[`--mantine-color-${o}-outline-hover`]:ag(e.colors[r][Math.max(i-4,0)],.05)};return a?{[`--mantine-color-${o}-0`]:e.colors[r][0],[`--mantine-color-${o}-1`]:e.colors[r][1],[`--mantine-color-${o}-2`]:e.colors[r][2],[`--mantine-color-${o}-3`]:e.colors[r][3],[`--mantine-color-${o}-4`]:e.colors[r][4],[`--mantine-color-${o}-5`]:e.colors[r][5],[`--mantine-color-${o}-6`]:e.colors[r][6],[`--mantine-color-${o}-7`]:e.colors[r][7],[`--mantine-color-${o}-8`]:e.colors[r][8],[`--mantine-color-${o}-9`]:e.colors[r][9],...s}:s}function pat(e){return!!e&&typeof e=="object"&&"mantine-virtual-color"in e}function ig(e,r,n){Bo(r).forEach(o=>Object.assign(e,{[`--mantine-${n}-${o}`]:r[o]}))}(e=>{const r=ob(e,"light"),n=e.defaultRadius in e.radius?e.radius[e.defaultRadius]:qe(e.defaultRadius),o={variables:{"--mantine-z-index-app":"100","--mantine-z-index-modal":"200","--mantine-z-index-popover":"300","--mantine-z-index-overlay":"400","--mantine-z-index-max":"9999","--mantine-scale":e.scale.toString(),"--mantine-cursor-type":e.cursorType,"--mantine-webkit-font-smoothing":e.fontSmoothing?"antialiased":"unset","--mantine-moz-font-smoothing":e.fontSmoothing?"grayscale":"unset","--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-line-height":e.lineHeights.md,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":e.headings.fontWeight,"--mantine-heading-text-wrap":e.headings.textWrap,"--mantine-radius-default":n,"--mantine-primary-color-filled":`var(--mantine-color-${e.primaryColor}-filled)`,"--mantine-primary-color-filled-hover":`var(--mantine-color-${e.primaryColor}-filled-hover)`,"--mantine-primary-color-light":`var(--mantine-color-${e.primaryColor}-light)`,"--mantine-primary-color-light-hover":`var(--mantine-color-${e.primaryColor}-light-hover)`,"--mantine-primary-color-light-color":`var(--mantine-color-${e.primaryColor}-light-color)`},light:{"--mantine-color-scheme":"light","--mantine-primary-color-contrast":_oe(e,"light"),"--mantine-color-bright":"var(--mantine-color-black)","--mantine-color-text":e.black,"--mantine-color-body":e.white,"--mantine-color-error":"var(--mantine-color-red-6)","--mantine-color-placeholder":"var(--mantine-color-gray-5)","--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-${r})`,"--mantine-color-default":"var(--mantine-color-white)","--mantine-color-default-hover":"var(--mantine-color-gray-0)","--mantine-color-default-color":"var(--mantine-color-black)","--mantine-color-default-border":"var(--mantine-color-gray-4)","--mantine-color-dimmed":"var(--mantine-color-gray-6)","--mantine-color-disabled":"var(--mantine-color-gray-2)","--mantine-color-disabled-color":"var(--mantine-color-gray-5)","--mantine-color-disabled-border":"var(--mantine-color-gray-3)"},dark:{"--mantine-color-scheme":"dark","--mantine-primary-color-contrast":_oe(e,"dark"),"--mantine-color-bright":"var(--mantine-color-white)","--mantine-color-text":"var(--mantine-color-dark-0)","--mantine-color-body":"var(--mantine-color-dark-7)","--mantine-color-error":"var(--mantine-color-red-8)","--mantine-color-placeholder":"var(--mantine-color-dark-3)","--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-4)`,"--mantine-color-default":"var(--mantine-color-dark-6)","--mantine-color-default-hover":"var(--mantine-color-dark-5)","--mantine-color-default-color":"var(--mantine-color-white)","--mantine-color-default-border":"var(--mantine-color-dark-4)","--mantine-color-dimmed":"var(--mantine-color-dark-2)","--mantine-color-disabled":"var(--mantine-color-dark-6)","--mantine-color-disabled-color":"var(--mantine-color-dark-3)","--mantine-color-disabled-border":"var(--mantine-color-dark-4)"}};ig(o.variables,e.breakpoints,"breakpoint"),ig(o.variables,e.spacing,"spacing"),ig(o.variables,e.fontSizes,"font-size"),ig(o.variables,e.lineHeights,"line-height"),ig(o.variables,e.shadows,"shadow"),ig(o.variables,e.radius,"radius"),e.colors[e.primaryColor].forEach((i,s)=>{o.variables[`--mantine-primary-color-${s}`]=`var(--mantine-color-${e.primaryColor}-${s})`}),Bo(e.colors).forEach(i=>{const s=e.colors[i];if(pat(s)){Object.assign(o.light,rk({theme:e,name:s.name,color:s.light,colorScheme:"light",withColorValues:!0})),Object.assign(o.dark,rk({theme:e,name:s.name,color:s.dark,colorScheme:"dark",withColorValues:!0}));return}s.forEach((l,c)=>{o.variables[`--mantine-color-${i}-${c}`]=l}),Object.assign(o.light,rk({theme:e,color:i,colorScheme:"light",withColorValues:!1})),Object.assign(o.dark,rk({theme:e,color:i,colorScheme:"dark",withColorValues:!1}))});const a=e.headings.sizes;return Bo(a).forEach(i=>{o.variables[`--mantine-${i}-font-size`]=a[i].fontSize,o.variables[`--mantine-${i}-line-height`]=a[i].lineHeight,o.variables[`--mantine-${i}-font-weight`]=a[i].fontWeight||e.headings.fontWeight}),o})(uat);function eN({classNames:e,styles:r,props:n,stylesCtx:o}){const a=_o();return{resolvedClassNames:J4({theme:a,classNames:e,props:n,stylesCtx:o||void 0}),resolvedStyles:ek({theme:a,styles:r,props:n,stylesCtx:o||void 0})}}const hat={always:"mantine-focus-always",auto:"mantine-focus-auto",never:"mantine-focus-never"};function fat({theme:e,options:r,unstyled:n}){return ho(r?.focusable&&!n&&(e.focusClassName||hat[e.focusRing]),r?.active&&!n&&e.activeClassName)}function mat({selector:e,stylesCtx:r,options:n,props:o,theme:a}){return J4({theme:a,classNames:n?.classNames,props:n?.props||o,stylesCtx:r})[e]}function Eoe({selector:e,stylesCtx:r,theme:n,classNames:o,props:a}){return J4({theme:n,classNames:o,props:a,stylesCtx:r})[e]}function gat({rootSelector:e,selector:r,className:n}){return e===r?n:void 0}function yat({selector:e,classes:r,unstyled:n}){return n?void 0:r[e]}function bat({themeName:e,classNamesPrefix:r,selector:n,withStaticClass:o}){return o===!1?[]:e.map(a=>`${r}-${a}-${n}`)}function vat({themeName:e,theme:r,selector:n,props:o,stylesCtx:a}){return e.map(i=>J4({theme:r,classNames:r.components[i]?.classNames,props:o,stylesCtx:a})?.[n])}function xat({options:e,classes:r,selector:n,unstyled:o}){return e?.variant&&!o?r[`${n}--${e.variant}`]:void 0}function wat({theme:e,options:r,themeName:n,selector:o,classNamesPrefix:a,classNames:i,classes:s,unstyled:l,className:c,rootSelector:u,props:d,stylesCtx:h,withStaticClasses:f,headless:g,transformedStyles:b}){return ho(fat({theme:e,options:r,unstyled:l||g}),vat({theme:e,themeName:n,selector:o,props:d,stylesCtx:h}),xat({options:r,classes:s,selector:o,unstyled:l}),Eoe({selector:o,stylesCtx:h,theme:e,classNames:i,props:d}),Eoe({selector:o,stylesCtx:h,theme:e,classNames:b,props:d}),mat({selector:o,stylesCtx:h,options:r,props:d,theme:e}),gat({rootSelector:u,selector:o,className:c}),yat({selector:o,classes:s,unstyled:l||g}),f&&!g&&bat({themeName:n,classNamesPrefix:a,selector:o,withStaticClass:r?.withStaticClass}),r?.className)}function kat({theme:e,themeName:r,props:n,stylesCtx:o,selector:a}){return r.map(i=>ek({theme:e,styles:e.components[i]?.styles,props:n,stylesCtx:o})[a]).reduce((i,s)=>({...i,...s}),{})}function tN({style:e,theme:r}){return Array.isArray(e)?[...e].reduce((n,o)=>({...n,...tN({style:o,theme:r})}),{}):typeof e=="function"?e(r):e??{}}function _at(e){return e.reduce((r,n)=>(n&&Object.keys(n).forEach(o=>{r[o]={...r[o],...Zu(n[o])}}),r),{})}function Eat({vars:e,varsResolver:r,theme:n,props:o,stylesCtx:a,selector:i,themeName:s,headless:l}){return _at([l?{}:r?.(n,o,a),...s.map(c=>n.components?.[c]?.vars?.(n,o,a)),e?.(n,o,a)])?.[i]}function Sat({theme:e,themeName:r,selector:n,options:o,props:a,stylesCtx:i,rootSelector:s,styles:l,style:c,vars:u,varsResolver:d,headless:h,withStylesTransform:f}){return{...!f&&kat({theme:e,themeName:r,props:a,stylesCtx:i,selector:n}),...!f&&ek({theme:e,styles:l,props:a,stylesCtx:i})[n],...!f&&ek({theme:e,styles:o?.styles,props:o?.props||a,stylesCtx:i})[n],...Eat({theme:e,props:a,stylesCtx:i,vars:u,varsResolver:d,selector:n,themeName:r,headless:h}),...s===n?tN({style:c,theme:e}):null,...tN({style:o?.style,theme:e})}}function Cat({props:e,stylesCtx:r,themeName:n}){const o=_o(),a=tat()?.();return{getTransformedStyles:i=>a?[...i.map(s=>a(s,{props:e,theme:o,ctx:r})),...n.map(s=>a(o.components[s]?.styles,{props:e,theme:o,ctx:r}))].filter(Boolean):[],withStylesTransform:!!a}}function vt({name:e,classes:r,props:n,stylesCtx:o,className:a,style:i,rootSelector:s="root",unstyled:l,classNames:c,styles:u,vars:d,varsResolver:h,attributes:f}){const g=_o(),b=Kot(),x=Qot(),w=Jot(),k=(Array.isArray(e)?e:[e]).filter(T=>T),{withStylesTransform:C,getTransformedStyles:_}=Cat({props:n,stylesCtx:o,themeName:k});return(T,A)=>({className:wat({theme:g,options:A,themeName:k,selector:T,classNamesPrefix:b,classNames:c,classes:r,unstyled:l,className:a,rootSelector:s,props:n,stylesCtx:o,withStaticClasses:x,headless:w,transformedStyles:_([A?.styles,u])}),style:Sat({theme:g,themeName:k,selector:T,options:A,props:n,stylesCtx:o,rootSelector:s,styles:u,style:i,vars:d,varsResolver:h,headless:w,withStylesTransform:C}),...f?.[T]})}function Tat(e,r){return typeof e=="boolean"?e:r.autoContrast}function ze(e,r,n){const o=_o(),a=o.components[e]?.defaultProps,i=typeof a=="function"?a(o):a;return{...r,...i,...Zu(n)}}function rN(e){return Bo(e).reduce((r,n)=>e[n]!==void 0?`${r}${hot(n)}:${e[n]};`:r,"").trim()}function Aat({selector:e,styles:r,media:n,container:o}){const a=r?rN(r):"",i=Array.isArray(n)?n.map(l=>`@media${l.query}{${e}{${rN(l.styles)}}}`):[],s=Array.isArray(o)?o.map(l=>`@container ${l.query}{${e}{${rN(l.styles)}}}`):[];return`${a?`${e}{${a}}`:""}${i.join("")}${s.join("")}`.trim()}function sg(e){const r=Zot();return y.jsx("style",{"data-mantine-styles":"inline",nonce:r?.(),dangerouslySetInnerHTML:{__html:Aat(e)}})}function nN(e){const{m:r,mx:n,my:o,mt:a,mb:i,ml:s,mr:l,me:c,ms:u,p:d,px:h,py:f,pt:g,pb:b,pl:x,pr:w,pe:k,ps:C,bd:_,bdrs:T,bg:A,c:R,opacity:D,ff:N,fz:M,fw:O,lts:F,ta:L,lh:U,fs:P,tt:V,td:I,w:H,miw:q,maw:Z,h:W,mih:G,mah:K,bgsz:j,bgp:Y,bgr:Q,bga:J,pos:ie,top:ne,left:re,bottom:ge,right:De,inset:he,display:me,flex:Te,hiddenFrom:Ie,visibleFrom:Ze,lightHidden:rt,darkHidden:Rt,sx:Qe,...Pt}=e;return{styleProps:Zu({m:r,mx:n,my:o,mt:a,mb:i,ml:s,mr:l,me:c,ms:u,p:d,px:h,py:f,pt:g,pb:b,pl:x,pr:w,pe:k,ps:C,bd:_,bg:A,c:R,opacity:D,ff:N,fz:M,fw:O,lts:F,ta:L,lh:U,fs:P,tt:V,td:I,w:H,miw:q,maw:Z,h:W,mih:G,mah:K,bgsz:j,bgp:Y,bgr:Q,bga:J,pos:ie,top:ne,left:re,bottom:ge,right:De,inset:he,display:me,flex:Te,bdrs:T,hiddenFrom:Ie,visibleFrom:Ze,lightHidden:rt,darkHidden:Rt,sx:Qe}),rest:Pt}}const Rat={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},ms:{type:"spacing",property:"marginInlineStart"},me:{type:"spacing",property:"marginInlineEnd"},mx:{type:"spacing",property:"marginInline"},my:{type:"spacing",property:"marginBlock"},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},ps:{type:"spacing",property:"paddingInlineStart"},pe:{type:"spacing",property:"paddingInlineEnd"},px:{type:"spacing",property:"paddingInline"},py:{type:"spacing",property:"paddingBlock"},bd:{type:"border",property:"border"},bdrs:{type:"radius",property:"borderRadius"},bg:{type:"color",property:"background"},c:{type:"textColor",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"fontFamily",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"lineHeight",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"size",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"},flex:{type:"identity",property:"flex"}};function oN(e,r){const n=nh({color:e,theme:r});return n.color==="dimmed"?"var(--mantine-color-dimmed)":n.color==="bright"?"var(--mantine-color-bright)":n.variable?`var(${n.variable})`:n.color}function Nat(e,r){const n=nh({color:e,theme:r});return n.isThemeColor&&n.shade===void 0?`var(--mantine-color-${n.color}-text)`:oN(e,r)}function Dat(e,r){if(typeof e=="number")return qe(e);if(typeof e=="string"){const[n,o,...a]=e.split(" ").filter(s=>s.trim()!=="");let i=`${qe(n)}`;return o&&(i+=` ${o}`),a.length>0&&(i+=` ${oN(a.join(" "),r)}`),i.trim()}return e}const Soe={text:"var(--mantine-font-family)",mono:"var(--mantine-font-family-monospace)",monospace:"var(--mantine-font-family-monospace)",heading:"var(--mantine-font-family-headings)",headings:"var(--mantine-font-family-headings)"};function $at(e){return typeof e=="string"&&e in Soe?Soe[e]:e}const Mat=["h1","h2","h3","h4","h5","h6"];function Pat(e,r){return typeof e=="string"&&e in r.fontSizes?`var(--mantine-font-size-${e})`:typeof e=="string"&&Mat.includes(e)?`var(--mantine-${e}-font-size)`:typeof e=="number"||typeof e=="string"?qe(e):e}function zat(e){return e}const Iat=["h1","h2","h3","h4","h5","h6"];function Oat(e,r){return typeof e=="string"&&e in r.lineHeights?`var(--mantine-line-height-${e})`:typeof e=="string"&&Iat.includes(e)?`var(--mantine-${e}-line-height)`:e}function jat(e,r){return typeof e=="string"&&e in r.radius?`var(--mantine-radius-${e})`:typeof e=="number"||typeof e=="string"?qe(e):e}function Lat(e){return typeof e=="number"?qe(e):e}function Bat(e,r){if(typeof e=="number")return qe(e);if(typeof e=="string"){const n=e.replace("-","");if(!(n in r.spacing))return qe(e);const o=`--mantine-spacing-${n}`;return e.startsWith("-")?`calc(var(${o}) * -1)`:`var(${o})`}return e}const aN={color:oN,textColor:Nat,fontSize:Pat,spacing:Bat,radius:jat,identity:zat,size:Lat,lineHeight:Oat,fontFamily:$at,border:Dat};function Coe(e){return e.replace("(min-width: ","").replace("em)","")}function Fat({media:e,...r}){const n=Object.keys(e).sort((o,a)=>Number(Coe(o))-Number(Coe(a))).map(o=>({query:o,styles:e[o]}));return{...r,media:n}}function Hat(e){if(typeof e!="object"||e===null)return!1;const r=Object.keys(e);return!(r.length===1&&r[0]==="base")}function Vat(e){return typeof e=="object"&&e!==null?"base"in e?e.base:void 0:e}function qat(e){return typeof e=="object"&&e!==null?Bo(e).filter(r=>r!=="base"):[]}function Uat(e,r){return typeof e=="object"&&e!==null&&r in e?e[r]:e}function Toe({styleProps:e,data:r,theme:n}){return Fat(Bo(e).reduce((o,a)=>{if(a==="hiddenFrom"||a==="visibleFrom"||a==="sx")return o;const i=r[a],s=Array.isArray(i.property)?i.property:[i.property],l=Vat(e[a]);if(!Hat(e[a]))return s.forEach(u=>{o.inlineStyles[u]=aN[i.type](l,n)}),o;o.hasResponsiveStyles=!0;const c=qat(e[a]);return s.forEach(u=>{l!=null&&(o.styles[u]=aN[i.type](l,n)),c.forEach(d=>{const h=`(min-width: ${n.breakpoints[d]})`;o.media[h]={...o.media[h],[u]:aN[i.type](Uat(e[a],d),n)}})}),o},{hasResponsiveStyles:!1,styles:{},inlineStyles:{},media:{}}))}function ib(){return`__m__-${E.useId().replace(/[:«»]/g,"")}`}function iN(e,r){return Array.isArray(e)?[...e].reduce((n,o)=>({...n,...iN(o,r)}),{}):typeof e=="function"?e(r):e??{}}function Aoe(e){return e.startsWith("data-")?e:`data-${e}`}function Wat(e){return Object.keys(e).reduce((r,n)=>{const o=e[n];return o===void 0||o===""||o===!1||o===null||(r[Aoe(n)]=e[n]),r},{})}function Roe(e){return e?typeof e=="string"?{[Aoe(e)]:!0}:Array.isArray(e)?[...e].reduce((r,n)=>({...r,...Roe(n)}),{}):Wat(e):null}function sN(e,r){return Array.isArray(e)?[...e].reduce((n,o)=>({...n,...sN(o,r)}),{}):typeof e=="function"?e(r):e??{}}function Yat({theme:e,style:r,vars:n,styleProps:o}){const a=sN(r,e),i=sN(n,e);return{...a,...i,...o}}const Noe=E.forwardRef(({component:e,style:r,__vars:n,className:o,variant:a,mod:i,size:s,hiddenFrom:l,visibleFrom:c,lightHidden:u,darkHidden:d,renderRoot:h,__size:f,...g},b)=>{const x=_o(),w=e||"div",{styleProps:k,rest:C}=nN(g),_=eat()?.()?.(k.sx),T=ib(),A=Toe({styleProps:k,theme:x,data:Rat}),R={ref:b,style:Yat({theme:x,style:r,vars:n,styleProps:A.inlineStyles}),className:ho(o,_,{[T]:A.hasResponsiveStyles,"mantine-light-hidden":u,"mantine-dark-hidden":d,[`mantine-hidden-from-${l}`]:l,[`mantine-visible-from-${c}`]:c}),"data-variant":a,"data-size":coe(s)?void 0:s||void 0,size:f,...Roe(i),...C};return y.jsxs(y.Fragment,{children:[A.hasResponsiveStyles&&y.jsx(sg,{selector:`.${T}`,styles:A.styles,media:A.media}),typeof h=="function"?h(R):y.jsx(w,{...R})]})});Noe.displayName="@mantine/core/Box";const Le=Noe;function Doe(e){return e}function Je(e){const r=E.forwardRef(e);return r.extend=Doe,r.withProps=n=>{const o=E.forwardRef((a,i)=>y.jsx(r,{...n,...a,ref:i}));return o.extend=r.extend,o.displayName=`WithProps(${r.displayName})`,o},r}function Jn(e){const r=E.forwardRef(e);return r.withProps=n=>{const o=E.forwardRef((a,i)=>y.jsx(r,{...n,...a,ref:i}));return o.extend=r.extend,o.displayName=`WithProps(${r.displayName})`,o},r.extend=Doe,r}const Gat=E.createContext({dir:"ltr",toggleDirection:()=>{},setDirection:()=>{}});function Rc(){return E.useContext(Gat)}function Xat(e){if(!e||typeof e=="string")return 0;const r=e/36;return Math.round((4+15*r**.25+r/5)*10)}function lN(e){return e?.current?e.current.scrollHeight:"auto"}const nk=typeof window<"u"&&window.requestAnimationFrame,$oe=0,Kat=e=>({height:0,overflow:"hidden",...e?{}:{display:"none"}});function Zat({transitionDuration:e,transitionTimingFunction:r="ease",onTransitionEnd:n=()=>{},opened:o,keepMounted:a=!1}){const i=E.useRef(null),s=Kat(a),[l,c]=E.useState(o?{}:s),u=b=>{Ki.flushSync(()=>c(b))},d=b=>{u(x=>({...x,...b}))};function h(b){const x=e||Xat(b);return{transition:`height ${x}ms ${r}, opacity ${x}ms ${r}`}}th(()=>{typeof nk=="function"&&nk(o?()=>{d({willChange:"height",display:"block",overflow:"hidden"}),nk(()=>{const b=lN(i);d({...h(b),height:b})})}:()=>{const b=lN(i);d({...h(b),willChange:"height",height:b}),nk(()=>d({height:$oe,overflow:"hidden"}))})},[o]);const f=b=>{if(!(b.target!==i.current||b.propertyName!=="height"))if(o){const x=lN(i);x===l.height?u({}):d({height:x}),n()}else l.height===$oe&&(u(s),n())};function g({style:b={},refKey:x="ref",...w}={}){const k=w[x],C={"aria-hidden":!o,...w,[x]:goe(i,k),onTransitionEnd:f,style:{boxSizing:"border-box",...b,...l}};return dn.version.startsWith("18")?o||(C.inert=""):C.inert=!o,C}return g}const Qat={transitionDuration:200,transitionTimingFunction:"ease",animateOpacity:!0},Moe=Je((e,r)=>{const{children:n,in:o,transitionDuration:a,transitionTimingFunction:i,style:s,onTransitionEnd:l,animateOpacity:c,keepMounted:u,...d}=ze("Collapse",Qat,e),h=_o(),f=ZR(),g=h.respectReducedMotion&&f?0:a,b=Zat({opened:o,transitionDuration:g,transitionTimingFunction:i,onTransitionEnd:l,keepMounted:u});return g===0?o?y.jsx(Le,{...d,children:n}):null:y.jsx(Le,{...b({style:{opacity:o||!c?1:0,transition:c?`opacity ${g}ms ${i}`:"none",...iN(s,h)},ref:r,...d}),children:n})});Moe.displayName="@mantine/core/Collapse";function ok(){return typeof window<"u"}function lg(e){return Poe(e)?(e.nodeName||"").toLowerCase():"#document"}function ga(e){var r;return(e==null||(r=e.ownerDocument)==null?void 0:r.defaultView)||window}function Sl(e){var r;return(r=(Poe(e)?e.ownerDocument:e.document)||window.document)==null?void 0:r.documentElement}function Poe(e){return ok()?e instanceof Node||e instanceof ga(e).Node:!1}function Ur(e){return ok()?e instanceof Element||e instanceof ga(e).Element:!1}function Ua(e){return ok()?e instanceof HTMLElement||e instanceof ga(e).HTMLElement:!1}function cN(e){return!ok()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ga(e).ShadowRoot}const Jat=new Set(["inline","contents"]);function sb(e){const{overflow:r,overflowX:n,overflowY:o,display:a}=$i(e);return/auto|scroll|overlay|hidden|clip/.test(r+o+n)&&!Jat.has(a)}const eit=new Set(["table","td","th"]);function tit(e){return eit.has(lg(e))}const rit=[":popover-open",":modal"];function ak(e){return rit.some(r=>{try{return e.matches(r)}catch{return!1}})}const nit=["transform","translate","scale","rotate","perspective"],oit=["transform","translate","scale","rotate","perspective","filter"],ait=["paint","layout","strict","content"];function uN(e){const r=ik(),n=Ur(e)?$i(e):e;return nit.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!r&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!r&&(n.filter?n.filter!=="none":!1)||oit.some(o=>(n.willChange||"").includes(o))||ait.some(o=>(n.contain||"").includes(o))}function iit(e){let r=Dc(e);for(;Ua(r)&&!Nc(r);){if(uN(r))return r;if(ak(r))return null;r=Dc(r)}return null}function ik(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const sit=new Set(["html","body","#document"]);function Nc(e){return sit.has(lg(e))}function $i(e){return ga(e).getComputedStyle(e)}function sk(e){return Ur(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Dc(e){if(lg(e)==="html")return e;const r=e.assignedSlot||e.parentNode||cN(e)&&e.host||Sl(e);return cN(r)?r.host:r}function zoe(e){const r=Dc(e);return Nc(r)?e.ownerDocument?e.ownerDocument.body:e.body:Ua(r)&&sb(r)?r:zoe(r)}function $c(e,r,n){var o;r===void 0&&(r=[]),n===void 0&&(n=!0);const a=zoe(e),i=a===((o=e.ownerDocument)==null?void 0:o.body),s=ga(a);if(i){const l=dN(s);return r.concat(s,s.visualViewport||[],sb(a)?a:[],l&&n?$c(l):[])}return r.concat(a,$c(a,[],n))}function dN(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}const lit=["top","right","bottom","left"],zs=Math.min,Ho=Math.max,lk=Math.round,ck=Math.floor,Cl=e=>({x:e,y:e}),cit={left:"right",right:"left",bottom:"top",top:"bottom"},uit={start:"end",end:"start"};function pN(e,r,n){return Ho(e,zs(r,n))}function Tl(e,r){return typeof e=="function"?e(r):e}function Is(e){return e.split("-")[0]}function cg(e){return e.split("-")[1]}function hN(e){return e==="x"?"y":"x"}function fN(e){return e==="y"?"height":"width"}const dit=new Set(["top","bottom"]);function Os(e){return dit.has(Is(e))?"y":"x"}function mN(e){return hN(Os(e))}function pit(e,r,n){n===void 0&&(n=!1);const o=cg(e),a=mN(e),i=fN(a);let s=a==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return r.reference[i]>r.floating[i]&&(s=uk(s)),[s,uk(s)]}function hit(e){const r=uk(e);return[gN(e),r,gN(r)]}function gN(e){return e.replace(/start|end/g,r=>uit[r])}const Ioe=["left","right"],Ooe=["right","left"],fit=["top","bottom"],mit=["bottom","top"];function git(e,r,n){switch(e){case"top":case"bottom":return n?r?Ooe:Ioe:r?Ioe:Ooe;case"left":case"right":return r?fit:mit;default:return[]}}function yit(e,r,n,o){const a=cg(e);let i=git(Is(e),n==="start",o);return a&&(i=i.map(s=>s+"-"+a),r&&(i=i.concat(i.map(gN)))),i}function uk(e){return e.replace(/left|right|bottom|top/g,r=>cit[r])}function bit(e){return{top:0,right:0,bottom:0,left:0,...e}}function yN(e){return typeof e!="number"?bit(e):{top:e,right:e,bottom:e,left:e}}function ug(e){const{x:r,y:n,width:o,height:a}=e;return{width:o,height:a,top:n,left:r,right:r+o,bottom:n+a,x:r,y:n}}function vit(){const e=navigator.userAgentData;return e!=null&&e.platform?e.platform:navigator.platform}function xit(){const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(r=>{let{brand:n,version:o}=r;return n+"/"+o}).join(" "):navigator.userAgent}function wit(){return/apple/i.test(navigator.vendor)}function kit(){return vit().toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints}function _it(){return xit().includes("jsdom/")}const joe="data-floating-ui-focusable",Eit="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Loe(e){let r=e.activeElement;for(;((n=r)==null||(n=n.shadowRoot)==null?void 0:n.activeElement)!=null;){var n;r=r.shadowRoot.activeElement}return r}function lb(e,r){if(!e||!r)return!1;const n=r.getRootNode==null?void 0:r.getRootNode();if(e.contains(r))return!0;if(n&&cN(n)){let o=r;for(;o;){if(e===o)return!0;o=o.parentNode||o.host}}return!1}function dg(e){return"composedPath"in e?e.composedPath()[0]:e.target}function bN(e,r){if(r==null)return!1;if("composedPath"in e)return e.composedPath().includes(r);const n=e;return n.target!=null&&r.contains(n.target)}function Sit(e){return e.matches("html,body")}function oh(e){return e?.ownerDocument||document}function Cit(e){return Ua(e)&&e.matches(Eit)}function Tit(e){if(!e||_it())return!0;try{return e.matches(":focus-visible")}catch{return!0}}function Ait(e){return e?e.hasAttribute(joe)?e:e.querySelector("["+joe+"]")||e:null}function dk(e,r,n){return n===void 0&&(n=!0),e.filter(o=>{var a;return o.parentId===r&&(!n||((a=o.context)==null?void 0:a.open))}).flatMap(o=>[o,...dk(e,o.id,n)])}function Rit(e){return"nativeEvent"in e}function vN(e,r){const n=["mouse","pen"];return n.push("",void 0),n.includes(e)}var Nit=typeof document<"u",Dit=function(){},Al=Nit?E.useLayoutEffect:Dit;const $it={...Hv};function pk(e){const r=E.useRef(e);return Al(()=>{r.current=e}),r}const Mit=$it.useInsertionEffect,Pit=Mit||(e=>e());function Rl(e){const r=E.useRef(()=>{});return Pit(()=>{r.current=e}),E.useCallback(function(){for(var n=arguments.length,o=new Array(n),a=0;a{const{placement:o="bottom",strategy:a="absolute",middleware:i=[],platform:s}=n,l=i.filter(Boolean),c=await(s.isRTL==null?void 0:s.isRTL(r));let u=await s.getElementRects({reference:e,floating:r,strategy:a}),{x:d,y:h}=Boe(u,o,c),f=o,g={},b=0;for(let x=0;x({name:"arrow",options:e,async fn(r){const{x:n,y:o,placement:a,rects:i,platform:s,elements:l,middlewareData:c}=r,{element:u,padding:d=0}=Tl(e,r)||{};if(u==null)return{};const h=yN(d),f={x:n,y:o},g=mN(a),b=fN(g),x=await s.getDimensions(u),w=g==="y",k=w?"top":"left",C=w?"bottom":"right",_=w?"clientHeight":"clientWidth",T=i.reference[b]+i.reference[g]-f[g]-i.floating[b],A=f[g]-i.reference[g],R=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let D=R?R[_]:0;(!D||!await(s.isElement==null?void 0:s.isElement(R)))&&(D=l.floating[_]||i.floating[b]);const N=T/2-A/2,M=D/2-x[b]/2-1,O=zs(h[k],M),F=zs(h[C],M),L=O,U=D-x[b]-F,P=D/2-x[b]/2+N,V=pN(L,P,U),I=!c.arrow&&cg(a)!=null&&P!==V&&i.reference[b]/2-(PP<=0)){var F,L;const P=(((F=i.flip)==null?void 0:F.index)||0)+1,V=D[P];if(V&&(!(h==="alignment"&&C!==Os(V))||O.every(H=>Os(H.placement)===C?H.overflows[0]>0:!0)))return{data:{index:P,overflows:O},reset:{placement:V}};let I=(L=O.filter(H=>H.overflows[0]<=0).sort((H,q)=>H.overflows[1]-q.overflows[1])[0])==null?void 0:L.placement;if(!I)switch(g){case"bestFit":{var U;const H=(U=O.filter(q=>{if(R){const Z=Os(q.placement);return Z===C||Z==="y"}return!0}).map(q=>[q.placement,q.overflows.filter(Z=>Z>0).reduce((Z,W)=>Z+W,0)]).sort((q,Z)=>q[1]-Z[1])[0])==null?void 0:U[0];H&&(I=H);break}case"initialPlacement":I=l;break}if(a!==I)return{reset:{placement:I}}}return{}}}};function Foe(e,r){return{top:e.top-r.height,right:e.right-r.width,bottom:e.bottom-r.height,left:e.left-r.width}}function Hoe(e){return lit.some(r=>e[r]>=0)}const jit=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(r){const{rects:n}=r,{strategy:o="referenceHidden",...a}=Tl(e,r);switch(o){case"referenceHidden":{const i=await cb(r,{...a,elementContext:"reference"}),s=Foe(i,n.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:Hoe(s)}}}case"escaped":{const i=await cb(r,{...a,altBoundary:!0}),s=Foe(i,n.floating);return{data:{escapedOffsets:s,escaped:Hoe(s)}}}default:return{}}}}};function Voe(e){const r=zs(...e.map(i=>i.left)),n=zs(...e.map(i=>i.top)),o=Ho(...e.map(i=>i.right)),a=Ho(...e.map(i=>i.bottom));return{x:r,y:n,width:o-r,height:a-n}}function Lit(e){const r=e.slice().sort((a,i)=>a.y-i.y),n=[];let o=null;for(let a=0;ao.height/2?n.push([i]):n[n.length-1].push(i),o=i}return n.map(a=>ug(Voe(a)))}const Bit=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(r){const{placement:n,elements:o,rects:a,platform:i,strategy:s}=r,{padding:l=2,x:c,y:u}=Tl(e,r),d=Array.from(await(i.getClientRects==null?void 0:i.getClientRects(o.reference))||[]),h=Lit(d),f=ug(Voe(d)),g=yN(l);function b(){if(h.length===2&&h[0].left>h[1].right&&c!=null&&u!=null)return h.find(w=>c>w.left-g.left&&cw.top-g.top&&u=2){if(Os(n)==="y"){const O=h[0],F=h[h.length-1],L=Is(n)==="top",U=O.top,P=F.bottom,V=L?O.left:F.left,I=L?O.right:F.right,H=I-V,q=P-U;return{top:U,bottom:P,left:V,right:I,width:H,height:q,x:V,y:U}}const w=Is(n)==="left",k=Ho(...h.map(O=>O.right)),C=zs(...h.map(O=>O.left)),_=h.filter(O=>w?O.left===C:O.right===k),T=_[0].top,A=_[_.length-1].bottom,R=C,D=k,N=D-R,M=A-T;return{top:T,bottom:A,left:R,right:D,width:N,height:M,x:R,y:T}}return f}const x=await i.getElementRects({reference:{getBoundingClientRect:b},floating:o.floating,strategy:s});return a.reference.x!==x.reference.x||a.reference.y!==x.reference.y||a.reference.width!==x.reference.width||a.reference.height!==x.reference.height?{reset:{rects:x}}:{}}}},qoe=new Set(["left","top"]);async function Fit(e,r){const{placement:n,platform:o,elements:a}=e,i=await(o.isRTL==null?void 0:o.isRTL(a.floating)),s=Is(n),l=cg(n),c=Os(n)==="y",u=qoe.has(s)?-1:1,d=i&&c?-1:1,h=Tl(r,e);let{mainAxis:f,crossAxis:g,alignmentAxis:b}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return l&&typeof b=="number"&&(g=l==="end"?b*-1:b),c?{x:g*d,y:f*u}:{x:f*u,y:g*d}}const Hit=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(r){var n,o;const{x:a,y:i,placement:s,middlewareData:l}=r,c=await Fit(r,e);return s===((n=l.offset)==null?void 0:n.placement)&&(o=l.arrow)!=null&&o.alignmentOffset?{}:{x:a+c.x,y:i+c.y,data:{...c,placement:s}}}}},Vit=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(r){const{x:n,y:o,placement:a}=r,{mainAxis:i=!0,crossAxis:s=!1,limiter:l={fn:w=>{let{x:k,y:C}=w;return{x:k,y:C}}},...c}=Tl(e,r),u={x:n,y:o},d=await cb(r,c),h=Os(Is(a)),f=hN(h);let g=u[f],b=u[h];if(i){const w=f==="y"?"top":"left",k=f==="y"?"bottom":"right",C=g+d[w],_=g-d[k];g=pN(C,g,_)}if(s){const w=h==="y"?"top":"left",k=h==="y"?"bottom":"right",C=b+d[w],_=b-d[k];b=pN(C,b,_)}const x=l.fn({...r,[f]:g,[h]:b});return{...x,data:{x:x.x-n,y:x.y-o,enabled:{[f]:i,[h]:s}}}}}},qit=function(e){return e===void 0&&(e={}),{options:e,fn(r){const{x:n,y:o,placement:a,rects:i,middlewareData:s}=r,{offset:l=0,mainAxis:c=!0,crossAxis:u=!0}=Tl(e,r),d={x:n,y:o},h=Os(a),f=hN(h);let g=d[f],b=d[h];const x=Tl(l,r),w=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(c){const _=f==="y"?"height":"width",T=i.reference[f]-i.floating[_]+w.mainAxis,A=i.reference[f]+i.reference[_]-w.mainAxis;gA&&(g=A)}if(u){var k,C;const _=f==="y"?"width":"height",T=qoe.has(Is(a)),A=i.reference[h]-i.floating[_]+(T&&((k=s.offset)==null?void 0:k[h])||0)+(T?0:w.crossAxis),R=i.reference[h]+i.reference[_]+(T?0:((C=s.offset)==null?void 0:C[h])||0)-(T?w.crossAxis:0);bR&&(b=R)}return{[f]:g,[h]:b}}}},Uit=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(r){var n,o;const{placement:a,rects:i,platform:s,elements:l}=r,{apply:c=()=>{},...u}=Tl(e,r),d=await cb(r,u),h=Is(a),f=cg(a),g=Os(a)==="y",{width:b,height:x}=i.floating;let w,k;h==="top"||h==="bottom"?(w=h,k=f===(await(s.isRTL==null?void 0:s.isRTL(l.floating))?"start":"end")?"left":"right"):(k=h,w=f==="end"?"top":"bottom");const C=x-d.top-d.bottom,_=b-d.left-d.right,T=zs(x-d[w],C),A=zs(b-d[k],_),R=!r.middlewareData.shift;let D=T,N=A;if((n=r.middlewareData.shift)!=null&&n.enabled.x&&(N=_),(o=r.middlewareData.shift)!=null&&o.enabled.y&&(D=C),R&&!f){const O=Ho(d.left,0),F=Ho(d.right,0),L=Ho(d.top,0),U=Ho(d.bottom,0);g?N=b-2*(O!==0||F!==0?O+F:Ho(d.left,d.right)):D=x-2*(L!==0||U!==0?L+U:Ho(d.top,d.bottom))}await c({...r,availableWidth:N,availableHeight:D});const M=await s.getDimensions(l.floating);return b!==M.width||x!==M.height?{reset:{rects:!0}}:{}}}};function Uoe(e){const r=$i(e);let n=parseFloat(r.width)||0,o=parseFloat(r.height)||0;const a=Ua(e),i=a?e.offsetWidth:n,s=a?e.offsetHeight:o,l=lk(n)!==i||lk(o)!==s;return l&&(n=i,o=s),{width:n,height:o,$:l}}function xN(e){return Ur(e)?e:e.contextElement}function pg(e){const r=xN(e);if(!Ua(r))return Cl(1);const n=r.getBoundingClientRect(),{width:o,height:a,$:i}=Uoe(r);let s=(i?lk(n.width):n.width)/o,l=(i?lk(n.height):n.height)/a;return(!s||!Number.isFinite(s))&&(s=1),(!l||!Number.isFinite(l))&&(l=1),{x:s,y:l}}const Wit=Cl(0);function Woe(e){const r=ga(e);return!ik()||!r.visualViewport?Wit:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function Yit(e,r,n){return r===void 0&&(r=!1),!n||r&&n!==ga(e)?!1:r}function ah(e,r,n,o){r===void 0&&(r=!1),n===void 0&&(n=!1);const a=e.getBoundingClientRect(),i=xN(e);let s=Cl(1);r&&(o?Ur(o)&&(s=pg(o)):s=pg(e));const l=Yit(i,n,o)?Woe(i):Cl(0);let c=(a.left+l.x)/s.x,u=(a.top+l.y)/s.y,d=a.width/s.x,h=a.height/s.y;if(i){const f=ga(i),g=o&&Ur(o)?ga(o):o;let b=f,x=dN(b);for(;x&&o&&g!==b;){const w=pg(x),k=x.getBoundingClientRect(),C=$i(x),_=k.left+(x.clientLeft+parseFloat(C.paddingLeft))*w.x,T=k.top+(x.clientTop+parseFloat(C.paddingTop))*w.y;c*=w.x,u*=w.y,d*=w.x,h*=w.y,c+=_,u+=T,b=ga(x),x=dN(b)}}return ug({width:d,height:h,x:c,y:u})}function hk(e,r){const n=sk(e).scrollLeft;return r?r.left+n:ah(Sl(e)).left+n}function Yoe(e,r){const n=e.getBoundingClientRect(),o=n.left+r.scrollLeft-hk(e,n),a=n.top+r.scrollTop;return{x:o,y:a}}function Git(e){let{elements:r,rect:n,offsetParent:o,strategy:a}=e;const i=a==="fixed",s=Sl(o),l=r?ak(r.floating):!1;if(o===s||l&&i)return n;let c={scrollLeft:0,scrollTop:0},u=Cl(1);const d=Cl(0),h=Ua(o);if((h||!h&&!i)&&((lg(o)!=="body"||sb(s))&&(c=sk(o)),Ua(o))){const g=ah(o);u=pg(o),d.x=g.x+o.clientLeft,d.y=g.y+o.clientTop}const f=s&&!h&&!i?Yoe(s,c):Cl(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-c.scrollLeft*u.x+d.x+f.x,y:n.y*u.y-c.scrollTop*u.y+d.y+f.y}}function Xit(e){return Array.from(e.getClientRects())}function Kit(e){const r=Sl(e),n=sk(e),o=e.ownerDocument.body,a=Ho(r.scrollWidth,r.clientWidth,o.scrollWidth,o.clientWidth),i=Ho(r.scrollHeight,r.clientHeight,o.scrollHeight,o.clientHeight);let s=-n.scrollLeft+hk(e);const l=-n.scrollTop;return $i(o).direction==="rtl"&&(s+=Ho(r.clientWidth,o.clientWidth)-a),{width:a,height:i,x:s,y:l}}const Goe=25;function Zit(e,r){const n=ga(e),o=Sl(e),a=n.visualViewport;let i=o.clientWidth,s=o.clientHeight,l=0,c=0;if(a){i=a.width,s=a.height;const d=ik();(!d||d&&r==="fixed")&&(l=a.offsetLeft,c=a.offsetTop)}const u=hk(o);if(u<=0){const d=o.ownerDocument,h=d.body,f=getComputedStyle(h),g=d.compatMode==="CSS1Compat"&&parseFloat(f.marginLeft)+parseFloat(f.marginRight)||0,b=Math.abs(o.clientWidth-h.clientWidth-g);b<=Goe&&(i-=b)}else u<=Goe&&(i+=u);return{width:i,height:s,x:l,y:c}}const Qit=new Set(["absolute","fixed"]);function Jit(e,r){const n=ah(e,!0,r==="fixed"),o=n.top+e.clientTop,a=n.left+e.clientLeft,i=Ua(e)?pg(e):Cl(1),s=e.clientWidth*i.x,l=e.clientHeight*i.y,c=a*i.x,u=o*i.y;return{width:s,height:l,x:c,y:u}}function Xoe(e,r,n){let o;if(r==="viewport")o=Zit(e,n);else if(r==="document")o=Kit(Sl(e));else if(Ur(r))o=Jit(r,n);else{const a=Woe(e);o={x:r.x-a.x,y:r.y-a.y,width:r.width,height:r.height}}return ug(o)}function Koe(e,r){const n=Dc(e);return n===r||!Ur(n)||Nc(n)?!1:$i(n).position==="fixed"||Koe(n,r)}function est(e,r){const n=r.get(e);if(n)return n;let o=$c(e,[],!1).filter(l=>Ur(l)&&lg(l)!=="body"),a=null;const i=$i(e).position==="fixed";let s=i?Dc(e):e;for(;Ur(s)&&!Nc(s);){const l=$i(s),c=uN(s);!c&&l.position==="fixed"&&(a=null),(i?!c&&!a:!c&&l.position==="static"&&a&&Qit.has(a.position)||sb(s)&&!c&&Koe(e,s))?o=o.filter(u=>u!==s):a=l,s=Dc(s)}return r.set(e,o),o}function tst(e){let{element:r,boundary:n,rootBoundary:o,strategy:a}=e;const i=[...n==="clippingAncestors"?ak(r)?[]:est(r,this._c):[].concat(n),o],s=i[0],l=i.reduce((c,u)=>{const d=Xoe(r,u,a);return c.top=Ho(d.top,c.top),c.right=zs(d.right,c.right),c.bottom=zs(d.bottom,c.bottom),c.left=Ho(d.left,c.left),c},Xoe(r,s,a));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function rst(e){const{width:r,height:n}=Uoe(e);return{width:r,height:n}}function nst(e,r,n){const o=Ua(r),a=Sl(r),i=n==="fixed",s=ah(e,!0,i,r);let l={scrollLeft:0,scrollTop:0};const c=Cl(0);function u(){c.x=hk(a)}if(o||!o&&!i)if((lg(r)!=="body"||sb(a))&&(l=sk(r)),o){const g=ah(r,!0,i,r);c.x=g.x+r.clientLeft,c.y=g.y+r.clientTop}else a&&u();i&&!o&&a&&u();const d=a&&!o&&!i?Yoe(a,l):Cl(0),h=s.left+l.scrollLeft-c.x-d.x,f=s.top+l.scrollTop-c.y-d.y;return{x:h,y:f,width:s.width,height:s.height}}function wN(e){return $i(e).position==="static"}function Zoe(e,r){if(!Ua(e)||$i(e).position==="fixed")return null;if(r)return r(e);let n=e.offsetParent;return Sl(e)===n&&(n=n.ownerDocument.body),n}function Qoe(e,r){const n=ga(e);if(ak(e))return n;if(!Ua(e)){let a=Dc(e);for(;a&&!Nc(a);){if(Ur(a)&&!wN(a))return a;a=Dc(a)}return n}let o=Zoe(e,r);for(;o&&tit(o)&&wN(o);)o=Zoe(o,r);return o&&Nc(o)&&wN(o)&&!uN(o)?n:o||iit(e)||n}const ost=async function(e){const r=this.getOffsetParent||Qoe,n=this.getDimensions,o=await n(e.floating);return{reference:nst(e.reference,await r(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function ast(e){return $i(e).direction==="rtl"}const ist={convertOffsetParentRelativeRectToViewportRelativeRect:Git,getDocumentElement:Sl,getClippingRect:tst,getOffsetParent:Qoe,getElementRects:ost,getClientRects:Xit,getDimensions:rst,getScale:pg,isElement:Ur,isRTL:ast};function Joe(e,r){return e.x===r.x&&e.y===r.y&&e.width===r.width&&e.height===r.height}function sst(e,r){let n=null,o;const a=Sl(e);function i(){var l;clearTimeout(o),(l=n)==null||l.disconnect(),n=null}function s(l,c){l===void 0&&(l=!1),c===void 0&&(c=1),i();const u=e.getBoundingClientRect(),{left:d,top:h,width:f,height:g}=u;if(l||r(),!f||!g)return;const b=ck(h),x=ck(a.clientWidth-(d+f)),w=ck(a.clientHeight-(h+g)),k=ck(d),C={rootMargin:-b+"px "+-x+"px "+-w+"px "+-k+"px",threshold:Ho(0,zs(1,c))||1};let _=!0;function T(A){const R=A[0].intersectionRatio;if(R!==c){if(!_)return s();R?s(!1,R):o=setTimeout(()=>{s(!1,1e-7)},1e3)}R===1&&!Joe(u,e.getBoundingClientRect())&&s(),_=!1}try{n=new IntersectionObserver(T,{...C,root:a.ownerDocument})}catch{n=new IntersectionObserver(T,C)}n.observe(e)}return s(!0),i}function kN(e,r,n,o){o===void 0&&(o={});const{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:c=!1}=o,u=xN(e),d=a||i?[...u?$c(u):[],...$c(r)]:[];d.forEach(k=>{a&&k.addEventListener("scroll",n,{passive:!0}),i&&k.addEventListener("resize",n)});const h=u&&l?sst(u,n):null;let f=-1,g=null;s&&(g=new ResizeObserver(k=>{let[C]=k;C&&C.target===u&&g&&(g.unobserve(r),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=g)==null||_.observe(r)})),n()}),u&&!c&&g.observe(u),g.observe(r));let b,x=c?ah(e):null;c&&w();function w(){const k=ah(e);x&&!Joe(x,k)&&n(),x=k,b=requestAnimationFrame(w)}return n(),()=>{var k;d.forEach(C=>{a&&C.removeEventListener("scroll",n),i&&C.removeEventListener("resize",n)}),h?.(),(k=g)==null||k.disconnect(),g=null,c&&cancelAnimationFrame(b)}}const lst=Hit,cst=Vit,ust=Oit,dst=Uit,pst=jit,eae=Iit,hst=Bit,fst=qit,mst=(e,r,n)=>{const o=new Map,a={platform:ist,...n},i={...a.platform,_c:o};return zit(e,r,{...a,platform:i})};var gst=typeof document<"u",yst=function(){},fk=gst?E.useLayoutEffect:yst;function mk(e,r){if(e===r)return!0;if(typeof e!=typeof r)return!1;if(typeof e=="function"&&e.toString()===r.toString())return!0;let n,o,a;if(e&&r&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==r.length)return!1;for(o=n;o--!==0;)if(!mk(e[o],r[o]))return!1;return!0}if(a=Object.keys(e),n=a.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(r,a[o]))return!1;for(o=n;o--!==0;){const i=a[o];if(!(i==="_owner"&&e.$$typeof)&&!mk(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}function tae(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function rae(e,r){const n=tae(e);return Math.round(r*n)/n}function _N(e){const r=E.useRef(e);return fk(()=>{r.current=e}),r}function bst(e){e===void 0&&(e={});const{placement:r="bottom",strategy:n="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:s}={},transform:l=!0,whileElementsMounted:c,open:u}=e,[d,h]=E.useState({x:0,y:0,strategy:n,placement:r,middlewareData:{},isPositioned:!1}),[f,g]=E.useState(o);mk(f,o)||g(o);const[b,x]=E.useState(null),[w,k]=E.useState(null),C=E.useCallback(q=>{q!==R.current&&(R.current=q,x(q))},[]),_=E.useCallback(q=>{q!==D.current&&(D.current=q,k(q))},[]),T=i||b,A=s||w,R=E.useRef(null),D=E.useRef(null),N=E.useRef(d),M=c!=null,O=_N(c),F=_N(a),L=_N(u),U=E.useCallback(()=>{if(!R.current||!D.current)return;const q={placement:r,strategy:n,middleware:f};F.current&&(q.platform=F.current),mst(R.current,D.current,q).then(Z=>{const W={...Z,isPositioned:L.current!==!1};P.current&&!mk(N.current,W)&&(N.current=W,Ki.flushSync(()=>{h(W)}))})},[f,r,n,F,L]);fk(()=>{u===!1&&N.current.isPositioned&&(N.current.isPositioned=!1,h(q=>({...q,isPositioned:!1})))},[u]);const P=E.useRef(!1);fk(()=>(P.current=!0,()=>{P.current=!1}),[]),fk(()=>{if(T&&(R.current=T),A&&(D.current=A),T&&A){if(O.current)return O.current(T,A,U);U()}},[T,A,U,O,M]);const V=E.useMemo(()=>({reference:R,floating:D,setReference:C,setFloating:_}),[C,_]),I=E.useMemo(()=>({reference:T,floating:A}),[T,A]),H=E.useMemo(()=>{const q={position:n,left:0,top:0};if(!I.floating)return q;const Z=rae(I.floating,d.x),W=rae(I.floating,d.y);return l?{...q,transform:"translate("+Z+"px, "+W+"px)",...tae(I.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:Z,top:W}},[n,l,I.floating,d.x,d.y]);return E.useMemo(()=>({...d,update:U,refs:V,elements:I,floatingStyles:H}),[d,U,V,I,H])}const vst=e=>{function r(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:a}=typeof e=="function"?e(n):e;return o&&r(o)?o.current!=null?eae({element:o.current,padding:a}).fn(n):{}:o?eae({element:o,padding:a}).fn(n):{}}}},nae=(e,r)=>({...lst(e),options:[e,r]}),EN=(e,r)=>({...cst(e),options:[e,r]}),oae=(e,r)=>({...fst(e),options:[e,r]}),gk=(e,r)=>({...ust(e),options:[e,r]}),xst=(e,r)=>({...dst(e),options:[e,r]}),wst=(e,r)=>({...pst(e),options:[e,r]}),ub=(e,r)=>({...hst(e),options:[e,r]}),aae=(e,r)=>({...vst(e),options:[e,r]});function iae(e){const r=E.useRef(void 0),n=E.useCallback(o=>{const a=e.map(i=>{if(i!=null){if(typeof i=="function"){const s=i,l=s(o);return typeof l=="function"?l:()=>{s(null)}}return i.current=o,()=>{i.current=null}}});return()=>{a.forEach(i=>i?.())}},e);return E.useMemo(()=>e.every(o=>o==null)?null:o=>{r.current&&(r.current(),r.current=void 0),o!=null&&(r.current=n(o))},e)}const kst="data-floating-ui-focusable",sae="active",lae="selected",_st={...Hv};let cae=!1,Est=0;const uae=()=>"floating-ui-"+Math.random().toString(36).slice(2,6)+Est++;function Sst(){const[e,r]=E.useState(()=>cae?uae():void 0);return Al(()=>{e==null&&r(uae())},[]),E.useEffect(()=>{cae=!0},[]),e}const Cst=_st.useId,dae=Cst||Sst;function Tst(){const e=new Map;return{emit(r,n){var o;(o=e.get(r))==null||o.forEach(a=>a(n))},on(r,n){e.has(r)||e.set(r,new Set),e.get(r).add(n)},off(r,n){var o;(o=e.get(r))==null||o.delete(n)}}}const Ast=E.createContext(null),Rst=E.createContext(null),SN=()=>{var e;return((e=E.useContext(Ast))==null?void 0:e.id)||null},CN=()=>E.useContext(Rst);function TN(e){return"data-floating-ui-"+e}function Mi(e){e.current!==-1&&(clearTimeout(e.current),e.current=-1)}const pae=TN("safe-polygon");function yk(e,r,n){if(n&&!vN(n))return 0;if(typeof e=="number")return e;if(typeof e=="function"){const o=e();return typeof o=="number"?o:o?.[r]}return e?.[r]}function AN(e){return typeof e=="function"?e():e}function Nst(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,dataRef:a,events:i,elements:s}=e,{enabled:l=!0,delay:c=0,handleClose:u=null,mouseOnly:d=!1,restMs:h=0,move:f=!0}=r,g=CN(),b=SN(),x=pk(u),w=pk(c),k=pk(n),C=pk(h),_=E.useRef(),T=E.useRef(-1),A=E.useRef(),R=E.useRef(-1),D=E.useRef(!0),N=E.useRef(!1),M=E.useRef(()=>{}),O=E.useRef(!1),F=Rl(()=>{var H;const q=(H=a.current.openEvent)==null?void 0:H.type;return q?.includes("mouse")&&q!=="mousedown"});E.useEffect(()=>{if(!l)return;function H(q){let{open:Z}=q;Z||(Mi(T),Mi(R),D.current=!0,O.current=!1)}return i.on("openchange",H),()=>{i.off("openchange",H)}},[l,i]),E.useEffect(()=>{if(!l||!x.current||!n)return;function H(Z){F()&&o(!1,Z,"hover")}const q=oh(s.floating).documentElement;return q.addEventListener("mouseleave",H),()=>{q.removeEventListener("mouseleave",H)}},[s.floating,n,o,l,x,F]);const L=E.useCallback(function(H,q,Z){q===void 0&&(q=!0),Z===void 0&&(Z="hover");const W=yk(w.current,"close",_.current);W&&!A.current?(Mi(T),T.current=window.setTimeout(()=>o(!1,H,Z),W)):q&&(Mi(T),o(!1,H,Z))},[w,o]),U=Rl(()=>{M.current(),A.current=void 0}),P=Rl(()=>{if(N.current){const H=oh(s.floating).body;H.style.pointerEvents="",H.removeAttribute(pae),N.current=!1}}),V=Rl(()=>a.current.openEvent?["click","mousedown"].includes(a.current.openEvent.type):!1);E.useEffect(()=>{if(!l)return;function H(K){if(Mi(T),D.current=!1,d&&!vN(_.current)||AN(C.current)>0&&!yk(w.current,"open"))return;const j=yk(w.current,"open",_.current);j?T.current=window.setTimeout(()=>{k.current||o(!0,K,"hover")},j):n||o(!0,K,"hover")}function q(K){if(V()){P();return}M.current();const j=oh(s.floating);if(Mi(R),O.current=!1,x.current&&a.current.floatingContext){n||Mi(T),A.current=x.current({...a.current.floatingContext,tree:g,x:K.clientX,y:K.clientY,onClose(){P(),U(),V()||L(K,!0,"safe-polygon")}});const Y=A.current;j.addEventListener("mousemove",Y),M.current=()=>{j.removeEventListener("mousemove",Y)};return}(_.current!=="touch"||!lb(s.floating,K.relatedTarget))&&L(K)}function Z(K){V()||a.current.floatingContext&&(x.current==null||x.current({...a.current.floatingContext,tree:g,x:K.clientX,y:K.clientY,onClose(){P(),U(),V()||L(K)}})(K))}function W(){Mi(T)}function G(K){V()||L(K,!1)}if(Ur(s.domReference)){const K=s.domReference,j=s.floating;return n&&K.addEventListener("mouseleave",Z),f&&K.addEventListener("mousemove",H,{once:!0}),K.addEventListener("mouseenter",H),K.addEventListener("mouseleave",q),j&&(j.addEventListener("mouseleave",Z),j.addEventListener("mouseenter",W),j.addEventListener("mouseleave",G)),()=>{n&&K.removeEventListener("mouseleave",Z),f&&K.removeEventListener("mousemove",H),K.removeEventListener("mouseenter",H),K.removeEventListener("mouseleave",q),j&&(j.removeEventListener("mouseleave",Z),j.removeEventListener("mouseenter",W),j.removeEventListener("mouseleave",G))}}},[s,l,e,d,f,L,U,P,o,n,k,g,w,x,a,V,C]),Al(()=>{var H;if(l&&n&&(H=x.current)!=null&&(H=H.__options)!=null&&H.blockPointerEvents&&F()){N.current=!0;const Z=s.floating;if(Ur(s.domReference)&&Z){var q;const W=oh(s.floating).body;W.setAttribute(pae,"");const G=s.domReference,K=g==null||(q=g.nodesRef.current.find(j=>j.id===b))==null||(q=q.context)==null?void 0:q.elements.floating;return K&&(K.style.pointerEvents=""),W.style.pointerEvents="none",G.style.pointerEvents="auto",Z.style.pointerEvents="auto",()=>{W.style.pointerEvents="",G.style.pointerEvents="",Z.style.pointerEvents=""}}}},[l,n,b,s,g,x,F]),Al(()=>{n||(_.current=void 0,O.current=!1,U(),P())},[n,U,P]),E.useEffect(()=>()=>{U(),Mi(T),Mi(R),P()},[l,s.domReference,U,P]);const I=E.useMemo(()=>{function H(q){_.current=q.pointerType}return{onPointerDown:H,onPointerEnter:H,onMouseMove(q){const{nativeEvent:Z}=q;function W(){!D.current&&!k.current&&o(!0,Z,"hover")}d&&!vN(_.current)||n||AN(C.current)===0||O.current&&q.movementX**2+q.movementY**2<2||(Mi(R),_.current==="touch"?W():(O.current=!0,R.current=window.setTimeout(W,AN(C.current))))}}},[d,o,n,k,C]);return E.useMemo(()=>l?{reference:I}:{},[l,I])}const RN=()=>{},hae=E.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:RN,setState:RN,isInstantPhase:!1}),Dst=()=>E.useContext(hae);function fae(e){const{children:r,delay:n,timeoutMs:o=0}=e,[a,i]=E.useReducer((c,u)=>({...c,...u}),{delay:n,timeoutMs:o,initialDelay:n,currentId:null,isInstantPhase:!1}),s=E.useRef(null),l=E.useCallback(c=>{i({currentId:c})},[]);return Al(()=>{a.currentId?s.current===null?s.current=a.currentId:a.isInstantPhase||i({isInstantPhase:!0}):(a.isInstantPhase&&i({isInstantPhase:!1}),s.current=null)},[a.currentId,a.isInstantPhase]),y.jsx(hae.Provider,{value:E.useMemo(()=>({...a,setState:i,setCurrentId:l}),[a,l]),children:r})}function $st(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,floatingId:a}=e,{id:i,enabled:s=!0}=r,l=i??a,c=Dst(),{currentId:u,setCurrentId:d,initialDelay:h,setState:f,timeoutMs:g}=c;return Al(()=>{s&&u&&(f({delay:{open:1,close:yk(h,"close")}}),u!==l&&o(!1))},[s,l,o,f,u,h]),Al(()=>{function b(){o(!1),f({delay:h,currentId:null})}if(s&&u&&!n&&u===l){if(g){const x=window.setTimeout(b,g);return()=>{clearTimeout(x)}}b()}},[s,n,f,u,l,o,h,g]),Al(()=>{s&&(d===RN||!n||d(l))},[s,n,d,l]),c}const Mst={pointerdown:"onPointerDown",mousedown:"onMouseDown",click:"onClick"},Pst={pointerdown:"onPointerDownCapture",mousedown:"onMouseDownCapture",click:"onClickCapture"},mae=e=>{var r,n;return{escapeKey:typeof e=="boolean"?e:(r=e?.escapeKey)!=null?r:!1,outsidePress:typeof e=="boolean"?e:(n=e?.outsidePress)!=null?n:!0}};function zst(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,elements:a,dataRef:i}=e,{enabled:s=!0,escapeKey:l=!0,outsidePress:c=!0,outsidePressEvent:u="pointerdown",referencePress:d=!1,referencePressEvent:h="pointerdown",ancestorScroll:f=!1,bubbles:g,capture:b}=r,x=CN(),w=Rl(typeof c=="function"?c:()=>!1),k=typeof c=="function"?w:c,C=E.useRef(!1),{escapeKey:_,outsidePress:T}=mae(g),{escapeKey:A,outsidePress:R}=mae(b),D=E.useRef(!1),N=Rl(P=>{var V;if(!n||!s||!l||P.key!=="Escape"||D.current)return;const I=(V=i.current.floatingContext)==null?void 0:V.nodeId,H=x?dk(x.nodesRef.current,I):[];if(!_&&(P.stopPropagation(),H.length>0)){let q=!0;if(H.forEach(Z=>{var W;if((W=Z.context)!=null&&W.open&&!Z.context.dataRef.current.__escapeKeyBubbles){q=!1;return}}),!q)return}o(!1,Rit(P)?P.nativeEvent:P,"escape-key")}),M=Rl(P=>{var V;const I=()=>{var H;N(P),(H=dg(P))==null||H.removeEventListener("keydown",I)};(V=dg(P))==null||V.addEventListener("keydown",I)}),O=Rl(P=>{var V;const I=i.current.insideReactTree;i.current.insideReactTree=!1;const H=C.current;if(C.current=!1,u==="click"&&H||I||typeof k=="function"&&!k(P))return;const q=dg(P),Z="["+TN("inert")+"]",W=oh(a.floating).querySelectorAll(Z);let G=Ur(q)?q:null;for(;G&&!Nc(G);){const Q=Dc(G);if(Nc(Q)||!Ur(Q))break;G=Q}if(W.length&&Ur(q)&&!Sit(q)&&!lb(q,a.floating)&&Array.from(W).every(Q=>!lb(G,Q)))return;if(Ua(q)&&U){const Q=Nc(q),J=$i(q),ie=/auto|scroll/,ne=Q||ie.test(J.overflowX),re=Q||ie.test(J.overflowY),ge=ne&&q.clientWidth>0&&q.scrollWidth>q.clientWidth,De=re&&q.clientHeight>0&&q.scrollHeight>q.clientHeight,he=J.direction==="rtl",me=De&&(he?P.offsetX<=q.offsetWidth-q.clientWidth:P.offsetX>q.clientWidth),Te=ge&&P.offsetY>q.clientHeight;if(me||Te)return}const K=(V=i.current.floatingContext)==null?void 0:V.nodeId,j=x&&dk(x.nodesRef.current,K).some(Q=>{var J;return bN(P,(J=Q.context)==null?void 0:J.elements.floating)});if(bN(P,a.floating)||bN(P,a.domReference)||j)return;const Y=x?dk(x.nodesRef.current,K):[];if(Y.length>0){let Q=!0;if(Y.forEach(J=>{var ie;if((ie=J.context)!=null&&ie.open&&!J.context.dataRef.current.__outsidePressBubbles){Q=!1;return}}),!Q)return}o(!1,P,"outside-press")}),F=Rl(P=>{var V;const I=()=>{var H;O(P),(H=dg(P))==null||H.removeEventListener(u,I)};(V=dg(P))==null||V.addEventListener(u,I)});E.useEffect(()=>{if(!n||!s)return;i.current.__escapeKeyBubbles=_,i.current.__outsidePressBubbles=T;let P=-1;function V(W){o(!1,W,"ancestor-scroll")}function I(){window.clearTimeout(P),D.current=!0}function H(){P=window.setTimeout(()=>{D.current=!1},ik()?5:0)}const q=oh(a.floating);l&&(q.addEventListener("keydown",A?M:N,A),q.addEventListener("compositionstart",I),q.addEventListener("compositionend",H)),k&&q.addEventListener(u,R?F:O,R);let Z=[];return f&&(Ur(a.domReference)&&(Z=$c(a.domReference)),Ur(a.floating)&&(Z=Z.concat($c(a.floating))),!Ur(a.reference)&&a.reference&&a.reference.contextElement&&(Z=Z.concat($c(a.reference.contextElement)))),Z=Z.filter(W=>{var G;return W!==((G=q.defaultView)==null?void 0:G.visualViewport)}),Z.forEach(W=>{W.addEventListener("scroll",V,{passive:!0})}),()=>{l&&(q.removeEventListener("keydown",A?M:N,A),q.removeEventListener("compositionstart",I),q.removeEventListener("compositionend",H)),k&&q.removeEventListener(u,R?F:O,R),Z.forEach(W=>{W.removeEventListener("scroll",V)}),window.clearTimeout(P)}},[i,a,l,k,u,n,o,f,s,_,T,N,A,M,O,R,F]),E.useEffect(()=>{i.current.insideReactTree=!1},[i,k,u]);const L=E.useMemo(()=>({onKeyDown:N,...d&&{[Mst[h]]:P=>{o(!1,P.nativeEvent,"reference-press")},...h!=="click"&&{onClick(P){o(!1,P.nativeEvent,"reference-press")}}}}),[N,o,d,h]),U=E.useMemo(()=>({onKeyDown:N,onMouseDown(){C.current=!0},onMouseUp(){C.current=!0},[Pst[u]]:()=>{i.current.insideReactTree=!0}}),[N,u,i]);return E.useMemo(()=>s?{reference:L,floating:U}:{},[s,L,U])}function Ist(e){const{open:r=!1,onOpenChange:n,elements:o}=e,a=dae(),i=E.useRef({}),[s]=E.useState(()=>Tst()),l=SN()!=null,[c,u]=E.useState(o.reference),d=Rl((g,b,x)=>{i.current.openEvent=g?b:void 0,s.emit("openchange",{open:g,event:b,reason:x,nested:l}),n?.(g,b,x)}),h=E.useMemo(()=>({setPositionReference:u}),[]),f=E.useMemo(()=>({reference:c||o.reference||null,floating:o.floating||null,domReference:o.reference}),[c,o.reference,o.floating]);return E.useMemo(()=>({dataRef:i,open:r,onOpenChange:d,elements:f,events:s,floatingId:a,refs:h}),[r,d,f,s,a,h])}function NN(e){e===void 0&&(e={});const{nodeId:r}=e,n=Ist({...e,elements:{reference:null,floating:null,...e.elements}}),o=e.rootContext||n,a=o.elements,[i,s]=E.useState(null),[l,c]=E.useState(null),u=a?.domReference||i,d=E.useRef(null),h=CN();Al(()=>{u&&(d.current=u)},[u]);const f=bst({...e,elements:{...a,...l&&{reference:l}}}),g=E.useCallback(C=>{const _=Ur(C)?{getBoundingClientRect:()=>C.getBoundingClientRect(),getClientRects:()=>C.getClientRects(),contextElement:C}:C;c(_),f.refs.setReference(_)},[f.refs]),b=E.useCallback(C=>{(Ur(C)||C===null)&&(d.current=C,s(C)),(Ur(f.refs.reference.current)||f.refs.reference.current===null||C!==null&&!Ur(C))&&f.refs.setReference(C)},[f.refs]),x=E.useMemo(()=>({...f.refs,setReference:b,setPositionReference:g,domReference:d}),[f.refs,b,g]),w=E.useMemo(()=>({...f.elements,domReference:u}),[f.elements,u]),k=E.useMemo(()=>({...f,...o,refs:x,elements:w,nodeId:r}),[f,x,w,r,o]);return Al(()=>{o.dataRef.current.floatingContext=k;const C=h?.nodesRef.current.find(_=>_.id===r);C&&(C.context=k)}),E.useMemo(()=>({...f,context:k,refs:x,elements:w}),[f,x,w,k])}function DN(){return kit()&&wit()}function Ost(e,r){r===void 0&&(r={});const{open:n,onOpenChange:o,events:a,dataRef:i,elements:s}=e,{enabled:l=!0,visibleOnly:c=!0}=r,u=E.useRef(!1),d=E.useRef(-1),h=E.useRef(!0);E.useEffect(()=>{if(!l)return;const g=ga(s.domReference);function b(){!n&&Ua(s.domReference)&&s.domReference===Loe(oh(s.domReference))&&(u.current=!0)}function x(){h.current=!0}function w(){h.current=!1}return g.addEventListener("blur",b),DN()&&(g.addEventListener("keydown",x,!0),g.addEventListener("pointerdown",w,!0)),()=>{g.removeEventListener("blur",b),DN()&&(g.removeEventListener("keydown",x,!0),g.removeEventListener("pointerdown",w,!0))}},[s.domReference,n,l]),E.useEffect(()=>{if(!l)return;function g(b){let{reason:x}=b;(x==="reference-press"||x==="escape-key")&&(u.current=!0)}return a.on("openchange",g),()=>{a.off("openchange",g)}},[a,l]),E.useEffect(()=>()=>{Mi(d)},[]);const f=E.useMemo(()=>({onMouseLeave(){u.current=!1},onFocus(g){if(u.current)return;const b=dg(g.nativeEvent);if(c&&Ur(b)){if(DN()&&!g.relatedTarget){if(!h.current&&!Cit(b))return}else if(!Tit(b))return}o(!0,g.nativeEvent,"focus")},onBlur(g){u.current=!1;const b=g.relatedTarget,x=g.nativeEvent,w=Ur(b)&&b.hasAttribute(TN("focus-guard"))&&b.getAttribute("data-type")==="outside";d.current=window.setTimeout(()=>{var k;const C=Loe(s.domReference?s.domReference.ownerDocument:document);!b&&C===s.domReference||lb((k=i.current.floatingContext)==null?void 0:k.refs.floating.current,C)||lb(s.domReference,C)||w||o(!1,x,"focus")})}}),[i,s.domReference,o,c]);return E.useMemo(()=>l?{reference:f}:{},[l,f])}function $N(e,r,n){const o=new Map,a=n==="item";let i=e;if(a&&e){const{[sae]:s,[lae]:l,...c}=e;i=c}return{...n==="floating"&&{tabIndex:-1,[kst]:""},...i,...r.map(s=>{const l=s?s[n]:null;return typeof l=="function"?e?l(e):null:l}).concat(e).reduce((s,l)=>(l&&Object.entries(l).forEach(c=>{let[u,d]=c;if(!(a&&[sae,lae].includes(u)))if(u.indexOf("on")===0){if(o.has(u)||o.set(u,[]),typeof d=="function"){var h;(h=o.get(u))==null||h.push(d),s[u]=function(){for(var f,g=arguments.length,b=new Array(g),x=0;xw(...b)).find(w=>w!==void 0)}}}else s[u]=d}),s),{})}}function jst(e){e===void 0&&(e=[]);const r=e.map(l=>l?.reference),n=e.map(l=>l?.floating),o=e.map(l=>l?.item),a=E.useCallback(l=>$N(l,e,"reference"),r),i=E.useCallback(l=>$N(l,e,"floating"),n),s=E.useCallback(l=>$N(l,e,"item"),o);return E.useMemo(()=>({getReferenceProps:a,getFloatingProps:i,getItemProps:s}),[a,i,s])}const Lst=new Map([["select","listbox"],["combobox","listbox"],["label",!1]]);function Bst(e,r){var n,o;r===void 0&&(r={});const{open:a,elements:i,floatingId:s}=e,{enabled:l=!0,role:c="dialog"}=r,u=dae(),d=((n=i.domReference)==null?void 0:n.id)||u,h=E.useMemo(()=>{var k;return((k=Ait(i.floating))==null?void 0:k.id)||s},[i.floating,s]),f=(o=Lst.get(c))!=null?o:c,g=SN()!=null,b=E.useMemo(()=>f==="tooltip"||c==="label"?{["aria-"+(c==="label"?"labelledby":"describedby")]:a?h:void 0}:{"aria-expanded":a?"true":"false","aria-haspopup":f==="alertdialog"?"dialog":f,"aria-controls":a?h:void 0,...f==="listbox"&&{role:"combobox"},...f==="menu"&&{id:d},...f==="menu"&&g&&{role:"menuitem"},...c==="select"&&{"aria-autocomplete":"none"},...c==="combobox"&&{"aria-autocomplete":"list"}},[f,h,g,a,d,c]),x=E.useMemo(()=>{const k={id:h,...f&&{role:f}};return f==="tooltip"||c==="label"?k:{...k,...f==="menu"&&{"aria-labelledby":d}}},[f,h,d,c]),w=E.useCallback(k=>{let{active:C,selected:_}=k;const T={role:"option",...C&&{id:h+"-fui-option"}};switch(c){case"select":case"combobox":return{...T,"aria-selected":_}}return{}},[h,c]);return E.useMemo(()=>l?{reference:b,floating:x,item:w}:{},[l,b,x,w])}const[Fst,Pi]=qa("ScrollArea.Root component was not found in tree");function hg(e,r){const n=eh(r);GR(()=>{let o=0;if(e){const a=new ResizeObserver(()=>{cancelAnimationFrame(o),o=window.requestAnimationFrame(n)});return a.observe(e),()=>{window.cancelAnimationFrame(o),a.unobserve(e)}}},[e,n])}const Hst=E.forwardRef((e,r)=>{const{style:n,...o}=e,a=Pi(),[i,s]=E.useState(0),[l,c]=E.useState(0),u=!!(i&&l);return hg(a.scrollbarX,()=>{const d=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(d),c(d)}),hg(a.scrollbarY,()=>{const d=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(d),s(d)}),u?y.jsx("div",{...o,ref:r,style:{...n,width:i,height:l}}):null}),Vst=E.forwardRef((e,r)=>{const n=Pi(),o=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&o?y.jsx(Hst,{...e,ref:r}):null}),qst={scrollHideDelay:1e3,type:"hover"},gae=E.forwardRef((e,r)=>{const{type:n,scrollHideDelay:o,scrollbars:a,getStyles:i,...s}=ze("ScrollAreaRoot",qst,e),[l,c]=E.useState(null),[u,d]=E.useState(null),[h,f]=E.useState(null),[g,b]=E.useState(null),[x,w]=E.useState(null),[k,C]=E.useState(0),[_,T]=E.useState(0),[A,R]=E.useState(!1),[D,N]=E.useState(!1),M=yn(r,O=>c(O));return y.jsx(Fst,{value:{type:n,scrollHideDelay:o,scrollArea:l,viewport:u,onViewportChange:d,content:h,onContentChange:f,scrollbarX:g,onScrollbarXChange:b,scrollbarXEnabled:A,onScrollbarXEnabledChange:R,scrollbarY:x,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:N,onCornerWidthChange:C,onCornerHeightChange:T,getStyles:i},children:y.jsx(Le,{...s,ref:M,__vars:{"--sa-corner-width":a!=="xy"?"0px":`${k}px`,"--sa-corner-height":a!=="xy"?"0px":`${_}px`}})})});gae.displayName="@mantine/core/ScrollAreaRoot";function yae(e,r){const n=e/r;return Number.isNaN(n)?0:n}function bk(e){const r=yae(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,o=(e.scrollbar.size-n)*r;return Math.max(o,18)}function bae(e,r){return n=>{if(e[0]===e[1]||r[0]===r[1])return r[0];const o=(r[1]-r[0])/(e[1]-e[0]);return r[0]+o*(n-e[0])}}function Ust(e,[r,n]){return Math.min(n,Math.max(r,e))}function vae(e,r,n="ltr"){const o=bk(r),a=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,i=r.scrollbar.size-a,s=r.content-r.viewport,l=i-o,c=n==="ltr"?[0,s]:[s*-1,0],u=Ust(e,c);return bae([0,s],[0,l])(u)}function Wst(e,r,n,o="ltr"){const a=bk(n),i=a/2,s=r||i,l=a-s,c=n.scrollbar.paddingStart+s,u=n.scrollbar.size-n.scrollbar.paddingEnd-l,d=n.content-n.viewport,h=o==="ltr"?[0,d]:[d*-1,0];return bae([c,u],h)(e)}function xae(e,r){return e>0&&e{e?.(o),(n===!1||!o.defaultPrevented)&&r?.(o)}}const[Yst,wae]=qa("ScrollAreaScrollbar was not found in tree"),kae=E.forwardRef((e,r)=>{const{sizes:n,hasThumb:o,onThumbChange:a,onThumbPointerUp:i,onThumbPointerDown:s,onThumbPositionChange:l,onDragScroll:c,onWheelScroll:u,onResize:d,...h}=e,f=Pi(),[g,b]=E.useState(null),x=yn(r,N=>b(N)),w=E.useRef(null),k=E.useRef(""),{viewport:C}=f,_=n.content-n.viewport,T=eh(u),A=eh(l),R=Z4(d,10),D=N=>{if(w.current){const M=N.clientX-w.current.left,O=N.clientY-w.current.top;c({x:M,y:O})}};return E.useEffect(()=>{const N=M=>{const O=M.target;g?.contains(O)&&T(M,_)};return document.addEventListener("wheel",N,{passive:!1}),()=>document.removeEventListener("wheel",N,{passive:!1})},[C,g,_,T]),E.useEffect(A,[n,A]),hg(g,R),hg(f.content,R),y.jsx(Yst,{value:{scrollbar:g,hasThumb:o,onThumbChange:eh(a),onThumbPointerUp:eh(i),onThumbPositionChange:A,onThumbPointerDown:eh(s)},children:y.jsx("div",{...h,ref:x,"data-mantine-scrollbar":!0,style:{position:"absolute",...h.style},onPointerDown:ih(e.onPointerDown,N=>{N.preventDefault(),N.button===0&&(N.target.setPointerCapture(N.pointerId),w.current=g.getBoundingClientRect(),k.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",D(N))}),onPointerMove:ih(e.onPointerMove,D),onPointerUp:ih(e.onPointerUp,N=>{const M=N.target;M.hasPointerCapture(N.pointerId)&&(N.preventDefault(),M.releasePointerCapture(N.pointerId))}),onLostPointerCapture:()=>{document.body.style.webkitUserSelect=k.current,w.current=null}})})}),_ae=E.forwardRef((e,r)=>{const{sizes:n,onSizesChange:o,style:a,...i}=e,s=Pi(),[l,c]=E.useState(),u=E.useRef(null),d=yn(r,u,s.onScrollbarXChange);return E.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),y.jsx(kae,{"data-orientation":"horizontal",...i,ref:d,sizes:n,style:{...a,"--sa-thumb-width":`${bk(n)}px`},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,f)=>{if(s.viewport){const g=s.viewport.scrollLeft+h.deltaX;e.onWheelScroll(g),xae(g,f)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&l&&o({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:Ju(l.paddingLeft),paddingEnd:Ju(l.paddingRight)}})}})});_ae.displayName="@mantine/core/ScrollAreaScrollbarX";const Eae=E.forwardRef((e,r)=>{const{sizes:n,onSizesChange:o,style:a,...i}=e,s=Pi(),[l,c]=E.useState(),u=E.useRef(null),d=yn(r,u,s.onScrollbarYChange);return E.useEffect(()=>{u.current&&c(window.getComputedStyle(u.current))},[]),y.jsx(kae,{...i,"data-orientation":"vertical",ref:d,sizes:n,style:{"--sa-thumb-height":`${bk(n)}px`,...a},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,f)=>{if(s.viewport){const g=s.viewport.scrollTop+h.deltaY;e.onWheelScroll(g),xae(g,f)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&l&&o({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:Ju(l.paddingTop),paddingEnd:Ju(l.paddingBottom)}})}})});Eae.displayName="@mantine/core/ScrollAreaScrollbarY";const vk=E.forwardRef((e,r)=>{const{orientation:n="vertical",...o}=e,{dir:a}=Rc(),i=Pi(),s=E.useRef(null),l=E.useRef(0),[c,u]=E.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=yae(c.viewport,c.content),h={...o,sizes:c,onSizesChange:u,hasThumb:d>0&&d<1,onThumbChange:g=>{s.current=g},onThumbPointerUp:()=>{l.current=0},onThumbPointerDown:g=>{l.current=g}},f=(g,b)=>Wst(g,l.current,c,b);return n==="horizontal"?y.jsx(_ae,{...h,ref:r,onThumbPositionChange:()=>{if(i.viewport&&s.current){const g=i.viewport.scrollLeft,b=vae(g,c,a);s.current.style.transform=`translate3d(${b}px, 0, 0)`}},onWheelScroll:g=>{i.viewport&&(i.viewport.scrollLeft=g)},onDragScroll:g=>{i.viewport&&(i.viewport.scrollLeft=f(g,a))}}):n==="vertical"?y.jsx(Eae,{...h,ref:r,onThumbPositionChange:()=>{if(i.viewport&&s.current){const g=i.viewport.scrollTop,b=vae(g,c);c.scrollbar.size===0?s.current.style.setProperty("--thumb-opacity","0"):s.current.style.setProperty("--thumb-opacity","1"),s.current.style.transform=`translate3d(0, ${b}px, 0)`}},onWheelScroll:g=>{i.viewport&&(i.viewport.scrollTop=g)},onDragScroll:g=>{i.viewport&&(i.viewport.scrollTop=f(g))}}):null});vk.displayName="@mantine/core/ScrollAreaScrollbarVisible";const MN=E.forwardRef((e,r)=>{const n=Pi(),{forceMount:o,...a}=e,[i,s]=E.useState(!1),l=e.orientation==="horizontal",c=Z4(()=>{if(n.viewport){const u=n.viewport.offsetWidth{const{forceMount:n,...o}=e,a=Pi(),[i,s]=E.useState(!1);return E.useEffect(()=>{const{scrollArea:l}=a;let c=0;if(l){const u=()=>{window.clearTimeout(c),s(!0)},d=()=>{c=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return l.addEventListener("pointerenter",u),l.addEventListener("pointerleave",d),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",u),l.removeEventListener("pointerleave",d)}}},[a.scrollArea,a.scrollHideDelay]),n||i?y.jsx(MN,{"data-state":i?"visible":"hidden",...o,ref:r}):null});Sae.displayName="@mantine/core/ScrollAreaScrollbarHover";const Gst=E.forwardRef((e,r)=>{const{forceMount:n,...o}=e,a=Pi(),i=e.orientation==="horizontal",[s,l]=E.useState("hidden"),c=Z4(()=>l("idle"),100);return E.useEffect(()=>{if(s==="idle"){const u=window.setTimeout(()=>l("hidden"),a.scrollHideDelay);return()=>window.clearTimeout(u)}},[s,a.scrollHideDelay]),E.useEffect(()=>{const{viewport:u}=a,d=i?"scrollLeft":"scrollTop";if(u){let h=u[d];const f=()=>{const g=u[d];h!==g&&(l("scrolling"),c()),h=g};return u.addEventListener("scroll",f),()=>u.removeEventListener("scroll",f)}},[a.viewport,i,c]),n||s!=="hidden"?y.jsx(vk,{"data-state":s==="hidden"?"hidden":"visible",...o,ref:r,onPointerEnter:ih(e.onPointerEnter,()=>l("interacting")),onPointerLeave:ih(e.onPointerLeave,()=>l("idle"))}):null}),PN=E.forwardRef((e,r)=>{const{forceMount:n,...o}=e,a=Pi(),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:s}=a,l=e.orientation==="horizontal";return E.useEffect(()=>(l?i(!0):s(!0),()=>{l?i(!1):s(!1)}),[l,i,s]),a.type==="hover"?y.jsx(Sae,{...o,ref:r,forceMount:n}):a.type==="scroll"?y.jsx(Gst,{...o,ref:r,forceMount:n}):a.type==="auto"?y.jsx(MN,{...o,ref:r,forceMount:n}):a.type==="always"?y.jsx(vk,{...o,ref:r}):null});PN.displayName="@mantine/core/ScrollAreaScrollbar";function Xst(e,r=()=>{}){let n={left:e.scrollLeft,top:e.scrollTop},o=0;return(function a(){const i={left:e.scrollLeft,top:e.scrollTop},s=n.left!==i.left,l=n.top!==i.top;(s||l)&&r(),n=i,o=window.requestAnimationFrame(a)})(),()=>window.cancelAnimationFrame(o)}const Cae=E.forwardRef((e,r)=>{const{style:n,...o}=e,a=Pi(),i=wae(),{onThumbPositionChange:s}=i,l=yn(r,d=>i.onThumbChange(d)),c=E.useRef(void 0),u=Z4(()=>{c.current&&(c.current(),c.current=void 0)},100);return E.useEffect(()=>{const{viewport:d}=a;if(d){const h=()=>{if(u(),!c.current){const f=Xst(d,s);c.current=f,s()}};return s(),d.addEventListener("scroll",h),()=>d.removeEventListener("scroll",h)}},[a.viewport,u,s]),y.jsx("div",{"data-state":i.hasThumb?"visible":"hidden",...o,ref:l,style:{width:"var(--sa-thumb-width)",height:"var(--sa-thumb-height)",...n},onPointerDownCapture:ih(e.onPointerDownCapture,d=>{const h=d.target.getBoundingClientRect(),f=d.clientX-h.left,g=d.clientY-h.top;i.onThumbPointerDown({x:f,y:g})}),onPointerUp:ih(e.onPointerUp,i.onThumbPointerUp)})});Cae.displayName="@mantine/core/ScrollAreaThumb";const zN=E.forwardRef((e,r)=>{const{forceMount:n,...o}=e,a=wae();return n||a.hasThumb?y.jsx(Cae,{ref:r,...o}):null});zN.displayName="@mantine/core/ScrollAreaThumb";const Tae=E.forwardRef(({children:e,style:r,...n},o)=>{const a=Pi(),i=yn(o,a.onViewportChange);return y.jsx(Le,{...n,ref:i,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...r},children:y.jsx("div",{...a.getStyles("content"),ref:a.onContentChange,children:e})})});Tae.displayName="@mantine/core/ScrollAreaViewport";var IN={root:"m_d57069b5",content:"m_b1336c6",viewport:"m_c0783ff9",viewportInner:"m_f8f631dd",scrollbar:"m_c44ba933",thumb:"m_d8b5e363",corner:"m_21657268"};const Aae={scrollHideDelay:1e3,type:"hover",scrollbars:"xy"},Kst=(e,{scrollbarSize:r,overscrollBehavior:n})=>({root:{"--scrollarea-scrollbar-size":qe(r),"--scrollarea-over-scroll-behavior":n}}),sh=Je((e,r)=>{const n=ze("ScrollArea",Aae,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,scrollbarSize:c,vars:u,type:d,scrollHideDelay:h,viewportProps:f,viewportRef:g,onScrollPositionChange:b,children:x,offsetScrollbars:w,scrollbars:k,onBottomReached:C,onTopReached:_,overscrollBehavior:T,attributes:A,...R}=n,[D,N]=E.useState(!1),[M,O]=E.useState(!1),[F,L]=E.useState(!1),U=vt({name:"ScrollArea",props:n,classes:IN,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:A,vars:u,varsResolver:Kst}),P=E.useRef(null),V=iae([g,P]);return E.useEffect(()=>{if(!P.current||w!=="present")return;const I=P.current,H=new ResizeObserver(()=>{const{scrollHeight:q,clientHeight:Z,scrollWidth:W,clientWidth:G}=I;O(q>Z),L(W>G)});return H.observe(I),()=>H.disconnect()},[P,w]),y.jsxs(gae,{getStyles:U,type:d==="never"?"always":d,scrollHideDelay:h,ref:r,scrollbars:k,...U("root"),...R,children:[y.jsx(Tae,{...f,...U("viewport",{style:f?.style}),ref:V,"data-offset-scrollbars":w===!0?"xy":w||void 0,"data-scrollbars":k||void 0,"data-horizontal-hidden":w==="present"&&!F?"true":void 0,"data-vertical-hidden":w==="present"&&!M?"true":void 0,onScroll:I=>{f?.onScroll?.(I),b?.({x:I.currentTarget.scrollLeft,y:I.currentTarget.scrollTop});const{scrollTop:H,scrollHeight:q,clientHeight:Z}=I.currentTarget;H-(q-Z)>=-.6&&C?.(),H===0&&_?.()},children:x}),(k==="xy"||k==="x")&&y.jsx(PN,{...U("scrollbar"),orientation:"horizontal","data-hidden":d==="never"||w==="present"&&!F?!0:void 0,forceMount:!0,onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:y.jsx(zN,{...U("thumb")})}),(k==="xy"||k==="y")&&y.jsx(PN,{...U("scrollbar"),orientation:"vertical","data-hidden":d==="never"||w==="present"&&!M?!0:void 0,forceMount:!0,onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:y.jsx(zN,{...U("thumb")})}),y.jsx(Vst,{...U("corner"),"data-hovered":D||void 0,"data-hidden":d==="never"||void 0})]})});sh.displayName="@mantine/core/ScrollArea";const ON=Je((e,r)=>{const{children:n,classNames:o,styles:a,scrollbarSize:i,scrollHideDelay:s,type:l,dir:c,offsetScrollbars:u,viewportRef:d,onScrollPositionChange:h,unstyled:f,variant:g,viewportProps:b,scrollbars:x,style:w,vars:k,onBottomReached:C,onTopReached:_,onOverflowChange:T,...A}=ze("ScrollAreaAutosize",Aae,e),R=E.useRef(null),D=iae([d,R]),[N,M]=E.useState(!1),O=E.useRef(!1);return E.useEffect(()=>{if(!T)return;const F=R.current;if(!F)return;const L=()=>{const P=F.scrollHeight>F.clientHeight;P!==N&&(O.current?T?.(P):(O.current=!0,P&&T?.(!0)),M(P))};L();const U=new ResizeObserver(L);return U.observe(F),()=>U.disconnect()},[T,N]),y.jsx(Le,{...A,ref:r,style:[{display:"flex",overflow:"hidden"},w],children:y.jsx(Le,{style:{display:"flex",flexDirection:"column",flex:1,overflow:"hidden",...x==="y"&&{minWidth:0},...x==="x"&&{minHeight:0},...x==="xy"&&{minWidth:0,minHeight:0},...x===!1&&{minWidth:0,minHeight:0}},children:y.jsx(sh,{classNames:o,styles:a,scrollHideDelay:s,scrollbarSize:i,type:l,dir:c,offsetScrollbars:u,viewportRef:D,onScrollPositionChange:h,unstyled:f,variant:g,viewportProps:b,vars:k,scrollbars:x,onBottomReached:C,onTopReached:_,"data-autosize":"true",children:n})})})});sh.classes=IN,ON.displayName="@mantine/core/ScrollAreaAutosize",ON.classes=IN,sh.Autosize=ON;var Rae={root:"m_87cf2631"};const Zst={__staticSelector:"UnstyledButton"},Nl=Jn((e,r)=>{const n=ze("UnstyledButton",Zst,e),{className:o,component:a="button",__staticSelector:i,unstyled:s,classNames:l,styles:c,style:u,attributes:d,...h}=n,f=vt({name:i,props:n,classes:Rae,className:o,style:u,classNames:l,styles:c,unstyled:s,attributes:d});return y.jsx(Le,{...f("root",{focusable:!0}),component:a,ref:r,type:a==="button"?"button":void 0,...h})});Nl.classes=Rae,Nl.displayName="@mantine/core/UnstyledButton";var Nae={root:"m_515a97f8"};const jN=Je((e,r)=>{const n=ze("VisuallyHidden",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,attributes:u,...d}=n,h=vt({name:"VisuallyHidden",classes:Nae,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:u});return y.jsx(Le,{component:"span",ref:r,...h("root"),...d})});jN.classes=Nae,jN.displayName="@mantine/core/VisuallyHidden";var Dae={root:"m_1b7284a3"};const Qst=(e,{radius:r,shadow:n})=>({root:{"--paper-radius":r===void 0?void 0:Tn(r),"--paper-shadow":UR(n)}}),xk=Jn((e,r)=>{const n=ze("Paper",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,withBorder:c,vars:u,radius:d,shadow:h,variant:f,mod:g,attributes:b,...x}=n,w=vt({name:"Paper",props:n,classes:Dae,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:u,varsResolver:Qst});return y.jsx(Le,{ref:r,mod:[{"data-with-border":c},g],...w("root"),variant:f,...x})});xk.classes=Dae,xk.displayName="@mantine/core/Paper";function $ae(e,r,n,o){return e==="center"||o==="center"?{top:r}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function Mae(e,r,n,o,a){return e==="center"||o==="center"?{left:r}:e==="end"?{[a==="ltr"?"right":"left"]:n}:e==="start"?{[a==="ltr"?"left":"right"]:n}:{}}const Jst={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function elt({position:e,arrowSize:r,arrowOffset:n,arrowRadius:o,arrowPosition:a,arrowX:i,arrowY:s,dir:l}){const[c,u="center"]=e.split("-"),d={width:r,height:r,transform:"rotate(45deg)",position:"absolute",[Jst[c]]:o},h=-r/2;return c==="left"?{...d,...$ae(u,s,n,a),right:h,borderLeftColor:"transparent",borderBottomColor:"transparent",clipPath:"polygon(100% 0, 0 0, 100% 100%)"}:c==="right"?{...d,...$ae(u,s,n,a),left:h,borderRightColor:"transparent",borderTopColor:"transparent",clipPath:"polygon(0 100%, 0 0, 100% 100%)"}:c==="top"?{...d,...Mae(u,i,n,a,l),bottom:h,borderTopColor:"transparent",borderLeftColor:"transparent",clipPath:"polygon(0 100%, 100% 100%, 100% 0)"}:c==="bottom"?{...d,...Mae(u,i,n,a,l),top:h,borderBottomColor:"transparent",borderRightColor:"transparent",clipPath:"polygon(0 100%, 0 0, 100% 0)"}:{}}const wk=E.forwardRef(({position:e,arrowSize:r,arrowOffset:n,arrowRadius:o,arrowPosition:a,visible:i,arrowX:s,arrowY:l,style:c,...u},d)=>{const{dir:h}=Rc();return i?y.jsx("div",{...u,ref:d,style:{...c,...elt({position:e,arrowSize:r,arrowOffset:n,arrowRadius:o,arrowPosition:a,dir:h,arrowX:s,arrowY:l})}}):null});wk.displayName="@mantine/core/FloatingArrow";function Pae(e,r){if(e==="rtl"&&(r.includes("right")||r.includes("left"))){const[n,o]=r.split("-"),a=n==="right"?"left":"right";return o===void 0?a:`${a}-${o}`}return r}var zae={root:"m_9814e45f"};const tlt={zIndex:$s("modal")},rlt=(e,{gradient:r,color:n,backgroundOpacity:o,blur:a,radius:i,zIndex:s})=>({root:{"--overlay-bg":r||(n!==void 0||o!==void 0)&&woe(n||"#000",o??.6)||void 0,"--overlay-filter":a?`blur(${qe(a)})`:void 0,"--overlay-radius":i===void 0?void 0:Tn(i),"--overlay-z-index":s?.toString()}}),fg=Jn((e,r)=>{const n=ze("Overlay",tlt,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,fixed:u,center:d,children:h,radius:f,zIndex:g,gradient:b,blur:x,color:w,backgroundOpacity:k,mod:C,attributes:_,...T}=n,A=vt({name:"Overlay",props:n,classes:zae,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:_,vars:c,varsResolver:rlt});return y.jsx(Le,{ref:r,...A("root"),mod:[{center:d,fixed:u},C],...T,children:h})});fg.classes=zae,fg.displayName="@mantine/core/Overlay";function LN(e){const r=document.createElement("div");return r.setAttribute("data-portal","true"),typeof e.className=="string"&&r.classList.add(...e.className.split(" ").filter(Boolean)),typeof e.style=="object"&&Object.assign(r.style,e.style),typeof e.id=="string"&&r.setAttribute("id",e.id),r}function nlt({target:e,reuseTargetNode:r,...n}){if(e)return typeof e=="string"?document.querySelector(e)||LN(n):e;if(r){const o=document.querySelector("[data-mantine-shared-portal-node]");if(o)return o;const a=LN(n);return a.setAttribute("data-mantine-shared-portal-node","true"),document.body.appendChild(a),a}return LN(n)}const olt={reuseTargetNode:!0},Iae=Je((e,r)=>{const{children:n,target:o,reuseTargetNode:a,...i}=ze("Portal",olt,e),[s,l]=E.useState(!1),c=E.useRef(null);return GR(()=>(l(!0),c.current=nlt({target:o,reuseTargetNode:a,...i}),KR(r,c.current),!o&&!a&&c.current&&document.body.appendChild(c.current),()=>{!o&&!a&&c.current&&document.body.removeChild(c.current)}),[o]),!s||!c.current?null:Ki.createPortal(y.jsx(y.Fragment,{children:n}),c.current)});Iae.displayName="@mantine/core/Portal";const lh=Je(({withinPortal:e=!0,children:r,...n},o)=>tk()==="test"||!e?y.jsx(y.Fragment,{children:r}):y.jsx(Iae,{ref:o,...n,children:r}));lh.displayName="@mantine/core/OptionalPortal";const db=e=>({in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${e==="bottom"?10:-10}px)`},transitionProperty:"transform, opacity"}),kk={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},"fade-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(30px)"},transitionProperty:"opacity, transform"},"fade-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-30px)"},transitionProperty:"opacity, transform"},"fade-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(30px)"},transitionProperty:"opacity, transform"},"fade-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-30px)"},transitionProperty:"opacity, transform"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:"translateY(-20px) skew(-10deg, -5deg)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:"translateY(20px) skew(-10deg, -5deg)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:"translateY(20px) rotate(-5deg)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:"translateY(20px) rotate(5deg)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:{...db("bottom"),common:{transformOrigin:"center center"}},"pop-bottom-left":{...db("bottom"),common:{transformOrigin:"bottom left"}},"pop-bottom-right":{...db("bottom"),common:{transformOrigin:"bottom right"}},"pop-top-left":{...db("top"),common:{transformOrigin:"top left"}},"pop-top-right":{...db("top"),common:{transformOrigin:"top right"}}},Oae={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function alt({transition:e,state:r,duration:n,timingFunction:o}){const a={WebkitBackfaceVisibility:"hidden",transitionDuration:`${n}ms`,transitionTimingFunction:o};return typeof e=="string"?e in kk?{transitionProperty:kk[e].transitionProperty,...a,...kk[e].common,...kk[e][Oae[r]]}:{}:{transitionProperty:e.transitionProperty,...a,...e.common,...e[Oae[r]]}}function ilt({duration:e,exitDuration:r,timingFunction:n,mounted:o,onEnter:a,onExit:i,onEntered:s,onExited:l,enterDelay:c,exitDelay:u}){const d=_o(),h=ZR(),f=d.respectReducedMotion?h:!1,[g,b]=E.useState(f?0:e),[x,w]=E.useState(o?"entered":"exited"),k=E.useRef(-1),C=E.useRef(-1),_=E.useRef(-1);function T(){window.clearTimeout(k.current),window.clearTimeout(C.current),cancelAnimationFrame(_.current)}const A=D=>{T();const N=D?a:i,M=D?s:l,O=f?0:D?e:r;b(O),O===0?(typeof N=="function"&&N(),typeof M=="function"&&M(),w(D?"entered":"exited")):_.current=requestAnimationFrame(()=>{Zz.flushSync(()=>{w(D?"pre-entering":"pre-exiting")}),_.current=requestAnimationFrame(()=>{typeof N=="function"&&N(),w(D?"entering":"exiting"),k.current=window.setTimeout(()=>{typeof M=="function"&&M(),w(D?"entered":"exited")},O)})})},R=D=>{if(T(),typeof(D?c:u)!="number"){A(D);return}C.current=window.setTimeout(()=>{A(D)},D?c:u)};return th(()=>{R(o)},[o]),E.useEffect(()=>()=>{T()},[]),{transitionDuration:g,transitionStatus:x,transitionTimingFunction:n||"ease"}}function js({keepMounted:e,transition:r="fade",duration:n=250,exitDuration:o=n,mounted:a,children:i,timingFunction:s="ease",onExit:l,onEntered:c,onEnter:u,onExited:d,enterDelay:h,exitDelay:f}){const g=tk(),{transitionDuration:b,transitionStatus:x,transitionTimingFunction:w}=ilt({mounted:a,exitDuration:o,duration:n,timingFunction:s,onExit:l,onEntered:c,onEnter:u,onExited:d,enterDelay:h,exitDelay:f});return b===0||g==="test"?a?y.jsx(y.Fragment,{children:i({})}):e?i({display:"none"}):null:x==="exited"?e?i({display:"none"}):null:y.jsx(y.Fragment,{children:i(alt({transition:r,duration:b,state:x,timingFunction:w}))})}js.displayName="@mantine/core/Transition";const[slt,jae]=qa("Popover component was not found in the tree");function _k({children:e,active:r=!0,refProp:n="ref",innerRef:o}){const a=Mot(r),i=yn(a,o);return Ds(e)?E.cloneElement(e,{[n]:i}):e}function Lae(e){return y.jsx(jN,{tabIndex:-1,"data-autofocus":!0,...e})}_k.displayName="@mantine/core/FocusTrap",Lae.displayName="@mantine/core/FocusTrapInitialFocus",_k.InitialFocus=Lae;var Bae={dropdown:"m_38a85659",arrow:"m_a31dc6c1",overlay:"m_3d7bc908"};const BN=Je((e,r)=>{const n=ze("PopoverDropdown",null,e),{className:o,style:a,vars:i,children:s,onKeyDownCapture:l,variant:c,classNames:u,styles:d,...h}=n,f=jae(),g=poe({opened:f.opened,shouldReturnFocus:f.returnFocus}),b=f.withRoles?{"aria-labelledby":f.getTargetId(),id:f.getDropdownId(),role:"dialog",tabIndex:-1}:{},x=yn(r,f.floating);return f.disabled?null:y.jsx(lh,{...f.portalProps,withinPortal:f.withinPortal,children:y.jsx(js,{mounted:f.opened,...f.transitionProps,transition:f.transitionProps?.transition||"fade",duration:f.transitionProps?.duration??150,keepMounted:f.keepMounted,exitDuration:typeof f.transitionProps?.exitDuration=="number"?f.transitionProps.exitDuration:f.transitionProps?.duration,children:w=>y.jsx(_k,{active:f.trapFocus&&f.opened,innerRef:x,children:y.jsxs(Le,{...b,...h,variant:c,onKeyDownCapture:xot(()=>{f.onClose?.(),f.onDismiss?.()},{active:f.closeOnEscape,onTrigger:g,onKeyDown:l}),"data-position":f.placement,"data-fixed":f.floatingStrategy==="fixed"||void 0,...f.getStyles("dropdown",{className:o,props:n,classNames:u,styles:d,style:[{...w,zIndex:f.zIndex,top:f.y??0,left:f.x??0,width:f.width==="target"?void 0:qe(f.width),...f.referenceHidden?{display:"none"}:null},f.resolvedStyles.dropdown,d?.dropdown,a]}),children:[s,y.jsx(wk,{ref:f.arrowRef,arrowX:f.arrowX,arrowY:f.arrowY,visible:f.withArrow,position:f.placement,arrowSize:f.arrowSize,arrowRadius:f.arrowRadius,arrowOffset:f.arrowOffset,arrowPosition:f.arrowPosition,...f.getStyles("arrow",{props:n,classNames:u,styles:d})})]})})})})});BN.classes=Bae,BN.displayName="@mantine/core/PopoverDropdown";const llt={refProp:"ref",popupType:"dialog"},Fae=Je((e,r)=>{const{children:n,refProp:o,popupType:a,...i}=ze("PopoverTarget",llt,e);if(!Ds(n))throw new Error("Popover.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const s=i,l=jae(),c=yn(l.reference,Q4(n),r),u=l.withRoles?{"aria-haspopup":a,"aria-expanded":l.opened,"aria-controls":l.getDropdownId(),id:l.getTargetId()}:{};return E.cloneElement(n,{...s,...u,...l.targetProps,className:ho(l.targetProps.className,s.className,n.props.className),[o]:c,...l.controlled?null:{onClick:()=>{l.onToggle(),n.props.onClick?.()}}})});Fae.displayName="@mantine/core/PopoverTarget";function clt(e){if(e===void 0)return{shift:!0,flip:!0};const r={...e};return e.shift===void 0&&(r.shift=!0),e.flip===void 0&&(r.flip=!0),r}function ult(e,r,n){const o=clt(e.middlewares),a=[nae(e.offset),wst()];return e.dropdownVisible&&n!=="test"&&e.preventPositionChangeWhenVisible&&(o.flip=!1),o.shift&&a.push(EN(typeof o.shift=="boolean"?{limiter:oae(),padding:5}:{limiter:oae(),padding:5,...o.shift})),o.flip&&a.push(typeof o.flip=="boolean"?gk():gk(o.flip)),o.inline&&a.push(typeof o.inline=="boolean"?ub():ub(o.inline)),a.push(aae({element:e.arrowRef,padding:e.arrowOffset})),(o.size||e.width==="target")&&a.push(xst({...typeof o.size=="boolean"?{}:o.size,apply({rects:i,availableWidth:s,availableHeight:l,...c}){const u=r().refs.floating.current?.style??{};o.size&&(typeof o.size=="object"&&o.size.apply?o.size.apply({rects:i,availableWidth:s,availableHeight:l,...c}):Object.assign(u,{maxWidth:`${s}px`,maxHeight:`${l}px`})),e.width==="target"&&Object.assign(u,{width:`${i.reference.width}px`})}})),a}function dlt(e){const r=tk(),[n,o]=Qu({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),a=E.useRef(n),i=()=>{n&&!e.disabled&&o(!1)},s=()=>{e.disabled||o(!n)},l=NN({strategy:e.strategy,placement:e.preventPositionChangeWhenVisible?e.positionRef.current:e.position,middleware:ult(e,()=>l,r),whileElementsMounted:e.keepMounted?void 0:kN});return E.useEffect(()=>{if(!(!l.refs.reference.current||!l.refs.floating.current)&&n)return kN(l.refs.reference.current,l.refs.floating.current,l.update)},[n,l.update]),th(()=>{e.onPositionChange?.(l.placement),e.positionRef.current=l.placement},[l.placement,e.preventPositionChangeWhenVisible]),th(()=>{n!==a.current&&(n?e.onOpen?.():e.onClose?.()),a.current=n},[n,e.onClose,e.onOpen]),th(()=>{let c=-1;return n&&(c=window.setTimeout(()=>e.setDropdownVisible(!0),4)),()=>{window.clearTimeout(c)}},[n,e.position]),{floating:l,controlled:typeof e.opened=="boolean",opened:n,onClose:i,onToggle:s}}const plt={position:"bottom",offset:8,positionDependencies:[],transitionProps:{transition:"fade",duration:150},middlewares:{flip:!0,shift:!0,inline:!1},arrowSize:7,arrowOffset:5,arrowRadius:0,arrowPosition:"side",closeOnClickOutside:!0,withinPortal:!0,closeOnEscape:!0,trapFocus:!1,withRoles:!0,returnFocus:!1,withOverlay:!1,hideDetached:!0,clickOutsideEvents:["mousedown","touchstart"],zIndex:$s("popover"),__staticSelector:"Popover",width:"max-content"},hlt=(e,{radius:r,shadow:n})=>({dropdown:{"--popover-radius":r===void 0?void 0:Tn(r),"--popover-shadow":UR(n)}});function Eo(e){const r=ze("Popover",plt,e),{children:n,position:o,offset:a,onPositionChange:i,positionDependencies:s,opened:l,transitionProps:c,onExitTransitionEnd:u,onEnterTransitionEnd:d,width:h,middlewares:f,withArrow:g,arrowSize:b,arrowOffset:x,arrowRadius:w,arrowPosition:k,unstyled:C,classNames:_,styles:T,closeOnClickOutside:A,withinPortal:R,portalProps:D,closeOnEscape:N,clickOutsideEvents:M,trapFocus:O,onClose:F,onDismiss:L,onOpen:U,onChange:P,zIndex:V,radius:I,shadow:H,id:q,defaultOpened:Z,__staticSelector:W,withRoles:G,disabled:K,returnFocus:j,variant:Y,keepMounted:Q,vars:J,floatingStrategy:ie,withOverlay:ne,overlayProps:re,hideDetached:ge,attributes:De,preventPositionChangeWhenVisible:he,...me}=r,Te=vt({name:W,props:r,classes:Bae,classNames:_,styles:T,unstyled:C,attributes:De,rootSelector:"dropdown",vars:J,varsResolver:hlt}),{resolvedStyles:Ie}=eN({classNames:_,styles:T,props:r}),[Ze,rt]=E.useState(l??Z??!1),Rt=E.useRef(o),Qe=E.useRef(null),[Pt,Ke]=E.useState(null),[Ge,ct]=E.useState(null),{dir:ut}=Rc(),Ir=tk(),Ee=Ps(q),Se=dlt({middlewares:f,width:h,position:Pae(ut,o),offset:typeof a=="number"?a+(g?b/2:0):a,arrowRef:Qe,arrowOffset:x,onPositionChange:i,positionDependencies:s,opened:l,defaultOpened:Z,onChange:P,onOpen:U,onClose:F,onDismiss:L,strategy:ie,dropdownVisible:Ze,setDropdownVisible:rt,positionRef:Rt,disabled:K,preventPositionChangeWhenVisible:he,keepMounted:Q});doe(()=>{A&&(Se.onClose(),L?.())},M,[Pt,Ge]);const it=E.useCallback(It=>{Ke(It),Se.floating.refs.setReference(It)},[Se.floating.refs.setReference]),xt=E.useCallback(It=>{ct(It),Se.floating.refs.setFloating(It)},[Se.floating.refs.setFloating]),zt=E.useCallback(()=>{c?.onExited?.(),u?.(),rt(!1),he||(Rt.current=o)},[c?.onExited,u,he,o]),Fr=E.useCallback(()=>{c?.onEntered?.(),d?.()},[c?.onEntered,d]);return y.jsxs(slt,{value:{returnFocus:j,disabled:K,controlled:Se.controlled,reference:it,floating:xt,x:Se.floating.x,y:Se.floating.y,arrowX:Se.floating?.middlewareData?.arrow?.x,arrowY:Se.floating?.middlewareData?.arrow?.y,opened:Se.opened,arrowRef:Qe,transitionProps:{...c,onExited:zt,onEntered:Fr},width:h,withArrow:g,arrowSize:b,arrowOffset:x,arrowRadius:w,arrowPosition:k,placement:Se.floating.placement,trapFocus:O,withinPortal:R,portalProps:D,zIndex:V,radius:I,shadow:H,closeOnEscape:N,onDismiss:L,onClose:Se.onClose,onToggle:Se.onToggle,getTargetId:()=>`${Ee}-target`,getDropdownId:()=>`${Ee}-dropdown`,withRoles:G,targetProps:me,__staticSelector:W,classNames:_,styles:T,unstyled:C,variant:Y,keepMounted:Q,getStyles:Te,resolvedStyles:Ie,floatingStrategy:ie,referenceHidden:ge&&Ir!=="test"?Se.floating.middlewareData.hide?.referenceHidden:!1},children:[n,ne&&y.jsx(js,{transition:"fade",mounted:Se.opened,duration:c?.duration||250,exitDuration:c?.exitDuration||250,children:It=>y.jsx(lh,{withinPortal:R,children:y.jsx(fg,{...re,...Te("overlay",{className:re?.className,style:[It,re?.style]})})})})]})}Eo.Target=Fae,Eo.Dropdown=BN,Eo.displayName="@mantine/core/Popover",Eo.extend=e=>e;var Ls={root:"m_5ae2e3c",barsLoader:"m_7a2bd4cd",bar:"m_870bb79","bars-loader-animation":"m_5d2b3b9d",dotsLoader:"m_4e3f22d7",dot:"m_870c4af","loader-dots-animation":"m_aac34a1",ovalLoader:"m_b34414df","oval-loader-animation":"m_f8e89c4b"};const Hae=E.forwardRef(({className:e,...r},n)=>y.jsxs(Le,{component:"span",className:ho(Ls.barsLoader,e),...r,ref:n,children:[y.jsx("span",{className:Ls.bar}),y.jsx("span",{className:Ls.bar}),y.jsx("span",{className:Ls.bar})]}));Hae.displayName="@mantine/core/Bars";const Vae=E.forwardRef(({className:e,...r},n)=>y.jsxs(Le,{component:"span",className:ho(Ls.dotsLoader,e),...r,ref:n,children:[y.jsx("span",{className:Ls.dot}),y.jsx("span",{className:Ls.dot}),y.jsx("span",{className:Ls.dot})]}));Vae.displayName="@mantine/core/Dots";const qae=E.forwardRef(({className:e,...r},n)=>y.jsx(Le,{component:"span",className:ho(Ls.ovalLoader,e),...r,ref:n}));qae.displayName="@mantine/core/Oval";const Uae={bars:Hae,oval:qae,dots:Vae},flt={loaders:Uae,type:"oval"},mlt=(e,{size:r,color:n})=>({root:{"--loader-size":ur(r,"loader-size"),"--loader-color":n?Jo(n,e):void 0}}),ch=Je((e,r)=>{const n=ze("Loader",flt,e),{size:o,color:a,type:i,vars:s,className:l,style:c,classNames:u,styles:d,unstyled:h,loaders:f,variant:g,children:b,attributes:x,...w}=n,k=vt({name:"Loader",props:n,classes:Ls,className:l,style:c,classNames:u,styles:d,unstyled:h,attributes:x,vars:s,varsResolver:mlt});return b?y.jsx(Le,{...k("root"),ref:r,...w,children:b}):y.jsx(Le,{...k("root"),ref:r,component:f[i],variant:g,size:o,...w})});ch.defaultLoaders=Uae,ch.classes=Ls,ch.displayName="@mantine/core/Loader";var mg={root:"m_8d3f4000",icon:"m_8d3afb97",loader:"m_302b9fb1",group:"m_1a0f1b21",groupSection:"m_437b6484"};const Wae={orientation:"horizontal"},glt=(e,{borderWidth:r})=>({group:{"--ai-border-width":qe(r)}}),FN=Je((e,r)=>{const n=ze("ActionIconGroup",Wae,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,orientation:c,vars:u,borderWidth:d,variant:h,mod:f,attributes:g,...b}=ze("ActionIconGroup",Wae,e),x=vt({name:"ActionIconGroup",props:n,classes:mg,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:u,varsResolver:glt,rootSelector:"group"});return y.jsx(Le,{...x("group"),ref:r,variant:h,mod:[{"data-orientation":c},f],role:"group",...b})});FN.classes=mg,FN.displayName="@mantine/core/ActionIconGroup";const ylt=(e,{radius:r,color:n,gradient:o,variant:a,autoContrast:i,size:s})=>{const l=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:i});return{groupSection:{"--section-height":ur(s,"section-height"),"--section-padding-x":ur(s,"section-padding-x"),"--section-fz":Fo(s),"--section-radius":r===void 0?void 0:Tn(r),"--section-bg":n||a?l.background:void 0,"--section-color":l.color,"--section-bd":n||a?l.border:void 0}}},HN=Je((e,r)=>{const n=ze("ActionIconGroupSection",null,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,vars:c,variant:u,gradient:d,radius:h,autoContrast:f,attributes:g,...b}=n,x=vt({name:"ActionIconGroupSection",props:n,classes:mg,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:ylt,rootSelector:"groupSection"});return y.jsx(Le,{...x("groupSection"),ref:r,variant:u,...b})});HN.classes=mg,HN.displayName="@mantine/core/ActionIconGroupSection";const blt=(e,{size:r,radius:n,variant:o,gradient:a,color:i,autoContrast:s})=>{const l=e.variantColorResolver({color:i||e.primaryColor,theme:e,gradient:a,variant:o||"filled",autoContrast:s});return{root:{"--ai-size":ur(r,"ai-size"),"--ai-radius":n===void 0?void 0:Tn(n),"--ai-bg":i||o?l.background:void 0,"--ai-hover":i||o?l.hover:void 0,"--ai-hover-color":i||o?l.hoverColor:void 0,"--ai-color":l.color,"--ai-bd":i||o?l.border:void 0}}},Ek=Jn((e,r)=>{const n=ze("ActionIcon",null,e),{className:o,unstyled:a,variant:i,classNames:s,styles:l,style:c,loading:u,loaderProps:d,size:h,color:f,radius:g,__staticSelector:b,gradient:x,vars:w,children:k,disabled:C,"data-disabled":_,autoContrast:T,mod:A,attributes:R,...D}=n,N=vt({name:["ActionIcon",b],props:n,className:o,style:c,classes:mg,classNames:s,styles:l,unstyled:a,attributes:R,vars:w,varsResolver:blt});return y.jsxs(Nl,{...N("root",{active:!C&&!u&&!_}),...D,unstyled:a,variant:i,size:h,disabled:C||u,ref:r,mod:[{loading:u,disabled:C||_},A],children:[typeof u=="boolean"&&y.jsx(js,{mounted:u,transition:"slide-down",duration:150,children:M=>y.jsx(Le,{component:"span",...N("loader",{style:M}),"aria-hidden":!0,children:y.jsx(ch,{color:"var(--ai-color)",size:"calc(var(--ai-size) * 0.55)",...d})})}),y.jsx(Le,{component:"span",mod:{loading:u},...N("icon"),children:k})]})});Ek.classes=mg,Ek.displayName="@mantine/core/ActionIcon",Ek.Group=FN,Ek.GroupSection=HN;const Yae=E.forwardRef(({size:e="var(--cb-icon-size, 70%)",style:r,...n},o)=>y.jsx("svg",{viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{...r,width:e,height:e},ref:o,...n,children:y.jsx("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})}));Yae.displayName="@mantine/core/CloseIcon";var Gae={root:"m_86a44da5","root--subtle":"m_220c80f2"};const vlt={variant:"subtle"},xlt=(e,{size:r,radius:n,iconSize:o})=>({root:{"--cb-size":ur(r,"cb-size"),"--cb-radius":n===void 0?void 0:Tn(n),"--cb-icon-size":qe(o)}}),uh=Jn((e,r)=>{const n=ze("CloseButton",vlt,e),{iconSize:o,children:a,vars:i,radius:s,className:l,classNames:c,style:u,styles:d,unstyled:h,"data-disabled":f,disabled:g,variant:b,icon:x,mod:w,attributes:k,__staticSelector:C,..._}=n,T=vt({name:C||"CloseButton",props:n,className:l,style:u,classes:Gae,classNames:c,styles:d,unstyled:h,attributes:k,vars:i,varsResolver:xlt});return y.jsxs(Nl,{ref:r,..._,unstyled:h,variant:b,disabled:g,mod:[{disabled:g||f},w],...T("root",{variant:b,active:!g&&!f}),children:[x||y.jsx(Yae,{}),a]})});uh.classes=Gae,uh.displayName="@mantine/core/CloseButton";function wlt(e){return E.Children.toArray(e).filter(Boolean)}var Xae={root:"m_4081bf90"};const klt={preventGrowOverflow:!0,gap:"md",align:"center",justify:"flex-start",wrap:"wrap"},_lt=(e,{grow:r,preventGrowOverflow:n,gap:o,align:a,justify:i,wrap:s},{childWidth:l})=>({root:{"--group-child-width":r&&n?l:void 0,"--group-gap":po(o),"--group-align":a,"--group-justify":i,"--group-wrap":s}}),Kae=Je((e,r)=>{const n=ze("Group",klt,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,children:c,gap:u,align:d,justify:h,wrap:f,grow:g,preventGrowOverflow:b,vars:x,variant:w,__size:k,mod:C,attributes:_,...T}=n,A=wlt(c),R=A.length,D=po(u??"md"),N={childWidth:`calc(${100/R}% - (${D} - ${D} / ${R}))`},M=vt({name:"Group",props:n,stylesCtx:N,className:a,style:i,classes:Xae,classNames:o,styles:s,unstyled:l,attributes:_,vars:x,varsResolver:_lt});return y.jsx(Le,{...M("root"),ref:r,variant:w,mod:[{grow:g},C],size:k,...T,children:A})});Kae.classes=Xae,Kae.displayName="@mantine/core/Group";const[Elt,Mc]=qa("ModalBase component was not found in tree");function Slt({opened:e,transitionDuration:r}){const[n,o]=E.useState(e),a=E.useRef(-1),i=ZR()?0:r;return E.useEffect(()=>(e?(o(!0),window.clearTimeout(a.current)):i===0?o(!1):a.current=window.setTimeout(()=>o(!1),i),()=>window.clearTimeout(a.current)),[e,i]),n}function Clt({id:e,transitionProps:r,opened:n,trapFocus:o,closeOnEscape:a,onClose:i,returnFocus:s}){const l=Ps(e),[c,u]=E.useState(!1),[d,h]=E.useState(!1),f=typeof r?.duration=="number"?r?.duration:200,g=Slt({opened:n,transitionDuration:f});return Iot("keydown",b=>{b.key==="Escape"&&a&&!b.isComposing&&n&&b.target?.getAttribute("data-mantine-stop-propagation")!=="true"&&i()},{capture:!0}),poe({opened:n,shouldReturnFocus:o&&s}),{_id:l,titleMounted:c,bodyMounted:d,shouldLockScroll:g,setTitleMounted:u,setBodyMounted:h}}const VN=E.forwardRef(({keepMounted:e,opened:r,onClose:n,id:o,transitionProps:a,onExitTransitionEnd:i,onEnterTransitionEnd:s,trapFocus:l,closeOnEscape:c,returnFocus:u,closeOnClickOutside:d,withinPortal:h,portalProps:f,lockScroll:g,children:b,zIndex:x,shadow:w,padding:k,__vars:C,unstyled:_,removeScrollProps:T,...A},R)=>{const{_id:D,titleMounted:N,bodyMounted:M,shouldLockScroll:O,setTitleMounted:F,setBodyMounted:L}=Clt({id:o,transitionProps:a,opened:r,trapFocus:l,closeOnEscape:c,onClose:n,returnFocus:u}),{key:U,...P}=T||{};return y.jsx(lh,{...f,withinPortal:h,children:y.jsx(Elt,{value:{opened:r,onClose:n,closeOnClickOutside:d,onExitTransitionEnd:i,onEnterTransitionEnd:s,transitionProps:{...a,keepMounted:e},getTitleId:()=>`${D}-title`,getBodyId:()=>`${D}-body`,titleMounted:N,bodyMounted:M,setTitleMounted:F,setBodyMounted:L,trapFocus:l,closeOnEscape:c,zIndex:x,unstyled:_},children:y.jsx(ioe,{enabled:O&&g,...P,children:y.jsx(Le,{ref:R,...A,__vars:{...C,"--mb-z-index":(x||$s("modal")).toString(),"--mb-shadow":UR(w),"--mb-padding":po(k)},children:b})},U)})})});VN.displayName="@mantine/core/ModalBase";function Tlt(){const e=Mc();return E.useEffect(()=>(e.setBodyMounted(!0),()=>e.setBodyMounted(!1)),[]),e.getBodyId()}var gg={title:"m_615af6c9",header:"m_b5489c3c",inner:"m_60c222c7",content:"m_fd1ab0aa",close:"m_606cb269",body:"m_5df29311"};const qN=E.forwardRef(({className:e,...r},n)=>{const o=Tlt(),a=Mc();return y.jsx(Le,{ref:n,...r,id:o,className:ho({[gg.body]:!a.unstyled},e)})});qN.displayName="@mantine/core/ModalBaseBody";const Zae=E.forwardRef(({className:e,onClick:r,...n},o)=>{const a=Mc();return y.jsx(uh,{ref:o,...n,onClick:i=>{a.onClose(),r?.(i)},className:ho({[gg.close]:!a.unstyled},e),unstyled:a.unstyled})});Zae.displayName="@mantine/core/ModalBaseCloseButton";const UN=E.forwardRef(({transitionProps:e,className:r,innerProps:n,onKeyDown:o,style:a,...i},s)=>{const l=Mc();return y.jsx(js,{mounted:l.opened,transition:"pop",...l.transitionProps,onExited:()=>{l.onExitTransitionEnd?.(),l.transitionProps?.onExited?.()},onEntered:()=>{l.onEnterTransitionEnd?.(),l.transitionProps?.onEntered?.()},...e,children:c=>y.jsx("div",{...n,className:ho({[gg.inner]:!l.unstyled},n.className),children:y.jsx(_k,{active:l.opened&&l.trapFocus,innerRef:s,children:y.jsx(xk,{...i,component:"section",role:"dialog",tabIndex:-1,"aria-modal":!0,"aria-describedby":l.bodyMounted?l.getBodyId():void 0,"aria-labelledby":l.titleMounted?l.getTitleId():void 0,style:[a,c],className:ho({[gg.content]:!l.unstyled},r),unstyled:l.unstyled,children:i.children})})})})});UN.displayName="@mantine/core/ModalBaseContent";const Qae=E.forwardRef(({className:e,...r},n)=>{const o=Mc();return y.jsx(Le,{component:"header",ref:n,className:ho({[gg.header]:!o.unstyled},e),...r})});Qae.displayName="@mantine/core/ModalBaseHeader";const Alt={duration:200,timingFunction:"ease",transition:"fade"};function Rlt(e){const r=Mc();return{...Alt,...r.transitionProps,...e}}const WN=E.forwardRef(({onClick:e,transitionProps:r,style:n,visible:o,...a},i)=>{const s=Mc(),l=Rlt(r);return y.jsx(js,{mounted:o!==void 0?o:s.opened,...l,transition:"fade",children:c=>y.jsx(fg,{ref:i,fixed:!0,style:[n,c],zIndex:s.zIndex,unstyled:s.unstyled,onClick:u=>{e?.(u),s.closeOnClickOutside&&s.onClose()},...a})})});WN.displayName="@mantine/core/ModalBaseOverlay";function Nlt(){const e=Mc();return E.useEffect(()=>(e.setTitleMounted(!0),()=>e.setTitleMounted(!1)),[]),e.getTitleId()}const Jae=E.forwardRef(({className:e,...r},n)=>{const o=Nlt(),a=Mc();return y.jsx(Le,{component:"h2",ref:n,className:ho({[gg.title]:!a.unstyled},e),...r,id:o})});Jae.displayName="@mantine/core/ModalBaseTitle";function eie({children:e}){return y.jsx(y.Fragment,{children:e})}const[Dlt,$lt]=ng({size:"sm"}),tie=Je((e,r)=>{const n=ze("InputClearButton",null,e),{size:o,variant:a,vars:i,classNames:s,styles:l,...c}=n,u=$lt(),{resolvedClassNames:d,resolvedStyles:h}=eN({classNames:s,styles:l,props:n});return y.jsx(uh,{variant:a||"transparent",ref:r,size:o||u?.size||"sm",classNames:d,styles:h,__staticSelector:"InputClearButton",style:{pointerEvents:"all",background:"var(--input-bg)",...c.style},...c})});tie.displayName="@mantine/core/InputClearButton";const Mlt={xs:7,sm:8,md:10,lg:12,xl:15};function Plt({__clearable:e,__clearSection:r,rightSection:n,__defaultRightSection:o,size:a="sm"}){const i=e&&r;return i&&(n||o)?y.jsxs("div",{"data-combined-clear-section":!0,style:{display:"flex",gap:2,alignItems:"center",paddingInlineEnd:Mlt[a]},children:[i,n||o]}):n===null?null:n||i||o}const[zlt,Sk]=ng({offsetBottom:!1,offsetTop:!1,describedBy:void 0,getStyles:null,inputId:void 0,labelId:void 0});var zi={wrapper:"m_6c018570",input:"m_8fb7ebe7",section:"m_82577fc2",placeholder:"m_88bacfd0",root:"m_46b77525",label:"m_8fdc1311",required:"m_78a94662",error:"m_8f816625",description:"m_fe47ce59"};const Ilt=(e,{size:r})=>({description:{"--input-description-size":r===void 0?void 0:`calc(${Fo(r)} - ${qe(2)})`}}),Ck=Je((e,r)=>{const n=ze("InputDescription",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,__staticSelector:d,__inheritStyles:h=!0,attributes:f,variant:g,...b}=ze("InputDescription",null,n),x=Sk(),w=vt({name:["InputWrapper",d],props:n,classes:zi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:f,rootSelector:"description",vars:c,varsResolver:Ilt}),k=h&&x?.getStyles||w;return y.jsx(Le,{component:"p",ref:r,variant:g,size:u,...k("description",x?.getStyles?{className:a,style:i}:void 0),...b})});Ck.classes=zi,Ck.displayName="@mantine/core/InputDescription";const Olt=(e,{size:r})=>({error:{"--input-error-size":r===void 0?void 0:`calc(${Fo(r)} - ${qe(2)})`}}),Tk=Je((e,r)=>{const n=ze("InputError",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,attributes:d,__staticSelector:h,__inheritStyles:f=!0,variant:g,...b}=n,x=vt({name:["InputWrapper",h],props:n,classes:zi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:d,rootSelector:"error",vars:c,varsResolver:Olt}),w=Sk(),k=f&&w?.getStyles||x;return y.jsx(Le,{component:"p",ref:r,variant:g,size:u,...k("error",w?.getStyles?{className:a,style:i}:void 0),...b})});Tk.classes=zi,Tk.displayName="@mantine/core/InputError";const rie={labelElement:"label"},jlt=(e,{size:r})=>({label:{"--input-label-size":Fo(r),"--input-asterisk-color":void 0}}),Ak=Je((e,r)=>{const n=ze("InputLabel",rie,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,labelElement:u,size:d,required:h,htmlFor:f,onMouseDown:g,children:b,__staticSelector:x,variant:w,mod:k,attributes:C,..._}=ze("InputLabel",rie,n),T=vt({name:["InputWrapper",x],props:n,classes:zi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:C,rootSelector:"label",vars:c,varsResolver:jlt}),A=Sk(),R=A?.getStyles||T;return y.jsxs(Le,{...R("label",A?.getStyles?{className:a,style:i}:void 0),component:u,variant:w,size:d,ref:r,htmlFor:u==="label"?f:void 0,mod:[{required:h},k],onMouseDown:D=>{g?.(D),!D.defaultPrevented&&D.detail>1&&D.preventDefault()},..._,children:[b,h&&y.jsx("span",{...R("required"),"aria-hidden":!0,children:" *"})]})});Ak.classes=zi,Ak.displayName="@mantine/core/InputLabel";const YN=Je((e,r)=>{const n=ze("InputPlaceholder",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,__staticSelector:u,variant:d,error:h,mod:f,attributes:g,...b}=n,x=vt({name:["InputPlaceholder",u],props:n,classes:zi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,rootSelector:"placeholder"});return y.jsx(Le,{...x("placeholder"),mod:[{error:!!h},f],component:"span",variant:d,ref:r,...b})});YN.classes=zi,YN.displayName="@mantine/core/InputPlaceholder";function Llt(e,{hasDescription:r,hasError:n}){const o=e.findIndex(l=>l==="input"),a=e.slice(0,o),i=e.slice(o+1),s=r&&a.includes("description")||n&&a.includes("error");return{offsetBottom:r&&i.includes("description")||n&&i.includes("error"),offsetTop:s}}const Blt={labelElement:"label",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},Flt=(e,{size:r})=>({label:{"--input-label-size":Fo(r),"--input-asterisk-color":void 0},error:{"--input-error-size":r===void 0?void 0:`calc(${Fo(r)} - ${qe(2)})`},description:{"--input-description-size":r===void 0?void 0:`calc(${Fo(r)} - ${qe(2)})`}}),GN=Je((e,r)=>{const n=ze("InputWrapper",Blt,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,variant:d,__staticSelector:h,inputContainer:f,inputWrapperOrder:g,label:b,error:x,description:w,labelProps:k,descriptionProps:C,errorProps:_,labelElement:T,children:A,withAsterisk:R,id:D,required:N,__stylesApiProps:M,mod:O,attributes:F,...L}=n,U=vt({name:["InputWrapper",h],props:M||n,classes:zi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:F,vars:c,varsResolver:Flt}),P={size:u,variant:d,__staticSelector:h},V=Ps(D),I=typeof R=="boolean"?R:N,H=_?.id||`${V}-error`,q=C?.id||`${V}-description`,Z=V,W=!!x&&typeof x!="boolean",G=!!w,K=`${W?H:""} ${G?q:""}`,j=K.trim().length>0?K.trim():void 0,Y=k?.id||`${V}-label`,Q=b&&y.jsx(Ak,{labelElement:T,id:Y,htmlFor:Z,required:I,...P,...k,children:b},"label"),J=G&&y.jsx(Ck,{...C,...P,size:C?.size||P.size,id:C?.id||q,children:w},"description"),ie=y.jsx(E.Fragment,{children:f(A)},"input"),ne=W&&E.createElement(Tk,{..._,...P,size:_?.size||P.size,key:"error",id:_?.id||H},x),re=g.map(ge=>{switch(ge){case"label":return Q;case"input":return ie;case"description":return J;case"error":return ne;default:return null}});return y.jsx(zlt,{value:{getStyles:U,describedBy:j,inputId:Z,labelId:Y,...Llt(g,{hasDescription:G,hasError:W})},children:y.jsx(Le,{ref:r,variant:d,size:u,mod:[{error:!!x},O],...U("root"),...L,children:re})})});GN.classes=zi,GN.displayName="@mantine/core/InputWrapper";const Hlt={variant:"default",leftSectionPointerEvents:"none",rightSectionPointerEvents:"none",withAria:!0,withErrorStyles:!0,size:"sm"},Vlt=(e,r,n)=>({wrapper:{"--input-margin-top":n.offsetTop?"calc(var(--mantine-spacing-xs) / 2)":void 0,"--input-margin-bottom":n.offsetBottom?"calc(var(--mantine-spacing-xs) / 2)":void 0,"--input-height":ur(r.size,"input-height"),"--input-fz":Fo(r.size),"--input-radius":r.radius===void 0?void 0:Tn(r.radius),"--input-left-section-width":r.leftSectionWidth!==void 0?qe(r.leftSectionWidth):void 0,"--input-right-section-width":r.rightSectionWidth!==void 0?qe(r.rightSectionWidth):void 0,"--input-padding-y":r.multiline?ur(r.size,"input-padding-y"):void 0,"--input-left-section-pointer-events":r.leftSectionPointerEvents,"--input-right-section-pointer-events":r.rightSectionPointerEvents}}),ya=Jn((e,r)=>{const n=ze("Input",Hlt,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,required:c,__staticSelector:u,__stylesApiProps:d,size:h,wrapperProps:f,error:g,disabled:b,leftSection:x,leftSectionProps:w,leftSectionWidth:k,rightSection:C,rightSectionProps:_,rightSectionWidth:T,rightSectionPointerEvents:A,leftSectionPointerEvents:R,variant:D,vars:N,pointer:M,multiline:O,radius:F,id:L,withAria:U,withErrorStyles:P,mod:V,inputSize:I,attributes:H,__clearSection:q,__clearable:Z,__defaultRightSection:W,...G}=n,{styleProps:K,rest:j}=nN(G),Y=Sk(),Q={offsetBottom:Y?.offsetBottom,offsetTop:Y?.offsetTop},J=vt({name:["Input",u],props:d||n,classes:zi,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:H,stylesCtx:Q,rootSelector:"wrapper",vars:N,varsResolver:Vlt}),ie=U?{required:c,disabled:b,"aria-invalid":!!g,"aria-describedby":Y?.describedBy,id:Y?.inputId||L}:{},ne=Plt({__clearable:Z,__clearSection:q,rightSection:C,__defaultRightSection:W,size:h});return y.jsx(Dlt,{value:{size:h||"sm"},children:y.jsxs(Le,{...J("wrapper"),...K,...f,mod:[{error:!!g&&P,pointer:M,disabled:b,multiline:O,"data-with-right-section":!!ne,"data-with-left-section":!!x},V],variant:D,size:h,children:[x&&y.jsx("div",{...w,"data-position":"left",...J("section",{className:w?.className,style:w?.style}),children:x}),y.jsx(Le,{component:"input",...j,...ie,ref:r,required:c,mod:{disabled:b,error:!!g&&P},variant:D,__size:I,...J("input")}),ne&&y.jsx("div",{..._,"data-position":"right",...J("section",{className:_?.className,style:_?.style}),children:ne})]})})});ya.classes=zi,ya.Wrapper=GN,ya.Label=Ak,ya.Error=Tk,ya.Description=Ck,ya.Placeholder=YN,ya.ClearButton=tie,ya.displayName="@mantine/core/Input";function qlt(e,r,n){const o=ze(e,r,n),{label:a,description:i,error:s,required:l,classNames:c,styles:u,className:d,unstyled:h,__staticSelector:f,__stylesApiProps:g,errorProps:b,labelProps:x,descriptionProps:w,wrapperProps:k,id:C,size:_,style:T,inputContainer:A,inputWrapperOrder:R,withAsterisk:D,variant:N,vars:M,mod:O,attributes:F,...L}=o,{styleProps:U,rest:P}=nN(L),V={label:a,description:i,error:s,required:l,classNames:c,className:d,__staticSelector:f,__stylesApiProps:g||o,errorProps:b,labelProps:x,descriptionProps:w,unstyled:h,styles:u,size:_,style:T,inputContainer:A,inputWrapperOrder:R,withAsterisk:D,variant:N,id:C,mod:O,attributes:F,...k};return{...P,classNames:c,styles:u,unstyled:h,wrapperProps:{...V,...U},inputProps:{required:l,classNames:c,styles:u,unstyled:h,size:_,__staticSelector:f,__stylesApiProps:g||o,error:s,variant:N,id:C,attributes:F}}}const Ult={__staticSelector:"InputBase",withAria:!0,size:"sm"},Rk=Jn((e,r)=>{const{inputProps:n,wrapperProps:o,...a}=qlt("InputBase",Ult,e);return y.jsx(ya.Wrapper,{...o,children:y.jsx(ya,{...n,...a,ref:r})})});Rk.classes={...ya.classes,...ya.Wrapper.classes},Rk.displayName="@mantine/core/InputBase";const Wlt={gap:{type:"spacing",property:"gap"},rowGap:{type:"spacing",property:"rowGap"},columnGap:{type:"spacing",property:"columnGap"},align:{type:"identity",property:"alignItems"},justify:{type:"identity",property:"justifyContent"},wrap:{type:"identity",property:"flexWrap"},direction:{type:"identity",property:"flexDirection"}};var nie={root:"m_8bffd616"};const oie=Jn((e,r)=>{const n=ze("Flex",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,gap:u,rowGap:d,columnGap:h,align:f,justify:g,wrap:b,direction:x,attributes:w,...k}=n,C=vt({name:"Flex",classes:nie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:w,vars:c}),_=_o(),T=ib(),A=Toe({styleProps:{gap:u,rowGap:d,columnGap:h,align:f,justify:g,wrap:b,direction:x},theme:_,data:Wlt});return y.jsxs(y.Fragment,{children:[A.hasResponsiveStyles&&y.jsx(sg,{selector:`.${T}`,styles:A.styles,media:A.media}),y.jsx(Le,{ref:r,...C("root",{className:T,style:Zu(A.inlineStyles)}),...k})]})});oie.classes=nie,oie.displayName="@mantine/core/Flex";function Ylt(e,r){if(!r||!e)return!1;let n=r.parentNode;for(;n!=null;){if(n===e)return!0;n=n.parentNode}return!1}function Glt({target:e,parent:r,ref:n,displayAfterTransitionEnd:o}){const a=E.useRef(-1),[i,s]=E.useState(!1),[l,c]=E.useState(typeof o=="boolean"?o:!1),u=()=>{if(!e||!r||!n.current)return;const g=e.getBoundingClientRect(),b=r.getBoundingClientRect(),x=window.getComputedStyle(e),w=window.getComputedStyle(r),k=Ju(x.borderTopWidth)+Ju(w.borderTopWidth),C=Ju(x.borderLeftWidth)+Ju(w.borderLeftWidth),_={top:g.top-b.top-k,left:g.left-b.left-C,width:g.width,height:g.height};n.current.style.transform=`translateY(${_.top}px) translateX(${_.left}px)`,n.current.style.width=`${_.width}px`,n.current.style.height=`${_.height}px`},d=()=>{window.clearTimeout(a.current),n.current&&(n.current.style.transitionDuration="0ms"),u(),a.current=window.setTimeout(()=>{n.current&&(n.current.style.transitionDuration="")},30)},h=E.useRef(null),f=E.useRef(null);return E.useEffect(()=>{if(u(),e)return h.current=new ResizeObserver(d),h.current.observe(e),r&&(f.current=new ResizeObserver(d),f.current.observe(r)),()=>{h.current?.disconnect(),f.current?.disconnect()}},[r,e]),E.useEffect(()=>{if(r){const g=b=>{Ylt(b.target,r)&&(d(),c(!1))};return r.addEventListener("transitionend",g),()=>{r.removeEventListener("transitionend",g)}}},[r]),Hot(()=>{Wot()!=="test"&&s(!0)},20,{autoInvoke:!0}),qot(g=>{g.forEach(b=>{b.type==="attributes"&&b.attributeName==="dir"&&d()})},{attributes:!0,attributeFilter:["dir"]},()=>document.documentElement),{initialized:i,hidden:l}}var aie={root:"m_96b553a6"};const Xlt=(e,{transitionDuration:r})=>({root:{"--transition-duration":typeof r=="number"?`${r}ms`:r}}),XN=Je((e,r)=>{const n=ze("FloatingIndicator",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,target:u,parent:d,transitionDuration:h,mod:f,displayAfterTransitionEnd:g,attributes:b,...x}=n,w=vt({name:"FloatingIndicator",classes:aie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:c,varsResolver:Xlt}),k=E.useRef(null),{initialized:C,hidden:_}=Glt({target:u,parent:d,ref:k,displayAfterTransitionEnd:g}),T=yn(r,k);return!u||!d?null:y.jsx(Le,{ref:T,mod:[{initialized:C,hidden:_},f],...w("root"),...x})});XN.displayName="@mantine/core/FloatingIndicator",XN.classes=aie;function Klt({open:e,close:r,openDelay:n,closeDelay:o}){const a=E.useRef(-1),i=E.useRef(-1),s=()=>{window.clearTimeout(a.current),window.clearTimeout(i.current)},l=()=>{s(),e()},c=()=>{s(),o===0||o===void 0?r():i.current=window.setTimeout(r,o)};return E.useEffect(()=>s,[]),{openDropdown:l,closeDropdown:c}}function KN({style:e,size:r=16,...n}){return y.jsx("svg",{viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{...e,width:qe(r),height:qe(r),display:"block"},...n,children:y.jsx("path",{d:"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}KN.displayName="@mantine/core/AccordionChevron";var iie={root:"m_66836ed3",wrapper:"m_a5d60502",body:"m_667c2793",title:"m_6a03f287",label:"m_698f4f23",icon:"m_667f2a6a",message:"m_7fa78076",closeButton:"m_87f54839"};const Zlt=(e,{radius:r,color:n,variant:o,autoContrast:a})=>{const i=e.variantColorResolver({color:n||e.primaryColor,theme:e,variant:o||"light",autoContrast:a});return{root:{"--alert-radius":r===void 0?void 0:Tn(r),"--alert-bg":n||o?i.background:void 0,"--alert-color":i.color,"--alert-bd":n||o?i.border:void 0}}},sie=Je((e,r)=>{const n=ze("Alert",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,radius:u,color:d,title:h,children:f,id:g,icon:b,withCloseButton:x,onClose:w,closeButtonLabel:k,variant:C,autoContrast:_,attributes:T,...A}=n,R=vt({name:"Alert",classes:iie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:T,vars:c,varsResolver:Zlt}),D=Ps(g),N=h&&`${D}-title`||void 0,M=`${D}-body`;return y.jsx(Le,{id:D,...R("root",{variant:C}),variant:C,ref:r,...A,role:"alert","aria-describedby":f?M:void 0,"aria-labelledby":h?N:void 0,children:y.jsxs("div",{...R("wrapper"),children:[b&&y.jsx("div",{...R("icon"),children:b}),y.jsxs("div",{...R("body"),children:[h&&y.jsx("div",{...R("title"),"data-with-close-button":x||void 0,children:y.jsx("span",{id:N,...R("label"),children:h})}),f&&y.jsx("div",{id:M,...R("message"),"data-variant":C,children:f})]}),x&&y.jsx(uh,{...R("closeButton"),onClick:w,variant:"transparent",size:16,iconSize:16,"aria-label":k,unstyled:l})]})})});sie.classes=iie,sie.displayName="@mantine/core/Alert";var lie={root:"m_b6d8b162"};function Qlt(e){if(e==="start")return"start";if(e==="end"||e)return"end"}const Jlt={inherit:!1},ect=(e,{variant:r,lineClamp:n,gradient:o,size:a,color:i})=>({root:{"--text-fz":Fo(a),"--text-lh":wot(a),"--text-gradient":r==="gradient"?lat(o,e):void 0,"--text-line-clamp":typeof n=="number"?n.toString():void 0,"--text-color":i?Jo(i,e):void 0}}),pb=Jn((e,r)=>{const n=ze("Text",Jlt,e),{lineClamp:o,truncate:a,inline:i,inherit:s,gradient:l,span:c,__staticSelector:u,vars:d,className:h,style:f,classNames:g,styles:b,unstyled:x,variant:w,mod:k,size:C,attributes:_,...T}=n,A=vt({name:["Text",u],props:n,classes:lie,className:h,style:f,classNames:g,styles:b,unstyled:x,attributes:_,vars:d,varsResolver:ect});return y.jsx(Le,{...A("root",{focusable:!0}),ref:r,component:c?"span":"p",variant:w,mod:[{"data-truncate":Qlt(a),"data-line-clamp":typeof o=="number","data-inline":i,"data-inherit":s},k],size:C,...T})});pb.classes=lie,pb.displayName="@mantine/core/Text";var cie={root:"m_849cf0da"};const tct={underline:"hover"},uie=Jn((e,r)=>{const{underline:n,className:o,unstyled:a,mod:i,...s}=ze("Anchor",tct,e);return y.jsx(pb,{component:"a",ref:r,className:ho({[cie.root]:!a},o),...s,mod:[{underline:n},i],__staticSelector:"Anchor",unstyled:a})});uie.classes=cie,uie.displayName="@mantine/core/Anchor";function die(e){return typeof e=="string"?{value:e,label:e}:"value"in e&&!("label"in e)?{value:e.value,label:e.value,disabled:e.disabled}:typeof e=="number"?{value:e.toString(),label:e.toString()}:"group"in e?{group:e.group,items:e.items.map(r=>die(r))}:e}function rct(e){return e?e.map(r=>die(r)):[]}function pie(e){return e.reduce((r,n)=>"group"in n?{...r,...pie(n.items)}:(r[n.value]=n,r),{})}var ba={dropdown:"m_88b62a41",search:"m_985517d8",options:"m_b2821a6e",option:"m_92253aa5",empty:"m_2530cd1d",header:"m_858f94bd",footer:"m_82b967cb",group:"m_254f3e4f",groupLabel:"m_2bb2e9e5",chevron:"m_2943220b",optionsDropdownOption:"m_390b5f4",optionsDropdownCheckIcon:"m_8ee53fc2"};const nct={error:null},oct=(e,{size:r,color:n})=>({chevron:{"--combobox-chevron-size":ur(r,"combobox-chevron-size"),"--combobox-chevron-color":n?Jo(n,e):void 0}}),ZN=Je((e,r)=>{const n=ze("ComboboxChevron",nct,e),{size:o,error:a,style:i,className:s,classNames:l,styles:c,unstyled:u,vars:d,mod:h,...f}=n,g=vt({name:"ComboboxChevron",classes:ba,props:n,style:i,className:s,classNames:l,styles:c,unstyled:u,vars:d,varsResolver:oct,rootSelector:"chevron"});return y.jsx(Le,{component:"svg",...f,...g("chevron"),size:o,viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",mod:["combobox-chevron",{error:a},h],ref:r,children:y.jsx("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})});ZN.classes=ba,ZN.displayName="@mantine/core/ComboboxChevron";const[act,Ii]=qa("Combobox component was not found in tree"),hie=E.forwardRef(({size:e,onMouseDown:r,onClick:n,onClear:o,...a},i)=>y.jsx(ya.ClearButton,{ref:i,tabIndex:-1,"aria-hidden":!0,...a,onMouseDown:s=>{s.preventDefault(),r?.(s)},onClick:s=>{o(),n?.(s)}}));hie.displayName="@mantine/core/ComboboxClearButton";const QN=Je((e,r)=>{const{classNames:n,styles:o,className:a,style:i,hidden:s,...l}=ze("ComboboxDropdown",null,e),c=Ii();return y.jsx(Eo.Dropdown,{...l,ref:r,role:"presentation","data-hidden":s||void 0,...c.getStyles("dropdown",{className:a,style:i,classNames:n,styles:o})})});QN.classes=ba,QN.displayName="@mantine/core/ComboboxDropdown";const ict={refProp:"ref"},fie=Je((e,r)=>{const{children:n,refProp:o}=ze("ComboboxDropdownTarget",ict,e);if(Ii(),!Ds(n))throw new Error("Combobox.DropdownTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");return y.jsx(Eo.Target,{ref:r,refProp:o,children:n})});fie.displayName="@mantine/core/ComboboxDropdownTarget";const JN=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=ze("ComboboxEmpty",null,e),c=Ii();return y.jsx(Le,{ref:r,...c.getStyles("empty",{className:o,classNames:n,styles:i,style:a}),...l})});JN.classes=ba,JN.displayName="@mantine/core/ComboboxEmpty";function eD({onKeyDown:e,withKeyboardNavigation:r,withAriaAttributes:n,withExpandedAttribute:o,targetType:a,autoComplete:i}){const s=Ii(),[l,c]=E.useState(null),u=d=>{if(e?.(d),!s.readOnly&&r){if(d.nativeEvent.isComposing)return;if(d.nativeEvent.code==="ArrowDown"&&(d.preventDefault(),s.store.dropdownOpened?c(s.store.selectNextOption()):(s.store.openDropdown("keyboard"),c(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex("selected",{scrollIntoView:!0}))),d.nativeEvent.code==="ArrowUp"&&(d.preventDefault(),s.store.dropdownOpened?c(s.store.selectPreviousOption()):(s.store.openDropdown("keyboard"),c(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex("selected",{scrollIntoView:!0}))),d.nativeEvent.code==="Enter"||d.nativeEvent.code==="NumpadEnter"){if(d.nativeEvent.keyCode===229)return;const h=s.store.getSelectedOptionIndex();s.store.dropdownOpened&&h!==-1?(d.preventDefault(),s.store.clickSelectedOption()):a==="button"&&(d.preventDefault(),s.store.openDropdown("keyboard"))}d.key==="Escape"&&s.store.closeDropdown("keyboard"),d.nativeEvent.code==="Space"&&a==="button"&&(d.preventDefault(),s.store.toggleDropdown("keyboard"))}};return{...n?{"aria-haspopup":"listbox","aria-expanded":o?!!(s.store.listId&&s.store.dropdownOpened):void 0,"aria-controls":s.store.dropdownOpened&&s.store.listId?s.store.listId:void 0,"aria-activedescendant":s.store.dropdownOpened&&l||void 0,autoComplete:i,"data-expanded":s.store.dropdownOpened||void 0,"data-mantine-stop-propagation":s.store.dropdownOpened||void 0}:{},onKeyDown:u}}const sct={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},mie=Je((e,r)=>{const{children:n,refProp:o,withKeyboardNavigation:a,withAriaAttributes:i,withExpandedAttribute:s,targetType:l,autoComplete:c,...u}=ze("ComboboxEventsTarget",sct,e);if(!Ds(n))throw new Error("Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const d=Ii(),h=eD({targetType:l,withAriaAttributes:i,withKeyboardNavigation:a,withExpandedAttribute:s,onKeyDown:n.props.onKeyDown,autoComplete:c});return E.cloneElement(n,{...h,...u,[o]:yn(r,d.store.targetRef,Q4(n))})});mie.displayName="@mantine/core/ComboboxEventsTarget";const tD=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=ze("ComboboxFooter",null,e),c=Ii();return y.jsx(Le,{ref:r,...c.getStyles("footer",{className:o,classNames:n,style:a,styles:i}),...l,onMouseDown:u=>{u.preventDefault()}})});tD.classes=ba,tD.displayName="@mantine/core/ComboboxFooter";const rD=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,children:l,label:c,id:u,...d}=ze("ComboboxGroup",null,e),h=Ii(),f=Ps(u);return y.jsxs(Le,{ref:r,role:"group","aria-labelledby":c?f:void 0,...h.getStyles("group",{className:o,classNames:n,style:a,styles:i}),...d,children:[c&&y.jsx("div",{id:f,...h.getStyles("groupLabel",{classNames:n,styles:i}),children:c}),l]})});rD.classes=ba,rD.displayName="@mantine/core/ComboboxGroup";const nD=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=ze("ComboboxHeader",null,e),c=Ii();return y.jsx(Le,{ref:r,...c.getStyles("header",{className:o,classNames:n,style:a,styles:i}),...l,onMouseDown:u=>{u.preventDefault()}})});nD.classes=ba,nD.displayName="@mantine/core/ComboboxHeader";function gie({value:e,valuesDivider:r=",",...n}){return y.jsx("input",{type:"hidden",value:Array.isArray(e)?e.join(r):e||"",...n})}gie.displayName="@mantine/core/ComboboxHiddenInput";const oD=Je((e,r)=>{const n=ze("ComboboxOption",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,onClick:c,id:u,active:d,onMouseDown:h,onMouseOver:f,disabled:g,selected:b,mod:x,...w}=n,k=Ii(),C=E.useId(),_=u||C;return y.jsx(Le,{...k.getStyles("option",{className:a,classNames:o,styles:s,style:i}),...w,ref:r,id:_,mod:["combobox-option",{"combobox-active":d,"combobox-disabled":g,"combobox-selected":b},x],role:"option",onClick:T=>{g?T.preventDefault():(k.onOptionSubmit?.(n.value,n),c?.(T))},onMouseDown:T=>{T.preventDefault(),h?.(T)},onMouseOver:T=>{k.resetSelectionOnOptionHover&&k.store.resetSelectedOption(),f?.(T)}})});oD.classes=ba,oD.displayName="@mantine/core/ComboboxOption";const aD=Je((e,r)=>{const n=ze("ComboboxOptions",null,e),{classNames:o,className:a,style:i,styles:s,id:l,onMouseDown:c,labelledBy:u,...d}=n,h=Ii(),f=Ps(l);return E.useEffect(()=>{h.store.setListId(f)},[f]),y.jsx(Le,{ref:r,...h.getStyles("options",{className:a,style:i,classNames:o,styles:s}),...d,id:f,role:"listbox","aria-labelledby":u,onMouseDown:g=>{g.preventDefault(),c?.(g)}})});aD.classes=ba,aD.displayName="@mantine/core/ComboboxOptions";const lct={withAriaAttributes:!0,withKeyboardNavigation:!0},iD=Je((e,r)=>{const n=ze("ComboboxSearch",lct,e),{classNames:o,styles:a,unstyled:i,vars:s,withAriaAttributes:l,onKeyDown:c,withKeyboardNavigation:u,size:d,...h}=n,f=Ii(),g=f.getStyles("search"),b=eD({targetType:"input",withAriaAttributes:l,withKeyboardNavigation:u,withExpandedAttribute:!1,onKeyDown:c,autoComplete:"off"});return y.jsx(ya,{ref:yn(r,f.store.searchRef),classNames:[{input:g.className},o],styles:[{input:g.style},a],size:d||f.size,...b,...h,__staticSelector:"Combobox"})});iD.classes=ba,iD.displayName="@mantine/core/ComboboxSearch";const cct={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},yie=Je((e,r)=>{const{children:n,refProp:o,withKeyboardNavigation:a,withAriaAttributes:i,withExpandedAttribute:s,targetType:l,autoComplete:c,...u}=ze("ComboboxTarget",cct,e);if(!Ds(n))throw new Error("Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const d=Ii(),h=eD({targetType:l,withAriaAttributes:i,withKeyboardNavigation:a,withExpandedAttribute:s,onKeyDown:n.props.onKeyDown,autoComplete:c}),f=E.cloneElement(n,{...h,...u});return y.jsx(Eo.Target,{ref:yn(r,d.store.targetRef),children:f})});yie.displayName="@mantine/core/ComboboxTarget";function uct(e,r,n){for(let o=e-1;o>=0;o-=1)if(!r[o].hasAttribute("data-combobox-disabled"))return o;if(n){for(let o=r.length-1;o>-1;o-=1)if(!r[o].hasAttribute("data-combobox-disabled"))return o}return e}function dct(e,r,n){for(let o=e+1;o{l||(c(!0),a?.(I))},[c,a,l]),k=E.useCallback((I="unknown")=>{l&&(c(!1),o?.(I))},[c,o,l]),C=E.useCallback((I="unknown")=>{l?k(I):w(I)},[k,w,l]),_=E.useCallback(()=>{const I=document.querySelector(`#${u.current} [data-combobox-selected]`);I?.removeAttribute("data-combobox-selected"),I?.removeAttribute("aria-selected")},[]),T=E.useCallback(I=>{const H=document.getElementById(u.current)?.querySelectorAll("[data-combobox-option]");if(!H)return null;const q=I>=H.length?0:I<0?H.length-1:I;return d.current=q,H?.[q]&&!H[q].hasAttribute("data-combobox-disabled")?(_(),H[q].setAttribute("data-combobox-selected","true"),H[q].setAttribute("aria-selected","true"),H[q].scrollIntoView({block:"nearest",behavior:s}),H[q].id):null},[s,_]),A=E.useCallback(()=>{const I=document.querySelector(`#${u.current} [data-combobox-active]`);if(I){const H=document.querySelectorAll(`#${u.current} [data-combobox-option]`),q=Array.from(H).findIndex(Z=>Z===I);return T(q)}return T(0)},[T]),R=E.useCallback(()=>T(dct(d.current,document.querySelectorAll(`#${u.current} [data-combobox-option]`),i)),[T,i]),D=E.useCallback(()=>T(uct(d.current,document.querySelectorAll(`#${u.current} [data-combobox-option]`),i)),[T,i]),N=E.useCallback(()=>T(pct(document.querySelectorAll(`#${u.current} [data-combobox-option]`))),[T]),M=E.useCallback((I="selected",H)=>{x.current=window.setTimeout(()=>{const q=document.querySelectorAll(`#${u.current} [data-combobox-option]`),Z=Array.from(q).findIndex(W=>W.hasAttribute(`data-combobox-${I}`));d.current=Z,H?.scrollIntoView&&q[Z]?.scrollIntoView({block:"nearest",behavior:s})},0)},[]),O=E.useCallback(()=>{d.current=-1,_()},[_]),F=E.useCallback(()=>{document.querySelectorAll(`#${u.current} [data-combobox-option]`)?.[d.current]?.click()},[]),L=E.useCallback(I=>{u.current=I},[]),U=E.useCallback(()=>{g.current=window.setTimeout(()=>h.current?.focus(),0)},[]),P=E.useCallback(()=>{b.current=window.setTimeout(()=>f.current?.focus(),0)},[]),V=E.useCallback(()=>d.current,[]);return E.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(b.current),window.clearTimeout(x.current)},[]),{dropdownOpened:l,openDropdown:w,closeDropdown:k,toggleDropdown:C,selectedOptionIndex:d.current,getSelectedOptionIndex:V,selectOption:T,selectFirstOption:N,selectActiveOption:A,selectNextOption:R,selectPreviousOption:D,resetSelectedOption:O,updateSelectedOptionIndex:M,listId:u.current,setListId:L,clickSelectedOption:F,searchRef:h,focusSearchInput:U,targetRef:f,focusTarget:P}}const hct={keepMounted:!0,withinPortal:!0,resetSelectionOnOptionHover:!1,width:"target",transitionProps:{transition:"fade",duration:0},size:"sm"},fct=(e,{size:r,dropdownPadding:n})=>({options:{"--combobox-option-fz":Fo(r),"--combobox-option-padding":ur(r,"combobox-option-padding")},dropdown:{"--combobox-padding":n===void 0?void 0:qe(n),"--combobox-option-fz":Fo(r),"--combobox-option-padding":ur(r,"combobox-option-padding")}});function Nr(e){const r=ze("Combobox",hct,e),{classNames:n,styles:o,unstyled:a,children:i,store:s,vars:l,onOptionSubmit:c,onClose:u,size:d,dropdownPadding:h,resetSelectionOnOptionHover:f,__staticSelector:g,readOnly:b,attributes:x,...w}=r,k=bie(),C=s||k,_=vt({name:g||"Combobox",classes:ba,props:r,classNames:n,styles:o,unstyled:a,attributes:x,vars:l,varsResolver:fct}),T=()=>{u?.(),C.closeDropdown()};return y.jsx(act,{value:{getStyles:_,store:C,onOptionSubmit:c,size:d,resetSelectionOnOptionHover:f,readOnly:b},children:y.jsx(Eo,{opened:C.dropdownOpened,preventPositionChangeWhenVisible:!0,...w,onChange:A=>!A&&T(),withRoles:!1,unstyled:a,children:i})})}const mct=e=>e;Nr.extend=mct,Nr.classes=ba,Nr.displayName="@mantine/core/Combobox",Nr.Target=yie,Nr.Dropdown=QN,Nr.Options=aD,Nr.Option=oD,Nr.Search=iD,Nr.Empty=JN,Nr.Chevron=ZN,Nr.Footer=tD,Nr.Header=nD,Nr.EventsTarget=mie,Nr.DropdownTarget=fie,Nr.Group=rD,Nr.ClearButton=hie,Nr.HiddenInput=gie;function gct({size:e,style:r,...n}){const o=e!==void 0?{width:qe(e),height:qe(e),...r}:r;return y.jsx("svg",{viewBox:"0 0 10 7",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:o,"aria-hidden":!0,...n,children:y.jsx("path",{d:"M4 4.586L1.707 2.293A1 1 0 1 0 .293 3.707l3 3a.997.997 0 0 0 1.414 0l5-5A1 1 0 1 0 8.293.293L4 4.586z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}function hb(e){return"group"in e}function vie({options:e,search:r,limit:n}){const o=r.trim().toLowerCase(),a=[];for(let i=0;i0)return!1;return!0}function xie(e,r=new Set){if(Array.isArray(e))for(const n of e)if(hb(n))xie(n.items,r);else{if(typeof n.value>"u")throw new Error("[@mantine/core] Each option must have value property");if(typeof n.value!="string")throw new Error(`[@mantine/core] Option value must be a string, other data formats are not supported, got ${typeof n.value}`);if(r.has(n.value))throw new Error(`[@mantine/core] Duplicate options are not supported. Option with value "${n.value}" was provided more than once`);r.add(n.value)}}function bct(e,r){return Array.isArray(e)?e.includes(r):e===r}function wie({data:e,withCheckIcon:r,value:n,checkIconPosition:o,unstyled:a,renderOption:i}){if(!hb(e)){const l=bct(n,e.value),c=r&&l&&y.jsx(gct,{className:ba.optionsDropdownCheckIcon}),u=y.jsxs(y.Fragment,{children:[o==="left"&&c,y.jsx("span",{children:e.label}),o==="right"&&c]});return y.jsx(Nr.Option,{value:e.value,disabled:e.disabled,className:ho({[ba.optionsDropdownOption]:!a}),"data-reverse":o==="right"||void 0,"data-checked":l||void 0,"aria-selected":l,active:l,children:typeof i=="function"?i({option:e,checked:l}):u})}const s=e.items.map(l=>y.jsx(wie,{data:l,value:n,unstyled:a,withCheckIcon:r,checkIconPosition:o,renderOption:i},l.value));return y.jsx(Nr.Group,{label:e.group,children:s})}function vct({data:e,hidden:r,hiddenWhenEmpty:n,filter:o,search:a,limit:i,maxDropdownHeight:s,withScrollArea:l=!0,filterOptions:c=!0,withCheckIcon:u=!1,value:d,checkIconPosition:h,nothingFoundMessage:f,unstyled:g,labelId:b,renderOption:x,scrollAreaProps:w,"aria-label":k}){xie(e);const C=typeof a=="string"?(o||vie)({options:e,search:c?a:"",limit:i??1/0}):e,_=yct(C),T=C.map(A=>y.jsx(wie,{data:A,withCheckIcon:u,value:d,checkIconPosition:h,unstyled:g,renderOption:x},hb(A)?A.group:A.value));return y.jsx(Nr.Dropdown,{hidden:r||n&&_,"data-composed":!0,children:y.jsxs(Nr.Options,{labelledBy:b,"aria-label":k,children:[l?y.jsx(sh.Autosize,{mah:s??220,type:"scroll",scrollbarSize:"var(--combobox-padding)",offsetScrollbars:"y",...w,children:T}):T,_&&f&&y.jsx(Nr.Empty,{children:f})]})})}var kie={root:"m_347db0ec","root--dot":"m_fbd81e3d",label:"m_5add502a",section:"m_91fdda9b"};const xct=(e,{radius:r,color:n,gradient:o,variant:a,size:i,autoContrast:s})=>{const l=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:s});return{root:{"--badge-height":ur(i,"badge-height"),"--badge-padding-x":ur(i,"badge-padding-x"),"--badge-fz":ur(i,"badge-fz"),"--badge-radius":r===void 0?void 0:Tn(r),"--badge-bg":n||a?l.background:void 0,"--badge-color":n||a?l.color:void 0,"--badge-bd":n||a?l.border:void 0,"--badge-dot-color":a==="dot"?Jo(n,e):void 0}}},_ie=Jn((e,r)=>{const n=ze("Badge",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,radius:u,color:d,gradient:h,leftSection:f,rightSection:g,children:b,variant:x,fullWidth:w,autoContrast:k,circle:C,mod:_,attributes:T,...A}=n,R=vt({name:"Badge",props:n,classes:kie,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:T,vars:c,varsResolver:xct});return y.jsxs(Le,{variant:x,mod:[{block:w,circle:C,"with-right-section":!!g,"with-left-section":!!f},_],...R("root",{variant:x}),ref:r,...A,children:[f&&y.jsx("span",{...R("section"),"data-position":"left",children:f}),y.jsx("span",{...R("label"),children:b}),g&&y.jsx("span",{...R("section"),"data-position":"right",children:g})]})});_ie.classes=kie,_ie.displayName="@mantine/core/Badge";var Eie={root:"m_8b3717df",breadcrumb:"m_f678d540",separator:"m_3b8f2208"};const wct={separator:"/"},kct=(e,{separatorMargin:r})=>({root:{"--bc-separator-margin":po(r)}}),Sie=Je((e,r)=>{const n=ze("Breadcrumbs",wct,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,children:u,separator:d,separatorMargin:h,attributes:f,...g}=n,b=vt({name:"Breadcrumbs",classes:Eie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:f,vars:c,varsResolver:kct}),x=E.Children.toArray(u).reduce((w,k,C,_)=>{const T=Ds(k)?E.cloneElement(k,{...b("breadcrumb",{className:k.props?.className}),key:C}):E.createElement("div",{...b("breadcrumb"),key:C},k);return w.push(T),C!==_.length-1&&w.push(E.createElement(Le,{...b("separator"),key:`separator-${C}`},d)),w},[]);return y.jsx(Le,{ref:r,...b("root"),...g,children:x})});Sie.classes=Eie,Sie.displayName="@mantine/core/Breadcrumbs";var Cie={root:"m_fea6bf1a",burger:"m_d4fb9cad"};const _ct=(e,{color:r,size:n,lineSize:o,transitionDuration:a,transitionTimingFunction:i})=>({root:{"--burger-color":r?Jo(r,e):void 0,"--burger-size":ur(n,"burger-size"),"--burger-line-size":o?qe(o):void 0,"--burger-transition-duration":a===void 0?void 0:`${a}ms`,"--burger-transition-timing-function":i}}),Tie=Je((e,r)=>{const n=ze("Burger",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,opened:u,children:d,transitionDuration:h,transitionTimingFunction:f,lineSize:g,attributes:b,...x}=n,w=vt({name:"Burger",classes:Cie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:c,varsResolver:_ct});return y.jsxs(Nl,{...w("root"),ref:r,...x,children:[y.jsx(Le,{mod:["reduce-motion",{opened:u}],...w("burger")}),d]})});Tie.classes=Cie,Tie.displayName="@mantine/core/Burger";var yg={root:"m_77c9d27d",inner:"m_80f1301b",label:"m_811560b9",section:"m_a74036a",loader:"m_a25b86ee",group:"m_80d6d844",groupSection:"m_70be2a01"};const Aie={orientation:"horizontal"},Ect=(e,{borderWidth:r})=>({group:{"--button-border-width":qe(r)}}),sD=Je((e,r)=>{const n=ze("ButtonGroup",Aie,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,orientation:c,vars:u,borderWidth:d,variant:h,mod:f,attributes:g,...b}=ze("ButtonGroup",Aie,e),x=vt({name:"ButtonGroup",props:n,classes:yg,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:u,varsResolver:Ect,rootSelector:"group"});return y.jsx(Le,{...x("group"),ref:r,variant:h,mod:[{"data-orientation":c},f],role:"group",...b})});sD.classes=yg,sD.displayName="@mantine/core/ButtonGroup";const Sct=(e,{radius:r,color:n,gradient:o,variant:a,autoContrast:i,size:s})=>{const l=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:i});return{groupSection:{"--section-height":ur(s,"section-height"),"--section-padding-x":ur(s,"section-padding-x"),"--section-fz":s?.includes("compact")?Fo(s.replace("compact-","")):Fo(s),"--section-radius":r===void 0?void 0:Tn(r),"--section-bg":n||a?l.background:void 0,"--section-color":l.color,"--section-bd":n||a?l.border:void 0}}},lD=Je((e,r)=>{const n=ze("ButtonGroupSection",null,e),{className:o,style:a,classNames:i,styles:s,unstyled:l,vars:c,variant:u,gradient:d,radius:h,autoContrast:f,attributes:g,...b}=n,x=vt({name:"ButtonGroupSection",props:n,classes:yg,className:o,style:a,classNames:i,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:Sct,rootSelector:"groupSection"});return y.jsx(Le,{...x("groupSection"),ref:r,variant:u,...b})});lD.classes=yg,lD.displayName="@mantine/core/ButtonGroupSection";const Cct={in:{opacity:1,transform:`translate(-50%, calc(-50% + ${qe(1)}))`},out:{opacity:0,transform:"translate(-50%, -200%)"},common:{transformOrigin:"center"},transitionProperty:"transform, opacity"},Tct=(e,{radius:r,color:n,gradient:o,variant:a,size:i,justify:s,autoContrast:l})=>{const c=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:o,variant:a||"filled",autoContrast:l});return{root:{"--button-justify":s,"--button-height":ur(i,"button-height"),"--button-padding-x":ur(i,"button-padding-x"),"--button-fz":i?.includes("compact")?Fo(i.replace("compact-","")):Fo(i),"--button-radius":r===void 0?void 0:Tn(r),"--button-bg":n||a?c.background:void 0,"--button-hover":n||a?c.hover:void 0,"--button-color":c.color,"--button-bd":n||a?c.border:void 0,"--button-hover-color":n||a?c.hoverColor:void 0}}},Nk=Jn((e,r)=>{const n=ze("Button",null,e),{style:o,vars:a,className:i,color:s,disabled:l,children:c,leftSection:u,rightSection:d,fullWidth:h,variant:f,radius:g,loading:b,loaderProps:x,gradient:w,classNames:k,styles:C,unstyled:_,"data-disabled":T,autoContrast:A,mod:R,attributes:D,...N}=n,M=vt({name:"Button",props:n,classes:yg,className:i,style:o,classNames:k,styles:C,unstyled:_,attributes:D,vars:a,varsResolver:Tct}),O=!!u,F=!!d;return y.jsxs(Nl,{ref:r,...M("root",{active:!l&&!b&&!T}),unstyled:_,variant:f,disabled:l||b,mod:[{disabled:l||T,loading:b,block:h,"with-left-section":O,"with-right-section":F},R],...N,children:[typeof b=="boolean"&&y.jsx(js,{mounted:b,transition:Cct,duration:150,children:L=>y.jsx(Le,{component:"span",...M("loader",{style:L}),"aria-hidden":!0,children:y.jsx(ch,{color:"var(--button-color)",size:"calc(var(--button-height) / 1.8)",...x})})}),y.jsxs("span",{...M("inner"),children:[u&&y.jsx(Le,{component:"span",...M("section"),mod:{position:"left"},children:u}),y.jsx(Le,{component:"span",mod:{loading:b},...M("label"),children:c}),d&&y.jsx(Le,{component:"span",...M("section"),mod:{position:"right"},children:d})]})]})});Nk.classes=yg,Nk.displayName="@mantine/core/Button",Nk.Group=sD,Nk.GroupSection=lD;const[Act,Rct]=qa("Card component was not found in tree");var cD={root:"m_e615b15f",section:"m_599a2148"};const Dk=Jn((e,r)=>{const n=ze("CardSection",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,withBorder:c,inheritPadding:u,mod:d,...h}=n,f=Rct();return y.jsx(Le,{ref:r,mod:[{"with-border":c,"inherit-padding":u},d],...f.getStyles("section",{className:a,style:i,styles:s,classNames:o}),...h})});Dk.classes=cD,Dk.displayName="@mantine/core/CardSection";const Nct=(e,{padding:r})=>({root:{"--card-padding":po(r)}}),uD=Jn((e,r)=>{const n=ze("Card",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,children:u,padding:d,attributes:h,...f}=n,g=vt({name:"Card",props:n,classes:cD,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:Nct}),b=E.Children.toArray(u),x=b.map((w,k)=>typeof w=="object"&&w&&"type"in w&&w.type===Dk?E.cloneElement(w,{"data-first-section":k===0||void 0,"data-last-section":k===b.length-1||void 0}):w);return y.jsx(Act,{value:{getStyles:g},children:y.jsx(xk,{ref:r,unstyled:l,...g("root"),...f,children:x})})});uD.classes=cD,uD.displayName="@mantine/core/Card",uD.Section=Dk;var Rie={root:"m_b183c0a2"};const Dct=(e,{color:r})=>({root:{"--code-bg":r?Jo(r,e):void 0}}),Nie=Je((e,r)=>{const n=ze("Code",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,block:d,variant:h,mod:f,attributes:g,...b}=n,x=vt({name:"Code",props:n,classes:Rie,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:Dct});return y.jsx(Le,{component:d?"pre":"code",variant:h,ref:r,mod:[{block:d},f],...x("root"),...b,dir:"ltr"})});Nie.classes=Rie,Nie.displayName="@mantine/core/Code";var Die={root:"m_de3d2490",colorOverlay:"m_862f3d1b",shadowOverlay:"m_98ae7f22",alphaOverlay:"m_95709ac0",childrenOverlay:"m_93e74e3"};const $ie={withShadow:!0},$ct=(e,{radius:r,size:n})=>({root:{"--cs-radius":r===void 0?void 0:Tn(r),"--cs-size":qe(n)}}),Mie=Jn((e,r)=>{const n=ze("ColorSwatch",$ie,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,size:d,radius:h,withShadow:f,children:g,variant:b,attributes:x,...w}=ze("ColorSwatch",$ie,n),k=vt({name:"ColorSwatch",props:n,classes:Die,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:x,vars:c,varsResolver:$ct});return y.jsxs(Le,{ref:r,variant:b,size:d,...k("root",{focusable:!0}),...w,children:[y.jsx("span",{...k("alphaOverlay")}),f&&y.jsx("span",{...k("shadowOverlay")}),y.jsx("span",{...k("colorOverlay",{style:{backgroundColor:u}})}),y.jsx("span",{...k("childrenOverlay"),children:g})]})});Mie.classes=Die,Mie.displayName="@mantine/core/ColorSwatch";var Pie={root:"m_7485cace"};const Mct=(e,{size:r,fluid:n})=>({root:{"--container-size":n?void 0:ur(r,"container-size")}}),zie=Je((e,r)=>{const n=ze("Container",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,fluid:u,mod:d,attributes:h,strategy:f,...g}=n,b=vt({name:"Container",classes:Pie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:Mct});return y.jsx(Le,{ref:r,mod:[{fluid:u,strategy:f||"block"},d],...b("root"),...g})});zie.classes=Pie,zie.displayName="@mantine/core/Container";var Iie={root:"m_3eebeb36",label:"m_9e365f20"};const Pct={orientation:"horizontal"},zct=(e,{color:r,variant:n,size:o})=>({root:{"--divider-color":r?Jo(r,e):void 0,"--divider-border-style":n,"--divider-size":ur(o,"divider-size")}}),Oie=Je((e,r)=>{const n=ze("Divider",Pct,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,orientation:d,label:h,labelPosition:f,mod:g,attributes:b,...x}=n,w=vt({name:"Divider",classes:Iie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:c,varsResolver:zct});return y.jsx(Le,{ref:r,mod:[{orientation:d,"with-label":!!h},g],...w("root"),...x,role:"separator",children:h&&y.jsx(Le,{component:"span",mod:{position:f},...w("label"),children:h})})});Oie.classes=Iie,Oie.displayName="@mantine/core/Divider";const[Ict,bg]=qa("Drawer component was not found in tree");var Pc={root:"m_f11b401e",header:"m_5a7c2c9",content:"m_b8a05bbd",inner:"m_31cd769a"};const $k=Je((e,r)=>{const n=ze("DrawerBody",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bg();return y.jsx(qN,{ref:r,...u.getStyles("body",{classNames:o,style:i,styles:s,className:a}),...c})});$k.classes=Pc,$k.displayName="@mantine/core/DrawerBody";const Mk=Je((e,r)=>{const n=ze("DrawerCloseButton",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bg();return y.jsx(Zae,{ref:r,...u.getStyles("close",{classNames:o,style:i,styles:s,className:a}),...c})});Mk.classes=Pc,Mk.displayName="@mantine/core/DrawerCloseButton";const Pk=Je((e,r)=>{const n=ze("DrawerContent",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,children:c,radius:u,__hidden:d,...h}=n,f=bg(),g=f.scrollAreaComponent||eie;return y.jsx(UN,{...f.getStyles("content",{className:a,style:i,styles:s,classNames:o}),innerProps:f.getStyles("inner",{className:a,style:i,styles:s,classNames:o}),ref:r,...h,radius:u||f.radius||0,"data-hidden":d||void 0,children:y.jsx(g,{style:{height:"calc(100vh - var(--drawer-offset) * 2)"},children:c})})});Pk.classes=Pc,Pk.displayName="@mantine/core/DrawerContent";const zk=Je((e,r)=>{const n=ze("DrawerHeader",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bg();return y.jsx(Qae,{ref:r,...u.getStyles("header",{classNames:o,style:i,styles:s,className:a}),...c})});zk.classes=Pc,zk.displayName="@mantine/core/DrawerHeader";const Ik=Je((e,r)=>{const n=ze("DrawerOverlay",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bg();return y.jsx(WN,{ref:r,...u.getStyles("overlay",{classNames:o,style:i,styles:s,className:a}),...c})});Ik.classes=Pc,Ik.displayName="@mantine/core/DrawerOverlay";function Oct(e){switch(e){case"top":return"flex-start";case"bottom":return"flex-end";default:return}}function jct(e){if(e==="top"||e==="bottom")return"0 0 calc(100% - var(--drawer-offset, 0rem) * 2)"}const Lct={top:"slide-down",bottom:"slide-up",left:"slide-right",right:"slide-left"},Bct={top:"slide-down",bottom:"slide-up",right:"slide-right",left:"slide-left"},Fct={closeOnClickOutside:!0,withinPortal:!0,lockScroll:!0,trapFocus:!0,returnFocus:!0,closeOnEscape:!0,keepMounted:!1,zIndex:$s("modal"),position:"left"},Hct=(e,{position:r,size:n,offset:o})=>({root:{"--drawer-size":ur(n,"drawer-size"),"--drawer-flex":jct(r),"--drawer-height":r==="left"||r==="right"?void 0:"var(--drawer-size)","--drawer-align":Oct(r),"--drawer-justify":r==="right"?"flex-end":void 0,"--drawer-offset":qe(o)}}),Ok=Je((e,r)=>{const n=ze("DrawerRoot",Fct,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,scrollAreaComponent:u,position:d,transitionProps:h,radius:f,attributes:g,...b}=n,{dir:x}=Rc(),w=vt({name:"Drawer",classes:Pc,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:Hct}),k=(x==="rtl"?Bct:Lct)[d];return y.jsx(Ict,{value:{scrollAreaComponent:u,getStyles:w,radius:f},children:y.jsx(VN,{ref:r,...w("root"),transitionProps:{transition:k,...h},"data-offset-scrollbars":u===sh.Autosize||void 0,unstyled:l,...b})})});Ok.classes=Pc,Ok.displayName="@mantine/core/DrawerRoot";const[Vct,qct]=ng();function jie({children:e}){const[r,n]=E.useState([]),[o,a]=E.useState($s("modal"));return y.jsx(Vct,{value:{stack:r,addModal:(i,s)=>{n(l=>[...new Set([...l,i])]),a(l=>typeof s=="number"&&typeof l=="number"?Math.max(l,s):l)},removeModal:i=>n(s=>s.filter(l=>l!==i)),getZIndex:i=>`calc(${o} + ${r.indexOf(i)} + 1)`,currentId:r[r.length-1],maxZIndex:o},children:e})}jie.displayName="@mantine/core/DrawerStack";const jk=Je((e,r)=>{const n=ze("DrawerTitle",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bg();return y.jsx(Jae,{ref:r,...u.getStyles("title",{classNames:o,style:i,styles:s,className:a}),...c})});jk.classes=Pc,jk.displayName="@mantine/core/DrawerTitle";const Uct={closeOnClickOutside:!0,withinPortal:!0,lockScroll:!0,trapFocus:!0,returnFocus:!0,closeOnEscape:!0,keepMounted:!1,zIndex:$s("modal"),withOverlay:!0,withCloseButton:!0},Dl=Je((e,r)=>{const{title:n,withOverlay:o,overlayProps:a,withCloseButton:i,closeButtonProps:s,children:l,opened:c,stackId:u,zIndex:d,...h}=ze("Drawer",Uct,e),f=qct(),g=!!n||i,b=f&&u?{closeOnEscape:f.currentId===u,trapFocus:f.currentId===u,zIndex:f.getZIndex(u)}:{},x=o===!1?!1:u&&f?f.currentId===u:c;return E.useEffect(()=>{f&&u&&(c?f.addModal(u,d||$s("modal")):f.removeModal(u))},[c,u,d]),y.jsxs(Ok,{ref:r,opened:c,zIndex:f&&u?f.getZIndex(u):d,...h,...b,children:[o&&y.jsx(Ik,{visible:x,transitionProps:f&&u?{duration:0}:void 0,...a}),y.jsxs(Pk,{__hidden:f&&u&&c?u!==f.currentId:!1,children:[g&&y.jsxs(zk,{children:[n&&y.jsx(jk,{children:n}),i&&y.jsx(Mk,{...s})]}),y.jsx($k,{children:l})]})]})});Dl.classes=Pc,Dl.displayName="@mantine/core/Drawer",Dl.Root=Ok,Dl.Overlay=Ik,Dl.Content=Pk,Dl.Body=$k,Dl.Header=zk,Dl.Title=jk,Dl.CloseButton=Mk,Dl.Stack=jie;const[Lie,Bie]=qa("Grid component was not found in tree"),dD=(e,r)=>e==="content"?"auto":e==="auto"?"0rem":e?`${100/(r/e)}%`:void 0,Fie=(e,r,n)=>n||e==="auto"?"100%":e==="content"?"unset":dD(e,r),Hie=(e,r)=>{if(e)return e==="auto"||r?"1":"auto"},Vie=(e,r)=>e===0?"0":e?`${100/(r/e)}%`:void 0;function Wct({span:e,order:r,offset:n,selector:o}){const a=_o(),i=Bie(),s=i.breakpoints||a.breakpoints,l=Ms(e)===void 0?12:Ms(e),c=Zu({"--col-order":Ms(r)?.toString(),"--col-flex-grow":Hie(l,i.grow),"--col-flex-basis":dD(l,i.columns),"--col-width":l==="content"?"auto":void 0,"--col-max-width":Fie(l,i.columns,i.grow),"--col-offset":Vie(Ms(n),i.columns)}),u=Bo(s).reduce((h,f)=>(h[f]||(h[f]={}),typeof r=="object"&&r[f]!==void 0&&(h[f]["--col-order"]=r[f]?.toString()),typeof e=="object"&&e[f]!==void 0&&(h[f]["--col-flex-grow"]=Hie(e[f],i.grow),h[f]["--col-flex-basis"]=dD(e[f],i.columns),h[f]["--col-width"]=e[f]==="content"?"auto":void 0,h[f]["--col-max-width"]=Fie(e[f],i.columns,i.grow)),typeof n=="object"&&n[f]!==void 0&&(h[f]["--col-offset"]=Vie(n[f],i.columns)),h),{}),d=WR(Bo(u),s).filter(h=>Bo(u[h.value]).length>0).map(h=>({query:i.type==="container"?`mantine-grid (min-width: ${s[h.value]})`:`(min-width: ${s[h.value]})`,styles:u[h.value]}));return y.jsx(sg,{styles:c,media:i.type==="container"?void 0:d,container:i.type==="container"?d:void 0,selector:o})}var pD={container:"m_8478a6da",root:"m_410352e9",inner:"m_dee7bd2f",col:"m_96bdd299"};const Yct={span:12},hD=Je((e,r)=>{const n=ze("GridCol",Yct,e),{classNames:o,className:a,style:i,styles:s,vars:l,span:c,order:u,offset:d,...h}=n,f=Bie(),g=ib();return y.jsxs(y.Fragment,{children:[y.jsx(Wct,{selector:`.${g}`,span:c,order:u,offset:d}),y.jsx(Le,{ref:r,...f.getStyles("col",{className:ho(a,g),style:i,classNames:o,styles:s}),...h})]})});hD.classes=pD,hD.displayName="@mantine/core/GridCol";function qie({gutter:e,selector:r,breakpoints:n,type:o}){const a=_o(),i=n||a.breakpoints,s=Zu({"--grid-gutter":po(Ms(e))}),l=Bo(i).reduce((u,d)=>(u[d]||(u[d]={}),typeof e=="object"&&e[d]!==void 0&&(u[d]["--grid-gutter"]=po(e[d])),u),{}),c=WR(Bo(l),i).filter(u=>Bo(l[u.value]).length>0).map(u=>({query:o==="container"?`mantine-grid (min-width: ${i[u.value]})`:`(min-width: ${i[u.value]})`,styles:l[u.value]}));return y.jsx(sg,{styles:s,media:o==="container"?void 0:c,container:o==="container"?c:void 0,selector:r})}const Gct={gutter:"md",grow:!1,columns:12},Xct=(e,{justify:r,align:n,overflow:o})=>({root:{"--grid-justify":r,"--grid-align":n,"--grid-overflow":o}}),fD=Je((e,r)=>{const n=ze("Grid",Gct,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,grow:u,gutter:d,columns:h,align:f,justify:g,children:b,breakpoints:x,type:w,attributes:k,...C}=n,_=vt({name:"Grid",classes:pD,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:k,vars:c,varsResolver:Xct}),T=ib();return w==="container"&&x?y.jsxs(Lie,{value:{getStyles:_,grow:u,columns:h,breakpoints:x,type:w},children:[y.jsx(qie,{selector:`.${T}`,...n}),y.jsx("div",{..._("container"),children:y.jsx(Le,{ref:r,..._("root",{className:T}),...C,children:y.jsx("div",{..._("inner"),children:b})})})]}):y.jsxs(Lie,{value:{getStyles:_,grow:u,columns:h,breakpoints:x,type:w},children:[y.jsx(qie,{selector:`.${T}`,...n}),y.jsx(Le,{ref:r,..._("root",{className:T}),...C,children:y.jsx("div",{..._("inner"),children:b})})]})});fD.classes=pD,fD.displayName="@mantine/core/Grid",fD.Col=hD;function Uie({color:e,theme:r,defaultShade:n}){const o=nh({color:e,theme:r});return o.isThemeColor?o.shade===void 0?`var(--mantine-color-${o.color}-${n})`:`var(${o.variable})`:e}var Wie={root:"m_bcb3f3c2"};const Kct={color:"yellow"},Zct=(e,{color:r})=>({root:{"--mark-bg-dark":Uie({color:r,theme:e,defaultShade:5}),"--mark-bg-light":Uie({color:r,theme:e,defaultShade:2})}}),mD=Je((e,r)=>{const n=ze("Mark",Kct,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,color:u,variant:d,attributes:h,...f}=n,g=vt({name:"Mark",props:n,className:a,style:i,classes:Wie,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:Zct});return y.jsx(Le,{component:"mark",ref:r,variant:d,...g("root"),...f})});mD.classes=Wie,mD.displayName="@mantine/core/Mark";function Yie(e){return e.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&")}function Qct(e,r){if(r==null)return[{chunk:e,highlighted:!1}];const n=Array.isArray(r)?r.map(Yie):Yie(r);if(!(Array.isArray(n)?n.filter(i=>i.trim().length>0).length>0:n.trim()!==""))return[{chunk:e,highlighted:!1}];const o=typeof n=="string"?n.trim():n.filter(i=>i.trim().length!==0).map(i=>i.trim()).sort((i,s)=>s.length-i.length).join("|"),a=new RegExp(`(${o})`,"gi");return e.split(a).map(i=>({chunk:i,highlighted:a.test(i)})).filter(({chunk:i})=>i)}const Gie=Jn((e,r)=>{const{unstyled:n,children:o,highlight:a,highlightStyles:i,color:s,...l}=ze("Highlight",null,e),c=Qct(o,a);return y.jsx(pb,{unstyled:n,ref:r,...l,__staticSelector:"Highlight",children:c.map(({chunk:u,highlighted:d},h)=>d?y.jsx(mD,{unstyled:n,color:s,style:i,"data-highlight":u,children:u},h):y.jsx("span",{children:u},h))})});Gie.classes=pb.classes,Gie.displayName="@mantine/core/Highlight";const[Akt,Xie]=qa("HoverCard component was not found in the tree"),Kie=E.createContext(!1),Jct=Kie.Provider,Zie=()=>E.useContext(Kie);function eut(e){const{children:r,onMouseEnter:n,onMouseLeave:o,...a}=ze("HoverCardDropdown",null,e),i=Xie();if(Zie()&&i.getFloatingProps&&i.floating){const c=i.getFloatingProps();return y.jsx(Eo.Dropdown,{ref:i.floating,...c,onMouseEnter:Ln(n,c.onMouseEnter),onMouseLeave:Ln(o,c.onMouseLeave),...a,children:r})}const s=Ln(n,i.openDropdown),l=Ln(o,i.closeDropdown);return y.jsx(Eo.Dropdown,{onMouseEnter:s,onMouseLeave:l,...a,children:r})}eut.displayName="@mantine/core/HoverCardDropdown";const tut={openDelay:0,closeDelay:0};function Qie(e){const{openDelay:r,closeDelay:n,children:o}=ze("HoverCardGroup",tut,e);return y.jsx(Jct,{value:!0,children:y.jsx(fae,{delay:{open:r,close:n},children:o})})}Qie.displayName="@mantine/core/HoverCardGroup",Qie.extend=e=>e;const rut={refProp:"ref"},nut=E.forwardRef((e,r)=>{const{children:n,refProp:o,eventPropsWrapperName:a,...i}=ze("HoverCardTarget",rut,e);if(!Ds(n))throw new Error("HoverCard.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const s=Xie();if(Zie()&&s.getReferenceProps&&s.reference){const d=s.getReferenceProps();return y.jsx(Eo.Target,{refProp:o,ref:r,...i,children:E.cloneElement(n,a?{[a]:{...d,ref:s.reference}}:{...d,ref:s.reference})})}const l=Ln(n.props.onMouseEnter,s.openDropdown),c=Ln(n.props.onMouseLeave,s.closeDropdown),u={onMouseEnter:l,onMouseLeave:c};return y.jsx(Eo.Target,{refProp:o,ref:r,...i,children:E.cloneElement(n,a?{[a]:u}:u)})});nut.displayName="@mantine/core/HoverCardTarget";var Jie={root:"m_6e45937b",loader:"m_e8eb006c",overlay:"m_df587f17"};const ese={transitionProps:{transition:"fade",duration:0},overlayProps:{backgroundOpacity:.75},zIndex:$s("overlay")},out=(e,{zIndex:r})=>({root:{"--lo-z-index":r?.toString()}}),tse=Je((e,r)=>{const n=ze("LoadingOverlay",ese,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,transitionProps:u,loaderProps:d,overlayProps:h,visible:f,zIndex:g,attributes:b,...x}=n,w=_o(),k=vt({name:"LoadingOverlay",classes:Jie,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:b,vars:c,varsResolver:out}),C={...ese.overlayProps,...h};return y.jsx(js,{transition:"fade",...u,mounted:!!f,children:_=>y.jsxs(Le,{...k("root",{style:_}),ref:r,...x,children:[y.jsx(ch,{...k("loader"),unstyled:l,...d}),y.jsx(fg,{...C,...k("overlay"),darkHidden:!0,unstyled:l,color:h?.color||w.white}),y.jsx(fg,{...C,...k("overlay"),lightHidden:!0,unstyled:l,color:h?.color||w.colors.dark[5]})]})})});tse.classes=Jie,tse.displayName="@mantine/core/LoadingOverlay";const[Rkt,ed]=qa("Menu component was not found in the tree");var vg={dropdown:"m_dc9b7c9f",label:"m_9bfac126",divider:"m_efdf90cb",item:"m_99ac2aa1",itemLabel:"m_5476e0d3",itemSection:"m_8b75e504",chevron:"m_b85b0bed"};const rse=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=ze("MenuDivider",null,e),c=ed();return y.jsx(Le,{ref:r,...c.getStyles("divider",{className:o,style:a,styles:i,classNames:n}),...l})});rse.classes=vg,rse.displayName="@mantine/core/MenuDivider";const nse=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,onMouseEnter:l,onMouseLeave:c,onKeyDown:u,children:d,...h}=ze("MenuDropdown",null,e),f=E.useRef(null),g=ed(),b=Ln(u,k=>{(k.key==="ArrowUp"||k.key==="ArrowDown")&&(k.preventDefault(),f.current?.querySelectorAll("[data-menu-item]:not(:disabled)")[0]?.focus())}),x=Ln(l,()=>(g.trigger==="hover"||g.trigger==="click-hover")&&g.openDropdown()),w=Ln(c,()=>(g.trigger==="hover"||g.trigger==="click-hover")&&g.closeDropdown());return y.jsxs(Eo.Dropdown,{...h,onMouseEnter:x,onMouseLeave:w,role:"menu","aria-orientation":"vertical",ref:yn(r,f),...g.getStyles("dropdown",{className:o,style:a,styles:i,classNames:n,withStaticClass:!1}),tabIndex:-1,"data-menu-dropdown":!0,onKeyDown:b,children:[g.withInitialFocusPlaceholder&&y.jsx("div",{tabIndex:-1,"data-autofocus":!0,"data-mantine-stop-propagation":!0,style:{outline:0}}),d]})});nse.classes=vg,nse.displayName="@mantine/core/MenuDropdown";const[aut,Lk]=ng(),ose=Jn((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,color:l,closeMenuOnClick:c,leftSection:u,rightSection:d,children:h,disabled:f,"data-disabled":g,...b}=ze("MenuItem",null,e),x=ed(),w=Lk(),k=_o(),{dir:C}=Rc(),_=E.useRef(null),T=b,A=Ln(T.onClick,()=>{g||(typeof c=="boolean"?c&&x.closeDropdownImmediately():x.closeOnItemClick&&x.closeDropdownImmediately())}),R=l?k.variantColorResolver({color:l,theme:k,variant:"light"}):void 0,D=l?nh({color:l,theme:k}):null,N=Ln(T.onKeyDown,M=>{M.key==="ArrowLeft"&&w&&(w.close(),w.focusParentItem())});return y.jsxs(Nl,{onMouseDown:M=>M.preventDefault(),...b,unstyled:x.unstyled,tabIndex:x.menuItemTabIndex,...x.getStyles("item",{className:o,style:a,styles:i,classNames:n}),ref:yn(_,r),role:"menuitem",disabled:f,"data-menu-item":!0,"data-disabled":f||g||void 0,"data-mantine-stop-propagation":!0,onClick:A,onKeyDown:qR({siblingSelector:"[data-menu-item]:not([data-disabled])",parentSelector:"[data-menu-dropdown]",activateOnFocus:!1,loop:x.loop,dir:C,orientation:"vertical",onKeyDown:N}),__vars:{"--menu-item-color":D?.isThemeColor&&D?.shade===void 0?`var(--mantine-color-${D.color}-6)`:R?.color,"--menu-item-hover":R?.hover},children:[u&&y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"left",children:u}),h&&y.jsx("div",{...x.getStyles("itemLabel",{styles:i,classNames:n}),children:h}),d&&y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"right",children:d})]})});ose.classes=vg,ose.displayName="@mantine/core/MenuItem";const ase=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,...l}=ze("MenuLabel",null,e),c=ed();return y.jsx(Le,{ref:r,...c.getStyles("label",{className:o,style:a,styles:i,classNames:n}),...l})});ase.classes=vg,ase.displayName="@mantine/core/MenuLabel";const gD=Je((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,onMouseEnter:l,onMouseLeave:c,onKeyDown:u,children:d,...h}=ze("MenuSubDropdown",null,e),f=E.useRef(null),g=ed(),b=Lk(),x=Ln(l,b?.open),w=Ln(c,b?.close);return y.jsx(Eo.Dropdown,{...h,onMouseEnter:x,onMouseLeave:w,role:"menu","aria-orientation":"vertical",ref:yn(r,f),...g.getStyles("dropdown",{className:o,style:a,styles:i,classNames:n,withStaticClass:!1}),tabIndex:-1,"data-menu-dropdown":!0,children:d})});gD.classes=vg,gD.displayName="@mantine/core/MenuSubDropdown";const yD=Jn((e,r)=>{const{classNames:n,className:o,style:a,styles:i,vars:s,color:l,leftSection:c,rightSection:u,children:d,disabled:h,"data-disabled":f,closeMenuOnClick:g,...b}=ze("MenuSubItem",null,e),x=ed(),w=Lk(),k=_o(),{dir:C}=Rc(),_=E.useRef(null),T=b,A=l?k.variantColorResolver({color:l,theme:k,variant:"light"}):void 0,R=l?nh({color:l,theme:k}):null,D=Ln(T.onKeyDown,F=>{F.key==="ArrowRight"&&(w?.open(),w?.focusFirstItem()),F.key==="ArrowLeft"&&w?.parentContext&&(w.parentContext.close(),w.parentContext.focusParentItem())}),N=Ln(T.onClick,()=>{!f&&g&&x.closeDropdownImmediately()}),M=Ln(T.onMouseEnter,w?.open),O=Ln(T.onMouseLeave,w?.close);return y.jsxs(Nl,{onMouseDown:F=>F.preventDefault(),...b,unstyled:x.unstyled,tabIndex:x.menuItemTabIndex,...x.getStyles("item",{className:o,style:a,styles:i,classNames:n}),ref:yn(_,r),role:"menuitem",disabled:h,"data-menu-item":!0,"data-sub-menu-item":!0,"data-disabled":h||f||void 0,"data-mantine-stop-propagation":!0,onMouseEnter:M,onMouseLeave:O,onClick:N,onKeyDown:qR({siblingSelector:"[data-menu-item]:not([data-disabled])",parentSelector:"[data-menu-dropdown]",activateOnFocus:!1,loop:x.loop,dir:C,orientation:"vertical",onKeyDown:D}),__vars:{"--menu-item-color":R?.isThemeColor&&R?.shade===void 0?`var(--mantine-color-${R.color}-6)`:A?.color,"--menu-item-hover":A?.hover},children:[c&&y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"left",children:c}),d&&y.jsx("div",{...x.getStyles("itemLabel",{styles:i,classNames:n}),children:d}),y.jsx("div",{...x.getStyles("itemSection",{styles:i,classNames:n}),"data-position":"right",children:u||y.jsx(KN,{...x.getStyles("chevron"),size:14})})]})});yD.classes=vg,yD.displayName="@mantine/core/MenuSubItem";function ise({children:e,refProp:r}){if(!Ds(e))throw new Error("Menu.Sub.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");return ed(),y.jsx(Eo.Target,{refProp:r,popupType:"menu",children:e})}ise.displayName="@mantine/core/MenuSubTarget";const iut={offset:0,position:"right-start",transitionProps:{duration:0},middlewares:{shift:{crossAxis:!0}}};function fb(e){const{children:r,closeDelay:n,...o}=ze("MenuSub",iut,e),a=Ps(),[i,{open:s,close:l}]=Fot(!1),c=Lk(),{openDropdown:u,closeDropdown:d}=Klt({open:s,close:l,closeDelay:n,openDelay:0});return y.jsx(aut,{value:{opened:i,close:d,open:u,focusFirstItem:()=>window.setTimeout(()=>{document.getElementById(`${a}-dropdown`)?.querySelectorAll("[data-menu-item]:not([data-disabled])")[0]?.focus()},16),focusParentItem:()=>window.setTimeout(()=>{document.getElementById(`${a}-target`)?.focus()},16),parentContext:c},children:y.jsx(Eo,{opened:i,withinPortal:!1,withArrow:!1,id:a,...o,children:r})})}fb.extend=e=>e,fb.displayName="@mantine/core/MenuSub",fb.Target=ise,fb.Dropdown=gD,fb.Item=yD;const sut={refProp:"ref"},lut=E.forwardRef((e,r)=>{const{children:n,refProp:o,...a}=ze("MenuTarget",sut,e);if(!Ds(n))throw new Error("Menu.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const i=ed(),s=n.props,l=Ln(s.onClick,()=>{i.trigger==="click"?i.toggleDropdown():i.trigger==="click-hover"&&(i.setOpenedViaClick(!0),i.opened||i.openDropdown())}),c=Ln(s.onMouseEnter,()=>(i.trigger==="hover"||i.trigger==="click-hover")&&i.openDropdown()),u=Ln(s.onMouseLeave,()=>{(i.trigger==="hover"||i.trigger==="click-hover"&&!i.openedViaClick)&&i.closeDropdown()});return y.jsx(Eo.Target,{refProp:o,popupType:"menu",ref:r,...a,children:E.cloneElement(n,{onClick:l,onMouseEnter:c,onMouseLeave:u,"data-expanded":i.opened?!0:void 0})})});lut.displayName="@mantine/core/MenuTarget";const[cut,bD]=qa("Modal component was not found in tree");var mb={root:"m_9df02822",content:"m_54c44539",inner:"m_1f958f16",header:"m_d0e2b9cd"};const sse=Je((e,r)=>{const n=ze("ModalBody",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bD();return y.jsx(qN,{ref:r,...u.getStyles("body",{classNames:o,style:i,styles:s,className:a}),...c})});sse.classes=mb,sse.displayName="@mantine/core/ModalBody";const lse=Je((e,r)=>{const n=ze("ModalContent",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,children:c,__hidden:u,...d}=n,h=bD(),f=h.scrollAreaComponent||eie;return y.jsx(UN,{...h.getStyles("content",{className:a,style:i,styles:s,classNames:o}),innerProps:h.getStyles("inner",{className:a,style:i,styles:s,classNames:o}),"data-full-screen":h.fullScreen||void 0,"data-modal-content":!0,"data-hidden":u||void 0,ref:r,...d,children:y.jsx(f,{style:{maxHeight:h.fullScreen?"100dvh":`calc(100dvh - (${qe(h.yOffset)} * 2))`},children:c})})});lse.classes=mb,lse.displayName="@mantine/core/ModalContent";const cse=Je((e,r)=>{const n=ze("ModalOverlay",null,e),{classNames:o,className:a,style:i,styles:s,vars:l,...c}=n,u=bD();return y.jsx(WN,{ref:r,...u.getStyles("overlay",{classNames:o,style:i,styles:s,className:a}),...c})});cse.classes=mb,cse.displayName="@mantine/core/ModalOverlay";const uut={__staticSelector:"Modal",closeOnClickOutside:!0,withinPortal:!0,lockScroll:!0,trapFocus:!0,returnFocus:!0,closeOnEscape:!0,keepMounted:!1,zIndex:$s("modal"),transitionProps:{duration:200,transition:"fade-down"},yOffset:"5dvh"},dut=(e,{radius:r,size:n,yOffset:o,xOffset:a})=>({root:{"--modal-radius":r===void 0?void 0:Tn(r),"--modal-size":ur(n,"modal-size"),"--modal-y-offset":qe(o),"--modal-x-offset":qe(a)}}),use=Je((e,r)=>{const n=ze("ModalRoot",uut,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,yOffset:u,scrollAreaComponent:d,radius:h,fullScreen:f,centered:g,xOffset:b,__staticSelector:x,attributes:w,...k}=n,C=vt({name:x,classes:mb,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:w,vars:c,varsResolver:dut});return y.jsx(cut,{value:{yOffset:u,scrollAreaComponent:d,getStyles:C,fullScreen:f},children:y.jsx(VN,{ref:r,...C("root"),"data-full-screen":f||void 0,"data-centered":g||void 0,"data-offset-scrollbars":d===sh.Autosize||void 0,unstyled:l,...k})})});use.classes=mb,use.displayName="@mantine/core/ModalRoot";const[Nkt,dse]=ng(),[put,hut]=ng();var Bk={root:"m_7cda1cd6","root--default":"m_44da308b","root--contrast":"m_e3a01f8",label:"m_1e0e6180",remove:"m_ae386778",group:"m_1dcfd90b"};const fut=(e,{gap:r},{size:n})=>({group:{"--pg-gap":r!==void 0?ur(r):ur(n,"pg-gap")}}),vD=Je((e,r)=>{const n=ze("PillGroup",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,size:u,disabled:d,attributes:h,...f}=n,g=dse()?.size||u||void 0,b=vt({name:"PillGroup",classes:Bk,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:h,vars:c,varsResolver:fut,stylesCtx:{size:g},rootSelector:"group"});return y.jsx(put,{value:{size:g,disabled:d},children:y.jsx(Le,{ref:r,size:g,...b("group"),...f})})});vD.classes=Bk,vD.displayName="@mantine/core/PillGroup";const mut={variant:"default"},gut=(e,{radius:r},{size:n})=>({root:{"--pill-fz":ur(n,"pill-fz"),"--pill-height":ur(n,"pill-height"),"--pill-radius":r===void 0?void 0:Tn(r)}}),xD=Je((e,r)=>{const n=ze("Pill",mut,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,variant:u,children:d,withRemoveButton:h,onRemove:f,removeButtonProps:g,radius:b,size:x,disabled:w,mod:k,attributes:C,..._}=n,T=hut(),A=dse(),R=x||T?.size||void 0,D=A?.variant==="filled"?"contrast":u||"default",N=vt({name:"Pill",classes:Bk,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:C,vars:c,varsResolver:gut,stylesCtx:{size:R}});return y.jsxs(Le,{component:"span",ref:r,variant:D,size:R,...N("root",{variant:D}),mod:[{"with-remove":h&&!w,disabled:w||T?.disabled},k],..._,children:[y.jsx("span",{...N("label"),children:d}),h&&y.jsx(uh,{variant:"transparent",radius:b,tabIndex:-1,"aria-hidden":!0,unstyled:l,...g,...N("remove",{className:g?.className,style:g?.style}),onMouseDown:M=>{M.preventDefault(),M.stopPropagation(),g?.onMouseDown?.(M)},onClick:M=>{M.stopPropagation(),f?.(),g?.onClick?.(M)}})]})});xD.classes=Bk,xD.displayName="@mantine/core/Pill",xD.Group=vD;var pse={root:"m_f0824112",description:"m_57492dcc",section:"m_690090b5",label:"m_1f6ac4c4",body:"m_f07af9d2",children:"m_e17b862f",chevron:"m_1fd8a00b"};const yut=(e,{variant:r,color:n,childrenOffset:o,autoContrast:a})=>{const i=e.variantColorResolver({color:n||e.primaryColor,theme:e,variant:r||"light",autoContrast:a});return{root:{"--nl-bg":n||r?i.background:void 0,"--nl-hover":n||r?i.hover:void 0,"--nl-color":n||r?i.color:void 0},children:{"--nl-offset":po(o)}}},hse=Jn((e,r)=>{const n=ze("NavLink",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,opened:u,defaultOpened:d,onChange:h,children:f,active:g,disabled:b,leftSection:x,rightSection:w,label:k,description:C,disableRightSectionRotation:_,noWrap:T,childrenOffset:A,autoContrast:R,mod:D,attributes:N,onClick:M,onKeyDown:O,...F}=n,L=vt({name:"NavLink",props:n,classes:pse,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:N,vars:c,varsResolver:yut}),[U,P]=Qu({value:u,defaultValue:d,finalValue:!1,onChange:h}),V=!!f,I=H=>{M?.(H),V&&(H.preventDefault(),P(!U))};return y.jsxs(y.Fragment,{children:[y.jsxs(Nl,{...L("root"),component:"a",ref:r,onClick:I,onKeyDown:H=>{O?.(H),H.nativeEvent.code==="Space"&&V&&(H.preventDefault(),P(!U))},unstyled:l,mod:[{disabled:b,active:g,expanded:U},D],...F,children:[x&&y.jsx(Le,{component:"span",...L("section"),mod:{position:"left"},children:x}),y.jsxs(Le,{...L("body"),mod:{"no-wrap":T},children:[y.jsx(Le,{component:"span",...L("label"),children:k}),y.jsx(Le,{component:"span",mod:{active:g},...L("description"),children:C})]}),(V||w!==void 0)&&y.jsx(Le,{...L("section"),component:"span",mod:{rotate:U&&!_,position:"right"},children:V?w!==void 0?w:y.jsx(KN,{...L("chevron")}):w})]}),V&&y.jsx(Moe,{in:U,...L("collapse"),children:y.jsx("div",{...L("children"),children:f})})]})});hse.classes=pse,hse.displayName="@mantine/core/NavLink";var fse={root:"m_a513464",icon:"m_a4ceffb",loader:"m_b0920b15",body:"m_a49ed24",title:"m_3feedf16",description:"m_3d733a3a",closeButton:"m_919a4d88"};const but={withCloseButton:!0},vut=(e,{radius:r,color:n})=>({root:{"--notification-radius":r===void 0?void 0:Tn(r),"--notification-color":n?Jo(n,e):void 0}}),mse=Je((e,r)=>{const n=ze("Notification",but,e),{className:o,color:a,radius:i,loading:s,withCloseButton:l,withBorder:c,title:u,icon:d,children:h,onClose:f,closeButtonProps:g,classNames:b,style:x,styles:w,unstyled:k,variant:C,vars:_,mod:T,loaderProps:A,role:R,attributes:D,...N}=n,M=vt({name:"Notification",classes:fse,props:n,className:o,style:x,classNames:b,styles:w,unstyled:k,attributes:D,vars:_,varsResolver:vut});return y.jsxs(Le,{...M("root"),mod:[{"data-with-icon":!!d||s,"data-with-border":c},T],ref:r,variant:C,role:R||"alert",...N,children:[d&&!s&&y.jsx("div",{...M("icon"),children:d}),s&&y.jsx(ch,{size:28,color:a,...A,...M("loader")}),y.jsxs("div",{...M("body"),children:[u&&y.jsx("div",{...M("title"),children:u}),y.jsx(Le,{...M("description"),mod:{"data-with-title":!!u},children:h})]}),l&&y.jsx(uh,{iconSize:16,color:"gray",...g,unstyled:k,onClick:f,...M("closeButton")})]})});mse.classes=fse,mse.displayName="@mantine/core/Notification";const xut={duration:100,transition:"fade"};function gse(e,r){return{...xut,...r,...e}}function wut({offset:e,position:r,defaultOpened:n}){const[o,a]=E.useState(n),i=E.useRef(null),{x:s,y:l,elements:c,refs:u,update:d,placement:h}=NN({placement:r,middleware:[EN({crossAxis:!0,padding:5,rootBoundary:"document"})]}),f=h.includes("right")?e:r.includes("left")?e*-1:0,g=h.includes("bottom")?e:r.includes("top")?e*-1:0,b=E.useCallback(({clientX:x,clientY:w})=>{u.setPositionReference({getBoundingClientRect(){return{width:0,height:0,x,y:w,left:x+f,top:w+g,right:x,bottom:w}}})},[c.reference]);return E.useEffect(()=>{if(u.floating.current){const x=i.current;x.addEventListener("mousemove",b);const w=$c(u.floating.current);return w.forEach(k=>{k.addEventListener("scroll",d)}),()=>{x.removeEventListener("mousemove",b),w.forEach(k=>{k.removeEventListener("scroll",d)})}}},[c.reference,u.floating.current,d,b,o]),{handleMouseMove:b,x:s,y:l,opened:o,setOpened:a,boundaryRef:i,floating:u.setFloating}}var Fk={tooltip:"m_1b3c8819",arrow:"m_f898399f"};const kut={refProp:"ref",withinPortal:!0,offset:10,position:"right",zIndex:$s("popover")},_ut=(e,{radius:r,color:n})=>({tooltip:{"--tooltip-radius":r===void 0?void 0:Tn(r),"--tooltip-bg":n?Jo(n,e):void 0,"--tooltip-color":n?"var(--mantine-color-white)":void 0}}),wD=Je((e,r)=>{const n=ze("TooltipFloating",kut,e),{children:o,refProp:a,withinPortal:i,style:s,className:l,classNames:c,styles:u,unstyled:d,radius:h,color:f,label:g,offset:b,position:x,multiline:w,zIndex:k,disabled:C,defaultOpened:_,variant:T,vars:A,portalProps:R,attributes:D,...N}=n,M=_o(),O=vt({name:"TooltipFloating",props:n,classes:Fk,className:l,style:s,classNames:c,styles:u,unstyled:d,attributes:D,rootSelector:"tooltip",vars:A,varsResolver:_ut}),{handleMouseMove:F,x:L,y:U,opened:P,boundaryRef:V,floating:I,setOpened:H}=wut({offset:b,position:x,defaultOpened:_});if(!Ds(o))throw new Error("[@mantine/core] Tooltip.Floating component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported");const q=yn(V,Q4(o),r),Z=o.props,W=K=>{Z.onMouseEnter?.(K),F(K),H(!0)},G=K=>{Z.onMouseLeave?.(K),H(!1)};return y.jsxs(y.Fragment,{children:[y.jsx(lh,{...R,withinPortal:i,children:y.jsx(Le,{...N,...O("tooltip",{style:{...iN(s,M),zIndex:k,display:!C&&P?"block":"none",top:(U&&Math.round(U))??"",left:(L&&Math.round(L))??""}}),variant:T,ref:I,mod:{multiline:w},children:g})}),E.cloneElement(o,{...Z,[a]:q,onMouseEnter:W,onMouseLeave:G})]})});wD.classes=Fk,wD.displayName="@mantine/core/TooltipFloating";const yse=E.createContext(!1),Eut=yse.Provider,Sut=()=>E.useContext(yse),Cut={openDelay:0,closeDelay:0};function kD(e){const{openDelay:r,closeDelay:n,children:o}=ze("TooltipGroup",Cut,e);return y.jsx(Eut,{value:!0,children:y.jsx(fae,{delay:{open:r,close:n},children:o})})}kD.displayName="@mantine/core/TooltipGroup",kD.extend=e=>e;function Tut(e){if(e===void 0)return{shift:!0,flip:!0};const r={...e};return e.shift===void 0&&(r.shift=!0),e.flip===void 0&&(r.flip=!0),r}function Aut(e){const r=Tut(e.middlewares),n=[nae(e.offset)];return r.shift&&n.push(EN(typeof r.shift=="boolean"?{padding:8}:{padding:8,...r.shift})),r.flip&&n.push(typeof r.flip=="boolean"?gk():gk(r.flip)),n.push(aae({element:e.arrowRef,padding:e.arrowOffset})),r.inline?n.push(typeof r.inline=="boolean"?ub():ub(r.inline)):e.inline&&n.push(ub()),n}function Rut(e){const[r,n]=E.useState(e.defaultOpened),o=typeof e.opened=="boolean"?e.opened:r,a=Sut(),i=Ps(),s=E.useCallback(T=>{n(T),T&&w(i)},[i]),{x:l,y:c,context:u,refs:d,placement:h,middlewareData:{arrow:{x:f,y:g}={}}}=NN({strategy:e.strategy,placement:e.position,open:o,onOpenChange:s,middleware:Aut(e),whileElementsMounted:kN}),{delay:b,currentId:x,setCurrentId:w}=$st(u,{id:i}),{getReferenceProps:k,getFloatingProps:C}=jst([Nst(u,{enabled:e.events?.hover,delay:a?b:{open:e.openDelay,close:e.closeDelay},mouseOnly:!e.events?.touch}),Ost(u,{enabled:e.events?.focus,visibleOnly:!0}),Bst(u,{role:"tooltip"}),zst(u,{enabled:typeof e.opened>"u"})]);th(()=>{e.onPositionChange?.(h)},[h]);const _=o&&x&&x!==i;return{x:l,y:c,arrowX:f,arrowY:g,reference:d.setReference,floating:d.setFloating,getFloatingProps:C,getReferenceProps:k,isGroupPhase:_,opened:o,placement:h}}const bse={position:"top",refProp:"ref",withinPortal:!0,arrowSize:4,arrowOffset:5,arrowRadius:0,arrowPosition:"side",offset:5,transitionProps:{duration:100,transition:"fade"},events:{hover:!0,focus:!1,touch:!1},zIndex:$s("popover"),positionDependencies:[],middlewares:{flip:!0,shift:!0,inline:!1}},Nut=(e,{radius:r,color:n,variant:o,autoContrast:a})=>{const i=e.variantColorResolver({theme:e,color:n||e.primaryColor,autoContrast:a,variant:o||"filled"});return{tooltip:{"--tooltip-radius":r===void 0?void 0:Tn(r),"--tooltip-bg":n?i.background:void 0,"--tooltip-color":n?i.color:void 0}}},Hk=Je((e,r)=>{const n=ze("Tooltip",bse,e),{children:o,position:a,refProp:i,label:s,openDelay:l,closeDelay:c,onPositionChange:u,opened:d,defaultOpened:h,withinPortal:f,radius:g,color:b,classNames:x,styles:w,unstyled:k,style:C,className:_,withArrow:T,arrowSize:A,arrowOffset:R,arrowRadius:D,arrowPosition:N,offset:M,transitionProps:O,multiline:F,events:L,zIndex:U,disabled:P,positionDependencies:V,onClick:I,onMouseEnter:H,onMouseLeave:q,inline:Z,variant:W,keepMounted:G,vars:K,portalProps:j,mod:Y,floatingStrategy:Q,middlewares:J,autoContrast:ie,attributes:ne,target:re,...ge}=ze("Tooltip",bse,n),{dir:De}=Rc(),he=E.useRef(null),me=Rut({position:Pae(De,a),closeDelay:c,openDelay:l,onPositionChange:u,opened:d,defaultOpened:h,events:L,arrowRef:he,arrowOffset:R,offset:typeof M=="number"?M+(T?A/2:0):M,positionDependencies:[...V,re??o],inline:Z,strategy:Q,middlewares:J});E.useEffect(()=>{const Qe=re instanceof HTMLElement?re:typeof re=="string"?document.querySelector(re):re?.current||null;Qe&&me.reference(Qe)},[re,me]);const Te=vt({name:"Tooltip",props:n,classes:Fk,className:_,style:C,classNames:x,styles:w,unstyled:k,attributes:ne,rootSelector:"tooltip",vars:K,varsResolver:Nut});if(!re&&!Ds(o))return null;if(re){const Qe=gse(O,{duration:100,transition:"fade"});return y.jsx(y.Fragment,{children:y.jsx(lh,{...j,withinPortal:f,children:y.jsx(js,{...Qe,keepMounted:G,mounted:!P&&!!me.opened,duration:me.isGroupPhase?10:Qe.duration,children:Pt=>y.jsxs(Le,{...ge,"data-fixed":Q==="fixed"||void 0,variant:W,mod:[{multiline:F},Y],...me.getFloatingProps({ref:me.floating,className:Te("tooltip").className,style:{...Te("tooltip").style,...Pt,zIndex:U,top:me.y??0,left:me.x??0}}),children:[s,y.jsx(wk,{ref:he,arrowX:me.arrowX,arrowY:me.arrowY,visible:T,position:me.placement,arrowSize:A,arrowOffset:R,arrowRadius:D,arrowPosition:N,...Te("arrow")})]})})})})}const Ie=o,Ze=Ie.props,rt=yn(me.reference,Q4(Ie),r),Rt=gse(O,{duration:100,transition:"fade"});return y.jsxs(y.Fragment,{children:[y.jsx(lh,{...j,withinPortal:f,children:y.jsx(js,{...Rt,keepMounted:G,mounted:!P&&!!me.opened,duration:me.isGroupPhase?10:Rt.duration,children:Qe=>y.jsxs(Le,{...ge,"data-fixed":Q==="fixed"||void 0,variant:W,mod:[{multiline:F},Y],...me.getFloatingProps({ref:me.floating,className:Te("tooltip").className,style:{...Te("tooltip").style,...Qe,zIndex:U,top:me.y??0,left:me.x??0}}),children:[s,y.jsx(wk,{ref:he,arrowX:me.arrowX,arrowY:me.arrowY,visible:T,position:me.placement,arrowSize:A,arrowOffset:R,arrowRadius:D,arrowPosition:N,...Te("arrow")})]})})}),E.cloneElement(Ie,me.getReferenceProps({onClick:I,onMouseEnter:H,onMouseLeave:q,onMouseMove:n.onMouseMove,onPointerDown:n.onPointerDown,onPointerEnter:n.onPointerEnter,className:ho(_,Ze.className),...Ze,[i]:rt}))]})});Hk.classes=Fk,Hk.displayName="@mantine/core/Tooltip",Hk.Floating=wD,Hk.Group=kD;var vse={root:"m_cf365364",indicator:"m_9e182ccd",label:"m_1738fcb2",input:"m_1714d588",control:"m_69686b9b",innerLabel:"m_78882f40"};const Dut={withItemsBorders:!0},$ut=(e,{radius:r,color:n,transitionDuration:o,size:a,transitionTimingFunction:i})=>({root:{"--sc-radius":r===void 0?void 0:Tn(r),"--sc-color":n?Jo(n,e):void 0,"--sc-shadow":n?void 0:"var(--mantine-shadow-xs)","--sc-transition-duration":o===void 0?void 0:`${o}ms`,"--sc-transition-timing-function":i,"--sc-padding":ur(a,"sc-padding"),"--sc-font-size":Fo(a)}}),xse=Je((e,r)=>{const n=ze("SegmentedControl",Dut,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,data:u,value:d,defaultValue:h,onChange:f,size:g,name:b,disabled:x,readOnly:w,fullWidth:k,orientation:C,radius:_,color:T,transitionDuration:A,transitionTimingFunction:R,variant:D,autoContrast:N,withItemsBorders:M,mod:O,attributes:F,...L}=n,U=vt({name:"SegmentedControl",props:n,classes:vse,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:F,vars:c,varsResolver:$ut}),P=_o(),V=u.map(re=>typeof re=="string"?{label:re,value:re}:re),I=Uot(),[H,q]=E.useState(YR()),[Z,W]=E.useState(null),[G,K]=E.useState({}),j=(re,ge)=>{G[ge]=re,K(G)},[Y,Q]=Qu({value:d,defaultValue:h,finalValue:Array.isArray(u)?V.find(re=>!re.disabled)?.value??u[0]?.value??null:null,onChange:f}),J=Ps(b),ie=V.map(re=>E.createElement(Le,{...U("control"),mod:{active:Y===re.value,orientation:C},key:re.value},E.createElement("input",{...U("input"),disabled:x||re.disabled,type:"radio",name:J,value:re.value,id:`${J}-${re.value}`,checked:Y===re.value,onChange:()=>!w&&Q(re.value),"data-focus-ring":P.focusRing,key:`${re.value}-input`}),E.createElement(Le,{component:"label",...U("label"),mod:{active:Y===re.value&&!(x||re.disabled),disabled:x||re.disabled,"read-only":w},htmlFor:`${J}-${re.value}`,ref:ge=>j(ge,re.value),__vars:{"--sc-label-color":T!==void 0?JR({color:T,theme:P,autoContrast:N}):void 0},key:`${re.value}-label`},y.jsx("span",{...U("innerLabel"),children:re.label})))),ne=yn(r,re=>W(re));return Bot(()=>{q(YR())},[u.length]),u.length===0?null:y.jsxs(Le,{...U("root"),variant:D,size:g,ref:ne,mod:[{"full-width":k,orientation:C,initialized:I,"with-items-borders":M},O],...L,role:"radiogroup","data-disabled":x,children:[typeof Y=="string"&&y.jsx(XN,{target:G[Y],parent:Z,component:"span",transitionDuration:"var(--sc-transition-duration)",...U("indicator")},H),ie]})});xse.classes=vse,xse.displayName="@mantine/core/SegmentedControl";const Mut={withCheckIcon:!0,allowDeselect:!0,checkIconPosition:"left"},wse=Je((e,r)=>{const n=ze("Select",Mut,e),{classNames:o,styles:a,unstyled:i,vars:s,dropdownOpened:l,defaultDropdownOpened:c,onDropdownClose:u,onDropdownOpen:d,onFocus:h,onBlur:f,onClick:g,onChange:b,data:x,value:w,defaultValue:k,selectFirstOptionOnChange:C,onOptionSubmit:_,comboboxProps:T,readOnly:A,disabled:R,filter:D,limit:N,withScrollArea:M,maxDropdownHeight:O,size:F,searchable:L,rightSection:U,checkIconPosition:P,withCheckIcon:V,nothingFoundMessage:I,name:H,form:q,searchValue:Z,defaultSearchValue:W,onSearchChange:G,allowDeselect:K,error:j,rightSectionPointerEvents:Y,id:Q,clearable:J,clearButtonProps:ie,hiddenInputProps:ne,renderOption:re,onClear:ge,autoComplete:De,scrollAreaProps:he,__defaultRightSection:me,__clearSection:Te,__clearable:Ie,chevronColor:Ze,autoSelectOnBlur:rt,attributes:Rt,...Qe}=n,Pt=E.useMemo(()=>rct(x),[x]),Ke=E.useRef({}),Ge=E.useMemo(()=>pie(Pt),[Pt]),ct=Ps(Q),[ut,Ir,Ee]=Qu({value:w,defaultValue:k,finalValue:null,onChange:b}),Se=typeof ut=="string"?ut in Ge?Ge[ut]:Ke.current[ut]:void 0,it=Vot(Se),[xt,zt,Fr]=Qu({value:Z,defaultValue:W,finalValue:Se?Se.label:"",onChange:G}),It=bie({opened:l,defaultOpened:c,onDropdownOpen:()=>{d?.(),It.updateSelectedOptionIndex("active",{scrollIntoView:!0})},onDropdownClose:()=>{u?.(),setTimeout(It.resetSelectedOption,0)}}),vr=xr=>{zt(xr),It.resetSelectedOption()},{resolvedClassNames:fr,resolvedStyles:un}=eN({props:n,styles:a,classNames:o});E.useEffect(()=>{C&&It.selectFirstOption()},[C,xt]),E.useEffect(()=>{w===null&&vr(""),typeof w=="string"&&Se&&(it?.value!==Se.value||it?.label!==Se.label)&&vr(Se.label)},[w,Se]),E.useEffect(()=>{!Ee&&!Fr&&vr(typeof ut=="string"?ut in Ge?Ge[ut]?.label:Ke.current[ut]?.label||"":"")},[Ge,ut]),E.useEffect(()=>{ut&&ut in Ge&&(Ke.current[ut]=Ge[ut])},[Ge,ut]);const ir=y.jsx(Nr.ClearButton,{...ie,onClear:()=>{Ir(null,null),vr(""),ge?.()}}),vn=J&&!!ut&&!R&&!A;return y.jsxs(y.Fragment,{children:[y.jsxs(Nr,{store:It,__staticSelector:"Select",classNames:fr,styles:un,unstyled:i,readOnly:A,size:F,attributes:Rt,keepMounted:rt,onOptionSubmit:xr=>{_?.(xr);const ea=K&&Ge[xr].value===ut?null:Ge[xr],xa=ea?ea.value:null;xa!==ut&&Ir(xa,ea),!Ee&&vr(typeof xa=="string"&&ea?.label||""),It.closeDropdown()},...T,children:[y.jsx(Nr.Target,{targetType:L?"input":"button",autoComplete:De,children:y.jsx(Rk,{id:ct,ref:r,__defaultRightSection:y.jsx(Nr.Chevron,{size:F,error:j,unstyled:i,color:Ze}),__clearSection:ir,__clearable:vn,rightSection:U,rightSectionPointerEvents:Y||"none",...Qe,size:F,__staticSelector:"Select",disabled:R,readOnly:A||!L,value:xt,onChange:xr=>{vr(xr.currentTarget.value),It.openDropdown(),C&&It.selectFirstOption()},onFocus:xr=>{L&&It.openDropdown(),h?.(xr)},onBlur:xr=>{rt&&It.clickSelectedOption(),L&&It.closeDropdown();const ea=typeof ut=="string"&&(ut in Ge?Ge[ut]:Ke.current[ut]);vr(ea&&ea.label||""),f?.(xr)},onClick:xr=>{L?It.openDropdown():It.toggleDropdown(),g?.(xr)},classNames:fr,styles:un,unstyled:i,pointer:!L,error:j,attributes:Rt})}),y.jsx(vct,{data:Pt,hidden:A||R,filter:D,search:xt,limit:N,hiddenWhenEmpty:!I,withScrollArea:M,maxDropdownHeight:O,filterOptions:!!L&&Se?.label!==xt,value:ut,checkIconPosition:P,withCheckIcon:V,nothingFoundMessage:I,unstyled:i,labelId:Qe.label?`${ct}-label`:void 0,"aria-label":Qe.label?void 0:Qe["aria-label"],renderOption:re,scrollAreaProps:he})]}),y.jsx(Nr.HiddenInput,{value:ut,name:H,form:q,disabled:R,...ne})]})});wse.classes={...Rk.classes,...Nr.classes},wse.displayName="@mantine/core/Select";function Put({spacing:e,verticalSpacing:r,cols:n,selector:o}){const a=_o(),i=r===void 0?e:r,s=Zu({"--sg-spacing-x":po(Ms(e)),"--sg-spacing-y":po(Ms(i)),"--sg-cols":Ms(n)?.toString()}),l=Bo(a.breakpoints).reduce((u,d)=>(u[d]||(u[d]={}),typeof e=="object"&&e[d]!==void 0&&(u[d]["--sg-spacing-x"]=po(e[d])),typeof i=="object"&&i[d]!==void 0&&(u[d]["--sg-spacing-y"]=po(i[d])),typeof n=="object"&&n[d]!==void 0&&(u[d]["--sg-cols"]=n[d]),u),{}),c=WR(Bo(l),a.breakpoints).filter(u=>Bo(l[u.value]).length>0).map(u=>({query:`(min-width: ${a.breakpoints[u.value]})`,styles:l[u.value]}));return y.jsx(sg,{styles:s,media:c,selector:o})}function _D(e){return typeof e=="object"&&e!==null?Bo(e):[]}function zut(e){return e.sort((r,n)=>K4(r)-K4(n))}function Iut({spacing:e,verticalSpacing:r,cols:n}){const o=Array.from(new Set([..._D(e),..._D(r),..._D(n)]));return zut(o)}function Out({spacing:e,verticalSpacing:r,cols:n,selector:o}){const a=r===void 0?e:r,i=Zu({"--sg-spacing-x":po(Ms(e)),"--sg-spacing-y":po(Ms(a)),"--sg-cols":Ms(n)?.toString()}),s=Iut({spacing:e,verticalSpacing:r,cols:n}),l=s.reduce((u,d)=>(u[d]||(u[d]={}),typeof e=="object"&&e[d]!==void 0&&(u[d]["--sg-spacing-x"]=po(e[d])),typeof a=="object"&&a[d]!==void 0&&(u[d]["--sg-spacing-y"]=po(a[d])),typeof n=="object"&&n[d]!==void 0&&(u[d]["--sg-cols"]=n[d]),u),{}),c=s.map(u=>({query:`simple-grid (min-width: ${u})`,styles:l[u]}));return y.jsx(sg,{styles:i,container:c,selector:o})}var kse={container:"m_925c2d2c",root:"m_2415a157"};const jut={cols:1,spacing:"md",type:"media"},_se=Je((e,r)=>{const n=ze("SimpleGrid",jut,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,cols:u,verticalSpacing:d,spacing:h,type:f,attributes:g,...b}=n,x=vt({name:"SimpleGrid",classes:kse,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,vars:c}),w=ib();return f==="container"?y.jsxs(y.Fragment,{children:[y.jsx(Out,{...n,selector:`.${w}`}),y.jsx("div",{...x("container"),children:y.jsx(Le,{ref:r,...x("root",{className:w}),...b})})]}):y.jsxs(y.Fragment,{children:[y.jsx(Put,{...n,selector:`.${w}`}),y.jsx(Le,{ref:r,...x("root",{className:w}),...b})]})});_se.classes=kse,_se.displayName="@mantine/core/SimpleGrid";const[Lut,Vk]=qa("SliderProvider was not found in tree"),Ese=E.forwardRef(({size:e,disabled:r,variant:n,color:o,thumbSize:a,radius:i,...s},l)=>{const{getStyles:c}=Vk();return y.jsx(Le,{tabIndex:-1,variant:n,size:e,ref:l,...c("root"),...s})});Ese.displayName="@mantine/core/SliderRoot";const Sse=E.forwardRef(({max:e,min:r,value:n,position:o,label:a,dragging:i,onMouseDown:s,onKeyDownCapture:l,labelTransitionProps:c,labelAlwaysOn:u,thumbLabel:d,onFocus:h,onBlur:f,showLabelOnHover:g,isHovered:b,children:x=null,disabled:w},k)=>{const{getStyles:C}=Vk(),[_,T]=E.useState(!1),A=u||i||_||g&&b;return y.jsxs(Le,{tabIndex:0,role:"slider","aria-label":d,"aria-valuemax":e,"aria-valuemin":r,"aria-valuenow":n,ref:k,__vars:{"--slider-thumb-offset":`${o}%`},...C("thumb",{focusable:!0}),mod:{dragging:i,disabled:w},onFocus:R=>{T(!0),typeof h=="function"&&h(R)},onBlur:R=>{T(!1),typeof f=="function"&&f(R)},onTouchStart:s,onMouseDown:s,onKeyDownCapture:l,onClick:R=>R.stopPropagation(),children:[x,y.jsx(js,{mounted:a!=null&&!!A,transition:"fade",duration:0,...c,children:R=>y.jsx("div",{...C("label",{style:R}),children:a})})]})});Sse.displayName="@mantine/core/SliderThumb";function Cse({value:e,min:r,max:n}){const o=(e-r)/(n-r)*100;return Math.min(Math.max(o,0),100)}function But({mark:e,offset:r,value:n,inverted:o=!1}){return o?typeof r=="number"&&e.value<=r||e.value>=n:typeof r=="number"?e.value>=r&&e.value<=n:e.value<=n}function Tse({marks:e,min:r,max:n,disabled:o,value:a,offset:i,inverted:s}){const{getStyles:l}=Vk();if(!e)return null;const c=e.map((u,d)=>E.createElement(Le,{...l("markWrapper"),__vars:{"--mark-offset":`${Cse({value:u.value,min:r,max:n})}%`},key:d},y.jsx(Le,{...l("mark"),mod:{filled:But({mark:u,value:a,offset:i,inverted:s}),disabled:o}}),u.label&&y.jsx("div",{...l("markLabel"),children:u.label})));return y.jsx("div",{children:c})}Tse.displayName="@mantine/core/SliderMarks";function Ase({filled:e,children:r,offset:n,disabled:o,marksOffset:a,inverted:i,containerProps:s,...l}){const{getStyles:c}=Vk();return y.jsx(Le,{...c("trackContainer"),mod:{disabled:o},...s,children:y.jsxs(Le,{...c("track"),mod:{inverted:i,disabled:o},children:[y.jsx(Le,{mod:{inverted:i,disabled:o},__vars:{"--slider-bar-width":`calc(${e}% + 2 * var(--slider-size))`,"--slider-bar-offset":`calc(${n}% - var(--slider-size))`},...c("bar")}),r,y.jsx(Tse,{...l,offset:a,disabled:o,inverted:i})]})})}Ase.displayName="@mantine/core/SliderTrack";function Fut({value:e,containerWidth:r,min:n,max:o,step:a,precision:i}){const s=(r?Math.min(Math.max(e,0),r)/r:e)*(o-n),l=(s!==0?Math.round(s/a)*a:0)+n,c=Math.max(l,n);return i!==void 0?Number(c.toFixed(i)):c}function qk(e,r){return parseFloat(e.toFixed(r))}function Hut(e){if(!e)return 0;const r=e.toString().split(".");return r.length>1?r[1].length:0}function ED(e,r){const n=[...r].sort((o,a)=>o.value-a.value).find(o=>o.value>e);return n?n.value:e}function SD(e,r){const n=[...r].sort((o,a)=>a.value-o.value).find(o=>o.valuen.value-o.value);return r.length>0?r[0].value:0}function Nse(e){const r=[...e].sort((n,o)=>n.value-o.value);return r.length>0?r[r.length-1].value:100}var Dse={root:"m_dd36362e",label:"m_c9357328",thumb:"m_c9a9a60a",trackContainer:"m_a8645c2",track:"m_c9ade57f",bar:"m_38aeed47",markWrapper:"m_b7b0423a",mark:"m_dd33bc19",markLabel:"m_68c77a5b"};const Vut={radius:"xl",min:0,max:100,step:1,marks:[],label:e=>e,labelTransitionProps:{transition:"fade",duration:0},thumbLabel:"",showLabelOnHover:!0,scale:e=>e,size:"md"},qut=(e,{size:r,color:n,thumbSize:o,radius:a})=>({root:{"--slider-size":ur(r,"slider-size"),"--slider-color":n?Jo(n,e):void 0,"--slider-radius":a===void 0?void 0:Tn(a),"--slider-thumb-size":o!==void 0?qe(o):"calc(var(--slider-size) * 2)"}}),$se=Je((e,r)=>{const n=ze("Slider",Vut,e),{classNames:o,styles:a,value:i,onChange:s,onChangeEnd:l,size:c,min:u,max:d,domain:h,step:f,precision:g,defaultValue:b,name:x,marks:w,label:k,labelTransitionProps:C,labelAlwaysOn:_,thumbLabel:T,showLabelOnHover:A,thumbChildren:R,disabled:D,unstyled:N,scale:M,inverted:O,className:F,style:L,vars:U,hiddenInputProps:P,restrictToMarks:V,thumbProps:I,attributes:H,...q}=n,Z=vt({name:"Slider",props:n,classes:Dse,classNames:o,className:F,styles:a,style:L,attributes:H,vars:U,varsResolver:qut,unstyled:N}),{dir:W}=Rc(),[G,K]=E.useState(!1),[j,Y]=Qu({value:typeof i=="number"?og(i,u,d):i,defaultValue:typeof b=="number"?og(b,u,d):b,finalValue:og(0,u,d),onChange:s}),Q=E.useRef(j),J=E.useRef(l);E.useEffect(()=>{J.current=l},[l]);const ie=E.useRef(null),ne=E.useRef(null),[re,ge]=h||[u,d],De=Cse({value:j,min:re,max:ge}),he=M(j),me=typeof k=="function"?k(he):k,Te=g??Hut(f),Ie=E.useCallback(({x:Ke})=>{if(!D){const Ge=Fut({value:Ke,min:re,max:ge,step:f,precision:Te}),ct=og(Ge,u,d);Y(V&&w?.length?boe(ct,w.map(ut=>ut.value)):ct),Q.current=ct}},[D,u,d,re,ge,f,Te,Y,w,V]),Ze=E.useCallback(()=>{if(!D&&J.current){const Ke=V&&w?.length?boe(Q.current,w.map(Ge=>Ge.value)):Q.current;J.current(Ke)}},[D,w,V]),{ref:rt,active:Rt}=Oot(Ie,{onScrubEnd:Ze},W),Qe=E.useCallback(Ke=>{!D&&J.current&&J.current(Ke)},[D]),Pt=Ke=>{if(!D)switch(Ke.key){case"ArrowUp":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=ED(j,w);Y(ct),Qe(ct);break}const Ge=qk(Math.min(Math.max(j+f,u),d),Te);Y(Ge),Qe(Ge);break}case"ArrowRight":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=W==="rtl"?SD(j,w):ED(j,w);Y(ct),Qe(ct);break}const Ge=qk(Math.min(Math.max(W==="rtl"?j-f:j+f,u),d),Te);Y(Ge),Qe(Ge);break}case"ArrowDown":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=SD(j,w);Y(ct),Qe(ct);break}const Ge=qk(Math.min(Math.max(j-f,u),d),Te);Y(Ge),Qe(Ge);break}case"ArrowLeft":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){const ct=W==="rtl"?ED(j,w):SD(j,w);Y(ct),Qe(ct);break}const Ge=qk(Math.min(Math.max(W==="rtl"?j+f:j-f,u),d),Te);Y(Ge),Qe(Ge);break}case"Home":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){Y(Rse(w)),Qe(Rse(w));break}Y(u),Qe(u);break}case"End":{if(Ke.preventDefault(),ne.current?.focus(),V&&w){Y(Nse(w)),Qe(Nse(w));break}Y(d),Qe(d);break}}};return y.jsx(Lut,{value:{getStyles:Z},children:y.jsxs(Ese,{...q,ref:yn(r,ie),onKeyDownCapture:Pt,onMouseDownCapture:()=>ie.current?.focus(),size:c,disabled:D,children:[y.jsx(Ase,{inverted:O,offset:0,filled:De,marks:w,min:re,max:ge,value:he,disabled:D,containerProps:{ref:rt,onMouseEnter:A?()=>K(!0):void 0,onMouseLeave:A?()=>K(!1):void 0},children:y.jsx(Sse,{max:ge,min:re,value:he,position:De,dragging:Rt,label:me,ref:ne,labelTransitionProps:C,labelAlwaysOn:_,thumbLabel:T,showLabelOnHover:A,isHovered:G,disabled:D,...I,children:R})}),y.jsx("input",{type:"hidden",name:x,value:he,...P})]})})});$se.classes=Dse,$se.displayName="@mantine/core/Slider";const Uut=Je((e,r)=>{const{w:n,h:o,miw:a,mih:i,...s}=ze("Space",null,e);return y.jsx(Le,{ref:r,...s,w:n,miw:a??n,h:o,mih:i??o})});Uut.displayName="@mantine/core/Space";var Mse={root:"m_6d731127"};const Wut={gap:"md",align:"stretch",justify:"flex-start"},Yut=(e,{gap:r,align:n,justify:o})=>({root:{"--stack-gap":po(r),"--stack-align":n,"--stack-justify":o}}),Pse=Je((e,r)=>{const n=ze("Stack",Wut,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,align:u,justify:d,gap:h,variant:f,attributes:g,...b}=n,x=vt({name:"Stack",props:n,classes:Mse,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:g,vars:c,varsResolver:Yut});return y.jsx(Le,{ref:r,...x("root"),variant:f,...b})});Pse.classes=Mse,Pse.displayName="@mantine/core/Stack";const[Gut,CD]=qa("Tabs component was not found in the tree");var gb={root:"m_89d60db1","list--default":"m_576c9d4",list:"m_89d33d6d",tab:"m_4ec4dce6",panel:"m_b0c91715",tabSection:"m_fc420b1f",tabLabel:"m_42bbd1ae","tab--default":"m_539e827b","list--outline":"m_6772fbd5","tab--outline":"m_b59ab47c","tab--pills":"m_c3381914"};const TD=Je((e,r)=>{const n=ze("TabsList",null,e),{children:o,className:a,grow:i,justify:s,classNames:l,styles:c,style:u,mod:d,...h}=n,f=CD();return y.jsx(Le,{...h,...f.getStyles("list",{className:a,style:u,classNames:l,styles:c,props:n,variant:f.variant}),ref:r,role:"tablist",variant:f.variant,mod:[{grow:i,orientation:f.orientation,placement:f.orientation==="vertical"&&f.placement,inverted:f.inverted},d],"aria-orientation":f.orientation,__vars:{"--tabs-justify":s},children:o})});TD.classes=gb,TD.displayName="@mantine/core/TabsList";const AD=Je((e,r)=>{const n=ze("TabsPanel",null,e),{children:o,className:a,value:i,classNames:s,styles:l,style:c,mod:u,keepMounted:d,...h}=n,f=CD(),g=f.value===i,b=f.keepMounted||d||g?o:null;return y.jsx(Le,{...f.getStyles("panel",{className:a,classNames:s,styles:l,style:[c,g?void 0:{display:"none"}],props:n}),ref:r,mod:[{orientation:f.orientation},u],role:"tabpanel",id:f.getPanelId(i),"aria-labelledby":f.getTabId(i),...h,children:b})});AD.classes=gb,AD.displayName="@mantine/core/TabsPanel";const RD=Je((e,r)=>{const n=ze("TabsTab",null,e),{className:o,children:a,rightSection:i,leftSection:s,value:l,onClick:c,onKeyDown:u,disabled:d,color:h,style:f,classNames:g,styles:b,vars:x,mod:w,tabIndex:k,...C}=n,_=_o(),{dir:T}=Rc(),A=CD(),R=l===A.value,D=M=>{A.onChange(A.allowTabDeactivation&&l===A.value?null:l),c?.(M)},N={classNames:g,styles:b,props:n};return y.jsxs(Nl,{...A.getStyles("tab",{className:o,style:f,variant:A.variant,...N}),disabled:d,unstyled:A.unstyled,variant:A.variant,mod:[{active:R,disabled:d,orientation:A.orientation,inverted:A.inverted,placement:A.orientation==="vertical"&&A.placement},w],ref:r,role:"tab",id:A.getTabId(l),"aria-selected":R,tabIndex:k!==void 0?k:R||A.value===null?0:-1,"aria-controls":A.getPanelId(l),onClick:D,__vars:{"--tabs-color":h?Jo(h,_):void 0},onKeyDown:qR({siblingSelector:'[role="tab"]',parentSelector:'[role="tablist"]',activateOnFocus:A.activateTabWithKeyboard,loop:A.loop,orientation:A.orientation||"horizontal",dir:T,onKeyDown:u}),...C,children:[s&&y.jsx("span",{...A.getStyles("tabSection",N),"data-position":"left",children:s}),a&&y.jsx("span",{...A.getStyles("tabLabel",N),children:a}),i&&y.jsx("span",{...A.getStyles("tabSection",N),"data-position":"right",children:i})]})});RD.classes=gb,RD.displayName="@mantine/core/TabsTab";const zse="Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value",Xut={keepMounted:!0,orientation:"horizontal",loop:!0,activateTabWithKeyboard:!0,variant:"default",placement:"left"},Kut=(e,{radius:r,color:n,autoContrast:o})=>({root:{"--tabs-radius":Tn(r),"--tabs-color":Jo(n,e),"--tabs-text-color":Tat(o,e)?JR({color:n,theme:e,autoContrast:o}):void 0}}),yb=Je((e,r)=>{const n=ze("Tabs",Xut,e),{defaultValue:o,value:a,onChange:i,orientation:s,children:l,loop:c,id:u,activateTabWithKeyboard:d,allowTabDeactivation:h,variant:f,color:g,radius:b,inverted:x,placement:w,keepMounted:k,classNames:C,styles:_,unstyled:T,className:A,style:R,vars:D,autoContrast:N,mod:M,attributes:O,...F}=n,L=Ps(u),[U,P]=Qu({value:a,defaultValue:o,finalValue:null,onChange:i}),V=vt({name:"Tabs",props:n,classes:gb,className:A,style:R,classNames:C,styles:_,unstyled:T,attributes:O,vars:D,varsResolver:Kut});return y.jsx(Gut,{value:{placement:w,value:U,orientation:s,id:L,loop:c,activateTabWithKeyboard:d,getTabId:uoe(`${L}-tab`,zse),getPanelId:uoe(`${L}-panel`,zse),onChange:P,allowTabDeactivation:h,variant:f,color:g,radius:b,inverted:x,keepMounted:k,unstyled:T,getStyles:V},children:y.jsx(Le,{ref:r,id:L,variant:f,mod:[{orientation:s,inverted:s==="horizontal"&&x,placement:s==="vertical"&&w},M],...V("root"),...F,children:l})})});yb.classes=gb,yb.displayName="@mantine/core/Tabs",yb.Tab=RD,yb.Panel=AD,yb.List=TD;var Ise={root:"m_7341320d"};const Zut=(e,{size:r,radius:n,variant:o,gradient:a,color:i,autoContrast:s})=>{const l=e.variantColorResolver({color:i||e.primaryColor,theme:e,gradient:a,variant:o||"filled",autoContrast:s});return{root:{"--ti-size":ur(r,"ti-size"),"--ti-radius":n===void 0?void 0:Tn(n),"--ti-bg":i||o?l.background:void 0,"--ti-color":i||o?l.color:void 0,"--ti-bd":i||o?l.border:void 0}}},Ose=Je((e,r)=>{const n=ze("ThemeIcon",null,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,autoContrast:u,attributes:d,...h}=n,f=vt({name:"ThemeIcon",classes:Ise,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:d,vars:c,varsResolver:Zut});return y.jsx(Le,{ref:r,...f("root"),...h})});Ose.classes=Ise,Ose.displayName="@mantine/core/ThemeIcon";const Qut=["h1","h2","h3","h4","h5","h6"],Jut=["xs","sm","md","lg","xl"];function edt(e,r){const n=r!==void 0?r:`h${e}`;return Qut.includes(n)?{fontSize:`var(--mantine-${n}-font-size)`,fontWeight:`var(--mantine-${n}-font-weight)`,lineHeight:`var(--mantine-${n}-line-height)`}:Jut.includes(n)?{fontSize:`var(--mantine-font-size-${n})`,fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}:{fontSize:qe(n),fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}}var jse={root:"m_8a5d1357"};const tdt={order:1},rdt=(e,{order:r,size:n,lineClamp:o,textWrap:a})=>{const i=edt(r||1,n);return{root:{"--title-fw":i.fontWeight,"--title-lh":i.lineHeight,"--title-fz":i.fontSize,"--title-line-clamp":typeof o=="number"?o.toString():void 0,"--title-text-wrap":a}}},Lse=Je((e,r)=>{const n=ze("Title",tdt,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,order:c,vars:u,size:d,variant:h,lineClamp:f,textWrap:g,mod:b,attributes:x,...w}=n,k=vt({name:"Title",props:n,classes:jse,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:x,vars:u,varsResolver:rdt});return[1,2,3,4,5,6].includes(c)?y.jsx(Le,{...k("root"),component:`h${c}`,variant:h,ref:r,mod:[{order:c,"data-line-clamp":typeof f=="number"},b],size:d,...w}):null});Lse.classes=jse,Lse.displayName="@mantine/core/Title";function Bse(e,r,n){if(!e||!r)return[];const o=n.indexOf(e),a=n.indexOf(r),i=Math.min(o,a),s=Math.max(o,a);return n.slice(i,s+1)}function ND({node:e,getStyles:r,rootIndex:n,controller:o,expandOnClick:a,selectOnClick:i,isSubtree:s,level:l=1,renderNode:c,flatValues:u,allowRangeSelection:d,expandOnSpace:h,checkOnSpace:f}){const g=E.useRef(null),b=(e.children||[]).map(_=>y.jsx(ND,{node:_,flatValues:u,getStyles:r,rootIndex:void 0,level:l+1,controller:o,expandOnClick:a,isSubtree:!0,renderNode:c,selectOnClick:i,allowRangeSelection:d,expandOnSpace:h,checkOnSpace:f},_.value)),x=_=>{if(_.nativeEvent.code==="ArrowRight"&&(_.stopPropagation(),_.preventDefault(),o.expandedState[e.value]?_.currentTarget.querySelector("[role=treeitem]")?.focus():o.expand(e.value)),_.nativeEvent.code==="ArrowLeft"&&(_.stopPropagation(),_.preventDefault(),o.expandedState[e.value]&&(e.children||[]).length>0?o.collapse(e.value):s&&nb(_.currentTarget,"[role=treeitem]")?.focus()),_.nativeEvent.code==="ArrowDown"||_.nativeEvent.code==="ArrowUp"){const T=nb(_.currentTarget,"[data-tree-root]");if(!T)return;_.stopPropagation(),_.preventDefault();const A=Array.from(T.querySelectorAll("[role=treeitem]")),R=A.indexOf(_.currentTarget);if(R===-1)return;const D=_.nativeEvent.code==="ArrowDown"?R+1:R-1;if(A[D]?.focus(),_.shiftKey){const N=A[D];N&&o.setSelectedState(Bse(o.anchorNode,N.dataset.value,u))}}_.nativeEvent.code==="Space"&&(h&&(_.stopPropagation(),_.preventDefault(),o.toggleExpanded(e.value)),f&&(_.stopPropagation(),_.preventDefault(),o.isNodeChecked(e.value)?o.uncheckNode(e.value):o.checkNode(e.value)))},w=_=>{_.stopPropagation(),d&&_.shiftKey&&o.anchorNode?(o.setSelectedState(Bse(o.anchorNode,e.value,u)),g.current?.focus()):(a&&o.toggleExpanded(e.value),i&&o.select(e.value),g.current?.focus())},k=o.selectedState.includes(e.value),C={...r("label"),onClick:w,"data-selected":k||void 0,"data-value":e.value,"data-hovered":o.hoveredNode===e.value||void 0};return y.jsxs("li",{...r("node",{style:{"--label-offset":`calc(var(--level-offset) * ${l-1})`}}),role:"treeitem","aria-selected":k,"data-value":e.value,"data-selected":k||void 0,"data-hovered":o.hoveredNode===e.value||void 0,"data-level":l,tabIndex:n===0?0:-1,onKeyDown:x,ref:g,onMouseOver:_=>{_.stopPropagation(),o.setHoveredNode(e.value)},onMouseLeave:_=>{_.stopPropagation(),o.setHoveredNode(null)},children:[typeof c=="function"?c({node:e,level:l,selected:k,tree:o,expanded:o.expandedState[e.value]||!1,hasChildren:Array.isArray(e.children)&&e.children.length>0,elementProps:C}):y.jsx("div",{...C,children:e.label}),o.expandedState[e.value]&&b.length>0&&y.jsx(Le,{component:"ul",role:"group",...r("subtree"),"data-level":l,children:b})]})}ND.displayName="@mantine/core/TreeNode";function Uk(e,r,n=[]){const o=[];for(const a of e)if(Array.isArray(a.children)&&a.children.length>0){const i=Uk(a.children,r,n);if(i.currentTreeChecked.length===a.children.length){const s=i.currentTreeChecked.every(c=>c.checked),l={checked:s,indeterminate:!s,value:a.value,hasChildren:!0};o.push(l),n.push(l)}else if(i.currentTreeChecked.length>0){const s={checked:!1,indeterminate:!0,value:a.value,hasChildren:!0};o.push(s),n.push(s)}}else if(r.includes(a.value)){const i={checked:!0,indeterminate:!1,value:a.value,hasChildren:!1};o.push(i),n.push(i)}return{result:n,currentTreeChecked:o}}function Fse(e,r){for(const n of r){if(n.value===e)return n;if(Array.isArray(n.children)){const o=Fse(e,n.children);if(o)return o}}return null}function Wk(e,r,n=[]){const o=Fse(e,r);return o?!Array.isArray(o.children)||o.children.length===0?[o.value]:(o.children.forEach(a=>{Array.isArray(a.children)&&a.children.length>0?Wk(a.value,r,n):n.push(a.value)}),n):n}function Hse(e){return e.reduce((r,n)=>(Array.isArray(n.children)&&n.children.length>0?r.push(...Hse(n.children)):r.push(n.value),r),[])}function ndt(e,r,n){return n.length===0?!1:n.includes(e)?!0:Uk(r,n).result.some(o=>o.value===e&&o.checked)}const odt=yoe(ndt);function adt(e,r,n){return n.length===0?!1:Uk(r,n).result.some(o=>o.value===e&&o.indeterminate)}const idt=yoe(adt);function Vse(e,r,n,o={}){return r.forEach(a=>{o[a.value]=a.value in e?e[a.value]:a.value===n,Array.isArray(a.children)&&Vse(e,a.children,n,o)}),o}function sdt(e,r){const n=[];return e.forEach(o=>n.push(...Wk(o,r))),Array.from(new Set(n))}function ldt({initialSelectedState:e=[],initialCheckedState:r=[],initialExpandedState:n={},multiple:o=!1,onNodeCollapse:a,onNodeExpand:i}={}){const[s,l]=E.useState([]),[c,u]=E.useState(n),[d,h]=E.useState(e),[f,g]=E.useState(r),[b,x]=E.useState(null),[w,k]=E.useState(null),C=E.useCallback(I=>{u(H=>Vse(H,I,d)),g(H=>sdt(H,I)),l(I)},[d,f]),_=E.useCallback(I=>{u(H=>{const q={...H,[I]:!H[I]};return q[I]?i?.(I):a?.(I),q})},[a,i]),T=E.useCallback(I=>{u(H=>(H[I]!==!1&&a?.(I),{...H,[I]:!1}))},[a]),A=E.useCallback(I=>{u(H=>(H[I]!==!0&&i?.(I),{...H,[I]:!0}))},[i]),R=E.useCallback(()=>{u(I=>{const H={...I};return Object.keys(H).forEach(q=>{H[q]=!0}),H})},[]),D=E.useCallback(()=>{u(I=>{const H={...I};return Object.keys(H).forEach(q=>{H[q]=!1}),H})},[]),N=E.useCallback(I=>h(H=>o?H.includes(I)?(x(null),H.filter(q=>q!==I)):(x(I),[...H,I]):H.includes(I)?(x(null),[]):(x(I),[I])),[]),M=E.useCallback(I=>{x(I),h(H=>o?H.includes(I)?H:[...H,I]:[I])},[]),O=E.useCallback(I=>{b===I&&x(null),h(H=>H.filter(q=>q!==I))},[]),F=E.useCallback(()=>{h([]),x(null)},[]),L=E.useCallback(I=>{const H=Wk(I,s);g(q=>Array.from(new Set([...q,...H])))},[s]),U=E.useCallback(I=>{const H=Wk(I,s);g(q=>q.filter(Z=>!H.includes(Z)))},[s]),P=E.useCallback(()=>{g(()=>Hse(s))},[s]),V=E.useCallback(()=>{g([])},[]);return{multiple:o,expandedState:c,selectedState:d,checkedState:f,anchorNode:b,initialize:C,toggleExpanded:_,collapse:T,expand:A,expandAllNodes:R,collapseAllNodes:D,setExpandedState:u,checkNode:L,uncheckNode:U,checkAllNodes:P,uncheckAllNodes:V,setCheckedState:g,toggleSelected:N,select:M,deselect:O,clearSelected:F,setSelectedState:h,hoveredNode:w,setHoveredNode:k,getCheckedNodes:()=>Uk(s,f).result,isNodeChecked:I=>odt(I,s,f),isNodeIndeterminate:I=>idt(I,s,f)}}var qse={root:"m_f698e191",subtree:"m_75f3ecf",node:"m_f6970eb1",label:"m_dc283425"};function Use(e){return e.reduce((r,n)=>(r.push(n.value),n.children&&r.push(...Use(n.children)),r),[])}const cdt={expandOnClick:!0,allowRangeSelection:!0,expandOnSpace:!0},udt=(e,{levelOffset:r})=>({root:{"--level-offset":po(r)}}),Wse=Je((e,r)=>{const n=ze("Tree",cdt,e),{classNames:o,className:a,style:i,styles:s,unstyled:l,vars:c,data:u,expandOnClick:d,tree:h,renderNode:f,selectOnClick:g,clearSelectionOnOutsideClick:b,allowRangeSelection:x,expandOnSpace:w,levelOffset:k,checkOnSpace:C,attributes:_,...T}=n,A=ldt(),R=h||A,D=vt({name:"Tree",classes:qse,props:n,className:a,style:i,classNames:o,styles:s,unstyled:l,attributes:_,vars:c,varsResolver:udt}),N=doe(()=>b&&R.clearSelected()),M=yn(r,N),O=E.useMemo(()=>Use(u),[u]);E.useEffect(()=>{R.initialize(u)},[u]);const F=u.map((L,U)=>y.jsx(ND,{node:L,getStyles:D,rootIndex:U,expandOnClick:d,selectOnClick:g,controller:R,renderNode:f,flatValues:O,allowRangeSelection:x,expandOnSpace:w,checkOnSpace:C},L.value));return y.jsx(Le,{component:"ul",ref:M,...D("root"),...T,role:"tree","aria-multiselectable":R.multiple,"data-tree-root":!0,children:F})});Wse.displayName="@mantine/core/Tree",Wse.classes=qse;var ddt="Invariant failed";function Yk(e,r){if(!e)throw new Error(ddt)}function pdt(e){return typeof e=="function"}function Yse(e,r){return pdt(e)?e(r):e}function hdt(e,r){return r.reduce((n,o)=>(n[o]=e[o],n),{})}function Gse(e,r){if(e===r)return e;const n=r,o=Kse(e)&&Kse(n);if(o||Gk(e)&&Gk(n)){const a=o?e:Object.keys(e),i=a.length,s=o?n:Object.keys(n),l=s.length,c=o?[]:{};let u=0;for(let d=0;d"u")return!0;const n=r.prototype;return!(!Xse(n)||!n.hasOwnProperty("isPrototypeOf"))}function Xse(e){return Object.prototype.toString.call(e)==="[object Object]"}function Kse(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function Zse(e,r){let n=Object.keys(e);return r&&(n=n.filter(o=>e[o]!==void 0)),n}function DD(e,r,n){if(e===r)return!0;if(typeof e!=typeof r)return!1;if(Gk(e)&&Gk(r)){const o=n?.ignoreUndefined??!0,a=Zse(e,o),i=Zse(r,o);return!n?.partial&&a.length!==i.length?!1:i.every(s=>DD(e[s],r[s],n))}return Array.isArray(e)&&Array.isArray(r)?e.length!==r.length?!1:!e.some((o,a)=>!DD(o,r[a],n)):!1}function fdt(e){let r,n;const o=new Promise((a,i)=>{r=a,n=i});return o.status="pending",o.resolve=a=>{o.status="resolved",o.value=a,r(a)},o.reject=a=>{o.status="rejected",n(a)},o}function Xk(e,r){return e?.endsWith("/")&&e!=="/"&&e!==`${r}/`?e.slice(0,-1):e}function mdt(e,r,n){return Xk(e,n)===Xk(r,n)}function Kk(e){return!!e?.isNotFound}const Qse="tsr-scroll-restoration-v1_3";let Jse=!1;try{Jse=typeof window<"u"&&typeof window.sessionStorage=="object"}catch{}Jse&&JSON.parse(window.sessionStorage.getItem(Qse)||"null");const ele=e=>e.state.key||e.href;function gdt(e,r,n,o,a){var i;let s;try{s=JSON.parse(sessionStorage.getItem(e)||"{}")}catch(u){console.error(u);return}const l=r||((i=window.history.state)==null?void 0:i.key),c=s[l];(()=>{if(o&&c){for(const d in c){const h=c[d];if(d==="window")window.scrollTo({top:h.scrollY,left:h.scrollX,behavior:n});else if(d){const f=document.querySelector(d);f&&(f.scrollLeft=h.scrollX,f.scrollTop=h.scrollY)}}return}const u=window.location.hash.split("#")[1];if(u){const d=(window.history.state||{}).__hashScrollIntoViewOptions??!0;if(d){const h=document.getElementById(u);h&&h.scrollIntoView(d)}return}["window",...a?.filter(d=>d!=="window")??[]].forEach(d=>{const h=d==="window"?window:document.querySelector(d);h&&h.scrollTo({top:0,left:0,behavior:n})})})()}const tle="__root__";function ydt(e){return!!e?.isRedirect}function bdt(e){const r=e.resolvedLocation,n=e.location,o=r?.pathname!==n.pathname,a=r?.href!==n.href,i=r?.hash!==n.hash;return{fromLocation:r,toLocation:n,pathChanged:o,hrefChanged:a,hashChanged:i}}const vdt="Error preloading route! ☝️";function rle(e){const r=e.errorComponent??$D;return y.jsx(xdt,{getResetKey:e.getResetKey,onCatch:e.onCatch,children:({error:n,reset:o})=>n?E.createElement(r,{error:n,reset:o}):e.children})}class xdt extends E.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromProps(r){return{resetKey:r.getResetKey()}}static getDerivedStateFromError(r){return{error:r}}reset(){this.setState({error:null})}componentDidUpdate(r,n){n.error&&n.resetKey!==this.state.resetKey&&this.reset()}componentDidCatch(r,n){this.props.onCatch&&this.props.onCatch(r,n)}render(){return this.props.children({error:this.state.resetKey!==this.props.getResetKey()?null:this.state.error,reset:()=>{this.reset()}})}}function $D({error:e}){const[r,n]=E.useState(!1);return y.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[y.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[y.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),y.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>n(o=>!o),children:r?"Hide Error":"Show Error"})]}),y.jsx("div",{style:{height:".25rem"}}),r?y.jsx("div",{children:y.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:e.message?y.jsx("code",{children:e.message}):null})}):null]})}function wdt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var nle={exports:{}},MD={},ole={exports:{}},PD={},ale;function kdt(){if(ale)return PD;ale=1;var e=dn;function r(h,f){return h===f&&(h!==0||1/h===1/f)||h!==h&&f!==f}var n=typeof Object.is=="function"?Object.is:r,o=e.useState,a=e.useEffect,i=e.useLayoutEffect,s=e.useDebugValue;function l(h,f){var g=f(),b=o({inst:{value:g,getSnapshot:f}}),x=b[0].inst,w=b[1];return i(function(){x.value=g,x.getSnapshot=f,c(x)&&w({inst:x})},[h,g,f]),a(function(){return c(x)&&w({inst:x}),h(function(){c(x)&&w({inst:x})})},[h]),s(g),g}function c(h){var f=h.getSnapshot;h=h.value;try{var g=f();return!n(h,g)}catch{return!0}}function u(h,f){return f()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?u:l;return PD.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:d,PD}var ile;function sle(){return ile||(ile=1,ole.exports=kdt()),ole.exports}var lle;function _dt(){if(lle)return MD;lle=1;var e=dn,r=sle();function n(u,d){return u===d&&(u!==0||1/u===1/d)||u!==u&&d!==d}var o=typeof Object.is=="function"?Object.is:n,a=r.useSyncExternalStore,i=e.useRef,s=e.useEffect,l=e.useMemo,c=e.useDebugValue;return MD.useSyncExternalStoreWithSelector=function(u,d,h,f,g){var b=i(null);if(b.current===null){var x={hasValue:!1,value:null};b.current=x}else x=b.current;b=l(function(){function k(R){if(!C){if(C=!0,_=R,R=f(R),g!==void 0&&x.hasValue){var D=x.value;if(g(D,R))return T=D}return T=R}if(D=T,o(_,R))return D;var N=f(R);return g!==void 0&&g(D,N)?(_=R,D):(_=R,T=N)}var C=!1,_,T,A=h===void 0?null:h;return[function(){return k(d())},A===null?void 0:function(){return k(A())}]},[d,h,f,g]);var w=a(u,b[0],b[1]);return s(function(){x.hasValue=!0,x.value=w},[w]),c(w),w},MD}var cle;function Edt(){return cle||(cle=1,nle.exports=_dt()),nle.exports}var ule=Edt();const Sdt=wdt(ule);function Cdt(e,r=n=>n){return ule.useSyncExternalStoreWithSelector(e.subscribe,()=>e.state,()=>e.state,r,Tdt)}function Tdt(e,r){if(Object.is(e,r))return!0;if(typeof e!="object"||e===null||typeof r!="object"||r===null)return!1;if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(const[o,a]of e)if(!r.has(o)||!Object.is(a,r.get(o)))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(const o of e)if(!r.has(o))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(r).length)return!1;for(let o=0;o"u"?zD:window.__TSR_ROUTER_CONTEXT__?window.__TSR_ROUTER_CONTEXT__:(window.__TSR_ROUTER_CONTEXT__=zD,zD)}function dh(e){const r=E.useContext(Adt());return e?.warn,r}function Bs(e){const r=dh({warn:e?.router===void 0}),n=e?.router||r,o=E.useRef(void 0);return Cdt(n.__store,a=>{if(e?.select){if(e.structuralSharing??n.options.defaultStructuralSharing){const i=Gse(o.current,e.select(a));return o.current=i,i}return e.select(a)}return a})}const dle=E.createContext(void 0);E.createContext(void 0);function Rdt(e){const r=Bs({select:n=>`not-found-${n.location.pathname}-${n.status}`});return y.jsx(rle,{getResetKey:()=>r,onCatch:(n,o)=>{var a;if(Kk(n))(a=e.onCatch)==null||a.call(e,n,o);else throw n},errorComponent:({error:n})=>{var o;if(Kk(n))return(o=e.fallback)==null?void 0:o.call(e,n);throw n},children:e.children})}function Ndt(){return y.jsx("p",{children:"Not Found"})}function ID(e){return y.jsx(y.Fragment,{children:e.children})}function ple(e,r,n){return r.options.notFoundComponent?y.jsx(r.options.notFoundComponent,{data:n}):e.options.defaultNotFoundComponent?y.jsx(e.options.defaultNotFoundComponent,{data:n}):y.jsx(Ndt,{})}var OD,hle;function Ddt(){if(hle)return OD;hle=1;const e={},r=e.hasOwnProperty,n=(N,M)=>{for(const O in N)r.call(N,O)&&M(O,N[O])},o=(N,M)=>(M&&n(M,(O,F)=>{N[O]=F}),N),a=(N,M)=>{const O=N.length;let F=-1;for(;++F"\\u"+("0000"+N).slice(-4),s=(N,M)=>{let O=N.toString(16);return M?O:O.toUpperCase()},l=e.toString,c=Array.isArray,u=N=>typeof Buffer=="function"&&Buffer.isBuffer(N),d=N=>l.call(N)=="[object Object]",h=N=>typeof N=="string"||l.call(N)=="[object String]",f=N=>typeof N=="number"||l.call(N)=="[object Number]",g=N=>typeof N=="bigint",b=N=>typeof N=="function",x=N=>l.call(N)=="[object Map]",w=N=>l.call(N)=="[object Set]",k={"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},C=/[\\\b\f\n\r\t]/,_=/[0-9]/,T=/[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,A=/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^]/g,R=/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^ !#-&\(-\[\]-_a-~]/g,D=(N,M)=>{const O=()=>{H=I,++M.indentLevel,I=M.indent.repeat(M.indentLevel)},F={escapeEverything:!1,minimal:!1,isScriptContext:!1,quotes:"single",wrap:!1,es6:!1,json:!1,compact:!0,lowercaseHex:!1,numbers:"decimal",indent:" ",indentLevel:0,__inline1__:!1,__inline2__:!1},L=M&&M.json;L&&(F.quotes="double",F.wrap=!0),M=o(F,M),M.quotes!="single"&&M.quotes!="double"&&M.quotes!="backtick"&&(M.quotes="single");const U=M.quotes=="double"?'"':M.quotes=="backtick"?"`":"'",P=M.compact,V=M.lowercaseHex;let I=M.indent.repeat(M.indentLevel),H="";const q=M.__inline1__,Z=M.__inline2__,W=P?"":` +`;let G,K=!0;const j=M.numbers=="binary",Y=M.numbers=="octal",Q=M.numbers=="decimal",J=M.numbers=="hexadecimal";if(L&&N&&b(N.toJSON)&&(N=N.toJSON()),!h(N)){if(x(N))return N.size==0?"new Map()":(P||(M.__inline1__=!0,M.__inline2__=!1),"new Map("+D(Array.from(N),M)+")");if(w(N))return N.size==0?"new Set()":"new Set("+D(Array.from(N),M)+")";if(u(N))return N.length==0?"Buffer.from([])":"Buffer.from("+D(Array.from(N),M)+")";if(c(N))return G=[],M.wrap=!0,q&&(M.__inline1__=!1,M.__inline2__=!0),Z||O(),a(N,ne=>{K=!1,Z&&(M.__inline2__=!1),G.push((P||Z?"":I)+D(ne,M))}),K?"[]":Z?"["+G.join(", ")+"]":"["+W+G.join(","+W)+W+(P?"":H)+"]";if(f(N)||g(N)){if(L)return JSON.stringify(Number(N));let ne;if(Q)ne=String(N);else if(J){let re=N.toString(16);V||(re=re.toUpperCase()),ne="0x"+re}else j?ne="0b"+N.toString(2):Y&&(ne="0o"+N.toString(8));return g(N)?ne+"n":ne}else return g(N)?L?JSON.stringify(Number(N)):N+"n":d(N)?(G=[],M.wrap=!0,O(),n(N,(ne,re)=>{K=!1,G.push((P?"":I)+D(ne,M)+":"+(P?"":" ")+D(re,M))}),K?"{}":"{"+W+G.join(","+W)+W+(P?"":H)+"}"):L?JSON.stringify(N)||"null":String(N)}const ie=M.escapeEverything?A:R;return G=N.replace(ie,(ne,re,ge,De,he,me)=>{if(re){if(M.minimal)return re;const Ie=re.charCodeAt(0),Ze=re.charCodeAt(1);if(M.es6){const rt=(Ie-55296)*1024+Ze-56320+65536;return"\\u{"+s(rt,V)+"}"}return i(s(Ie,V))+i(s(Ze,V))}if(ge)return i(s(ge.charCodeAt(0),V));if(ne=="\0"&&!L&&!_.test(me.charAt(he+1)))return"\\0";if(De)return De==U||M.escapeEverything?"\\"+De:De;if(C.test(ne))return k[ne];if(M.minimal&&!T.test(ne))return ne;const Te=s(ne.charCodeAt(0),V);return L||Te.length>2?i(Te):"\\x"+("00"+Te).slice(-2)}),U=="`"&&(G=G.replace(/\$\{/g,"\\${")),M.isScriptContext&&(G=G.replace(/<\/(script|style)/gi,"<\\/$1").replace(/